package Ġcom . m ichael fl is ar . l umber jack Ċ Ċ import Ġtim ber . log . Base Tree Ċ import Ġtim ber . log . Tim ber Ċ Ċ /* Ċ logs ĠL AZ IL Y Ġand Ġat Ġthe Ġcall ers Ġplace Ġvia Ġkotlin Ġinline Ġfunctions Ċ Ġ*/ Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ object ĠL Ġ{ ĊĊĠĠĠ Ġ// Ġ-------------- ĊĠĠĠ Ġ// Ġsetup ĊĠĠĠ Ġ// Ġpublic Ġfields Ġbecause Ġfields Ġare Ġaccessed Ġin Ġinline Ġfunctions ĊĠĠĠ Ġ// Ġ-------------- ĊĊĠĠĠ Ġvar Ġenabled Ġ= Ġtrue ĊĊĠĠĠ Ġ// Ġ-------------- ĊĠĠĠ Ġ// Ġspecial Ġfunctions ĊĠĠĠ Ġ// Ġ-------------- ĊĊĠĠĠ Ġfun Ġlog If ( block : Ġ() Ġ-> ĠBoolean ): ĠL ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( block ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠL ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtag ( tag : ĠString ): ĠL Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . tag ( tag ) ĊĠĠĠĠĠĠĠ Ġreturn ĠL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcall Stack Correction ( value : ĠInt ): ĠL Ġ{ ĊĠĠĠĠĠĠĠ Ġset Call Stack Correction ( value ) ĊĠĠĠĠĠĠĠ Ġreturn ĠL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------- ĊĠĠĠ Ġ// Ġlog Ġfunctions Ġ- Ġlazy ĊĠĠĠ Ġ// Ġ-------------- ĊĊĠĠĠ Ġinline Ġfun Ġv ( t : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . v ( t , Ġmessage ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġv ( t : ĠThrowable ?) Ġ= Ġlog Ġ{ ĠTim ber . v ( t ) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġv ( message : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . v ( message ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġd ( t : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . d ( t , Ġmessage ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġd ( t : ĠThrowable ?) Ġ= Ġlog Ġ{ ĠTim ber . d ( t ) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġd ( message : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . d ( message ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġi ( t : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . i ( t , Ġmessage ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġi ( t : ĠThrowable ?) Ġ= Ġlog Ġ{ ĠTim ber . i ( t ) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġi ( message : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . i ( message ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġw ( t : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . w ( t , Ġmessage ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġw ( t : ĠThrowable ?) Ġ= Ġlog Ġ{ ĠTim ber . w ( t ) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġw ( message : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . w ( message ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġe ( t : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . e ( t , Ġmessage ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġe ( t : ĠThrowable ?) Ġ= Ġlog Ġ{ ĠTim ber . e ( t ) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġe ( message : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . e ( message ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġw tf ( t : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . w tf ( t , Ġmessage ()) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġw tf ( t : ĠThrowable ?) Ġ= Ġlog Ġ{ ĠTim ber . w tf ( t ) Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġw tf ( message : Ġ() Ġ-> ĠString ) Ġ= Ġlog Ġ{ ĠTim ber . w tf ( message ()) Ġ} ĊĊĠĠĠ Ġ// Ġ-------------- ĊĠĠĠ Ġ// Ġtim ber Ġforward Ġfunctions ĊĠĠĠ Ġ// Ġ-------------- ĊĊĠĠĠ Ġinline Ġfun Ġas Tree (): ĠTim ber . Tree Ġ= ĠTim ber . as Tree () ĊĊĠĠĠ Ġinline Ġfun Ġplant ( tree : ĠTim ber . Tree ) Ġ= ĠTim ber . plant ( tree ) ĊĊĠĠĠ Ġinline Ġfun Ġup root ( tree : ĠTim ber . Tree ) Ġ= ĠTim ber . up root ( tree ) ĊĊĠĠĠ Ġinline Ġfun Ġup root All () Ġ= ĠTim ber . up root All () ĊĊĠĠĠ Ġ// Ġ-------------- ĊĠĠĠ Ġ// Ġhelper Ġfunction ĊĠĠĠ Ġ// Ġ-------------- ĊĊĠĠĠ Ġ/** Ġ@ suppress Ġ*/ ĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġinline Ġfun Ġlog ( log Block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( enabled Ġ&& ĠTim ber . tree Count () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Block () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Call Stack Correction ( correction : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġforest Ġ= ĠTim ber . forest () ĊĠĠĠĠĠĠĠ Ġfor Ġ( tree Ġin Ġforest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tree Ġis ĠBase Tree ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtree . set Call Stack Correction ( correction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }