/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġhas Ġbeen Ġmodified Ġby ĠJetBrains Ġ: ĠJava Ġcode Ġhas Ġbeen Ġconverted Ġto ĠKotlin Ġcode . Ċ Ġ* Ċ Ġ* ĠTHE ĠFOL LOW ING ĠIS ĠTHE ĠCOPYRIGHT ĠOF ĠTHE ĠOR IGIN AL ĠDOCUMENT : Ċ Ġ* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ġor Ġmore Ċ Ġ* Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ġdistributed Ġwith Ċ Ġ* Ġthis Ġwork Ġfor Ġadditional Ġinformation Ġregarding Ġcopyright Ġownership . Ċ Ġ* ĠThe ĠASF Ġlicenses Ġthis Ġfile Ġto ĠYou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ċ Ġ* Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ċ Ġ* Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġjet brains . datal ore . plot . base . stat . math 3 Ċ Ċ import Ġjet brains . datal ore . plot . base . stat . math 3 . Increment or . Max Count Exceeded Callback Ċ import Ġkotlin . jvm . Jvm Over loads ĊĊ Ċ /** Ċ Ġ* ĠUtility Ġthat Ġincre ments Ġa Ġcounter Ġuntil Ġa Ġmaximum Ġis Ġreached , Ġat Ċ Ġ* Ġwhich Ġpoint , Ġthe Ġinstance Ġwill Ġby Ġdefault Ġthrow Ġa Ċ Ġ* Ġ[ Max Count Exceeded Exception ]. Ċ Ġ* ĠHowever , Ġthe Ġuser Ġis Ġable Ġto Ġoverride Ġthis Ġbehaviour Ġby Ġdefining Ġa Ċ Ġ* Ġcustom Ġ[ callback ][ Max Count Exceeded Callback ], Ġin Ġorder Ġto Ġe . g . Ċ Ġ* Ġselect Ġwhich Ġexception Ġmust Ġbe Ġthrown . Ċ Ġ* Ċ Ġ* Ġ@ version Ġ$ Id $ Ċ Ġ* Ġ@ since Ġ 3 . 0 Ċ Ġ*/ Ċ class ĠIncrement or Ċ /** Ċ Ġ* ĠDefines Ġa Ġmax imal Ġcount Ġand Ġa Ġcallback Ġmethod Ġto Ġbe Ġtriggered Ġat Ċ Ġ* Ġcounter Ġex haust ion . Ċ Ġ* Ċ Ġ* Ġ@ param Ġmax ĠMax imal Ġcount . Ċ Ġ* Ġ@ param Ġcb ĠFunction Ġto Ġbe Ġcalled Ġwhen Ġthe Ġmax imal Ġcount Ġhas Ġbeen Ġreached . Ċ Ġ*/ Ċ @ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpper Ġlimit Ġfor Ġthe Ġcounter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġupper Ġlimit Ġof Ġthe Ġcounter . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcounter Ġupper Ġlimit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġupper Ġlimit Ġfor Ġthe Ġcounter . ĊĠĠĠĠ Ġ* ĠThis Ġdoes Ġnot Ġautomatically Ġreset Ġthe Ġcurrent Ġcount Ġto Ġzero Ġ( see ĊĠĠĠĠ Ġ* Ġ[. reset Count ]). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmax ĠUpper Ġlimit Ġof Ġthe Ġcounter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmax imal Count : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction Ġcalled Ġat Ġcounter Ġex haust ion . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġmax Count Callback : ĠMax Count Exceeded Callback Ġ= Ġobject Ġ: ĠMax Count Exceeded Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** Ġ{@ inheritDoc } Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtrigger ( max imal Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Max Count Exceeded : Ġ$ max imal Count ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCurrent Ġcount . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġcurrent Ġcount . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġcount . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġwhether Ġa Ġsingle Ġincrement Ġis Ġallowed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` false ` Ġif Ġthe Ġnext Ġcall Ġto Ġ[ Ġincrement Count ][. increment Count ] Ġwill Ġtrigger Ġa Ġ` Max Count Exceeded Exception `, ĊĠĠĠĠ Ġ* Ġ` true ` Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcan Increment (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcount Ġ< Ġmax imal Count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerforms Ġmultiple Ġincre ments . ĊĠĠĠĠ Ġ* ĠSee Ġthe Ġother Ġ[ increment Count ][. increment Count ] Ġmethod ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠNumber Ġof Ġincre ments . ĊĠĠĠĠ Ġ* Ġ@ throws ĠMax Count Exceeded Exception Ġat Ġcounter Ġex haust ion . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrement Count ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincrement Count () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġone Ġto Ġthe Ġcurrent Ġiteration Ġcount . ĊĠĠĠĠ Ġ* ĠAt Ġcounter Ġex haust ion , Ġthis Ġmethod Ġwill Ġcall Ġthe ĊĠĠĠĠ Ġ* Ġ[ trigger ][ Max Count Exceeded Callback . trigger ] Ġmethod Ġof Ġthe ĊĠĠĠĠ Ġ* Ġcallback Ġobject Ġpassed Ġto Ġthe ĊĠĠĠĠ Ġ* Ġ[ constructor ][. Increment or ]. ĊĠĠĠĠ Ġ* ĠIf Ġnot Ġexp lict ly Ġset , Ġa Ġdefault Ġcallback Ġis Ġused Ġthat Ġwill Ġthrow ĊĠĠĠĠ Ġ* Ġa Ġ` Max Count Exceeded Exception `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠMax Count Exceeded Exception Ġat Ġcounter Ġex haust ion , Ġunless Ġa ĊĠĠĠĠ Ġ* Ġcustom Ġ[ callback ][ Max Count Exceeded Callback ] Ġhas Ġbeen Ġset Ġat ĊĠĠĠĠ Ġ* Ġconstruction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrement Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(++ count Ġ> Ġmax imal Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Count Callback . trigger ( max imal Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe sets Ġthe Ġcounter Ġto Ġ 0 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġa Ġmethod Ġto Ġbe Ġcalled Ġat Ġcounter Ġex haust ion . ĊĠĠĠĠ Ġ* ĠThe Ġ[ trigger ][. trigger ] Ġmethod Ġshould Ġusually Ġthrow Ġan Ġexception . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠMax Count Exceeded Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠFunction Ġcalled Ġwhen Ġthe Ġmax imal Ġcount Ġhas Ġbeen Ġreached . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmax imal Count ĠMax imal Ġcount . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġtrigger ( max imal Count : ĠInt ) ĊĠĠĠ Ġ} Ċ } Ċ /** Ċ Ġ* ĠDefault Ġconstructor . Ċ Ġ* ĠFor Ġthe Ġnew Ġinstance Ġto Ġbe Ġuseful , Ġthe Ġmax imal Ġcount Ġmust Ġbe Ġset Ċ Ġ* Ġby Ġcalling Ġ[ setMax imal Count ][. setMax imal Count ]. Ċ Ġ*/ Ċ /** Ċ Ġ* ĠDefines Ġa Ġmax imal Ġcount . Ċ Ġ* Ċ Ġ* Ġ@ param Ġmax ĠMax imal Ġcount . Ċ Ġ*/ Ċ