/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġkotlin . time Ċ Ċ /** Ċ Ġ* ĠA Ġsource Ġof Ġtime Ġfor Ġmeas uring Ġtime Ġintervals . Ċ Ġ* Ċ Ġ* ĠThe Ġonly Ġoperation Ġprovided Ġby Ġthe Ġtime Ġsource Ġis Ġ[ mark Now ]. ĠIt Ġreturns Ġa Ġ[ Time Mark ], Ġwhich Ġcan Ġbe Ġused Ġto Ġquery Ġthe Ġelapsed Ġtime Ġlater . Ċ Ġ* Ċ Ġ* Ġ@ see Ġ[ measure Time ] Ċ Ġ* Ġ@ see Ġ[ measure Timed Value ] Ċ Ġ*/ Ċ @ Since Kotlin (" 1 . 3 ") Ċ @ Experimental Time Ċ public Ġinterface ĠTime Source Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġa Ġpoint Ġin Ġtime Ġon Ġthis Ġtime Ġsource . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġ[ Time Mark ] Ġinstance Ġencaps ulates Ġthe Ġcaptured Ġtime Ġpoint Ġand Ġallows Ġquerying ĊĠĠĠĠ Ġ* Ġthe Ġduration Ġof Ġtime Ġinterval Ġ[ elapsed ][ Time Mark . elapsed Now ] Ġfrom Ġthat Ġpoint . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġmark Now (): ĠTime Mark ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmost Ġprecise Ġtime Ġsource Ġavailable Ġin Ġthe Ġplatform . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġtime Ġsource Ġreturns Ġits Ġread ings Ġfrom Ġa Ġsource Ġof Ġmon otonic Ġtime Ġwhen Ġit Ġis Ġavailable Ġin Ġa Ġtarget Ġplatform , ĊĠĠĠĠ Ġ* Ġand Ġres ort s Ġto Ġa Ġnon - mon otonic Ġtime Ġsource Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġobject ĠMon otonic Ġ: ĠTime Source Ġby ĠMon otonic Time Source Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĠMon otonic Time Source . toString () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġtime Ġpoint Ġnot ched Ġon Ġa Ġparticular Ġ[ Time Source ]. ĠRem ains Ġbound Ġto Ġthe Ġtime Ġsource Ġit Ġwas Ġtaken Ġfrom Ċ Ġ* Ġand Ġallows Ġquerying Ġfor Ġthe Ġduration Ġof Ġtime Ġelapsed Ġfrom Ġthat Ġpoint Ġ( see Ġthe Ġfunction Ġ[ elapsed Now ]). Ċ Ġ*/ Ċ @ Since Kotlin (" 1 . 3 ") Ċ @ Experimental Time Ċ public Ġabstract Ġclass ĠTime Mark Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġamount Ġof Ġtime Ġpassed Ġfrom Ġthis Ġmark Ġmeasured Ġwith Ġthe Ġtime Ġsource Ġfrom Ġwhich Ġthis Ġmark Ġwas Ġtaken . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġthe Ġvalue Ġreturned Ġby Ġthis Ġfunction Ġcan Ġchange Ġon Ġsubsequent Ġinv ocations . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġelapsed Now (): ĠDuration ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġtime Ġmark Ġon Ġthe Ġsame Ġtime Ġsource Ġthat Ġis Ġahead Ġof Ġthis Ġtime Ġmark Ġby Ġthe Ġspecified Ġ[ duration ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġtime Ġmark Ġis Ġmore Ġ_ late _ Ġwhen Ġthe Ġ[ duration ] Ġis Ġpositive , Ġand Ġmore Ġ_ early _ Ġwhen Ġthe Ġ[ duration ] Ġis Ġnegative . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġoperator Ġfun Ġplus ( duration : ĠDuration ): ĠTime Mark Ġ= ĠAdjust ed Time Mark ( this , Ġduration ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġtime Ġmark Ġon Ġthe Ġsame Ġtime Ġsource Ġthat Ġis Ġbehind Ġthis Ġtime Ġmark Ġby Ġthe Ġspecified Ġ[ duration ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġtime Ġmark Ġis Ġmore Ġ_ early _ Ġwhen Ġthe Ġ[ duration ] Ġis Ġpositive , Ġand Ġmore Ġ_ late _ Ġwhen Ġthe Ġ[ duration ] Ġis Ġnegative . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġoperator Ġfun Ġminus ( duration : ĠDuration ): ĠTime Mark Ġ= Ġplus (- duration ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthis Ġtime Ġmark Ġhas Ġpassed Ġaccording Ġto Ġthe Ġtime Ġsource Ġfrom Ġwhich Ġthis Ġmark Ġwas Ġtaken . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġthe Ġvalue Ġreturned Ġby Ġthis Ġfunction Ġcan Ġchange Ġon Ġsubsequent Ġinv ocations . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġtime Ġsource Ġis Ġmon otonic , Ġit Ġcan Ġchange Ġonly Ġfrom Ġ` false ` Ġto Ġ` true `, Ġname ly , Ġwhen Ġthe Ġtime Ġmark Ġbecomes Ġbehind Ġthe Ġcurrent Ġpoint Ġof Ġthe Ġtime Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġhas Passed Now (): ĠBoolean Ġ= Ġ! elapsed Now (). is Negative () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġfalse Ġif Ġthis Ġtime Ġmark Ġhas Ġnot Ġpassed Ġaccording Ġto Ġthe Ġtime Ġsource Ġfrom Ġwhich Ġthis Ġmark Ġwas Ġtaken . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġthe Ġvalue Ġreturned Ġby Ġthis Ġfunction Ġcan Ġchange Ġon Ġsubsequent Ġinv ocations . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġtime Ġsource Ġis Ġmon otonic , Ġit Ġcan Ġchange Ġonly Ġfrom Ġ` true ` Ġto Ġ` false `, Ġname ly , Ġwhen Ġthe Ġtime Ġmark Ġbecomes Ġbehind Ġthe Ġcurrent Ġpoint Ġof Ġthe Ġtime Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġhas Not Passed Now (): ĠBoolean Ġ= Ġelapsed Now (). is Negative () Ċ } ĊĊ Ċ @ Experimental Time Ċ @ Since Kotlin (" 1 . 3 ") Ċ @ kotlin . internal . Inline Only Ċ @ Deprecated ( ĊĠĠĠ Ġ" Subtract ing Ġone ĠTime Mark Ġfrom Ġanother Ġis Ġnot Ġa Ġwell Ġdefined Ġoperation Ġbecause Ġthese Ġtime Ġmarks Ġcould Ġhave Ġbeen Ġobtained Ġfrom Ġthe Ġdifferent Ġtime Ġsources .", ĊĠĠĠ Ġlevel Ġ= ĠDeprec ation Level . ERROR Ċ ) Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ public Ġinline Ġoperator Ġfun ĠTime Mark . minus ( other : ĠTime Mark ): ĠDuration Ġ= Ġthrow ĠError (" Operation Ġis Ġdis allowed .") Ċ Ċ @ Experimental Time Ċ @ Since Kotlin (" 1 . 3 ") Ċ @ kotlin . internal . Inline Only Ċ @ Deprecated ( ĊĠĠĠ Ġ" Comp aring Ġone ĠTime Mark Ġto Ġanother Ġis Ġnot Ġa Ġwell Ġdefined Ġoperation Ġbecause Ġthese Ġtime Ġmarks Ġcould Ġhave Ġbeen Ġobtained Ġfrom Ġthe Ġdifferent Ġtime Ġsources .", ĊĠĠĠ Ġlevel Ġ= ĠDeprec ation Level . ERROR Ċ ) Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ public Ġinline Ġoperator Ġfun ĠTime Mark . compareTo ( other : ĠTime Mark ): ĠInt Ġ= Ġthrow ĠError (" Operation Ġis Ġdis allowed .") ĊĊ Ċ @ Experimental Time Ċ private Ġclass ĠAdjust ed Time Mark ( val Ġmark : ĠTime Mark , Ġval Ġadjustment : ĠDuration ) Ġ: ĠTime Mark () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġelapsed Now (): ĠDuration Ġ= Ġmark . elapsed Now () Ġ- Ġadjustment ĊĊĠĠĠ Ġoverride Ġfun Ġplus ( duration : ĠDuration ): ĠTime Mark Ġ= ĠAdjust ed Time Mark ( mark , Ġadjustment Ġ+ Ġduration ) Ċ } Ċ