/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAnt on ĠTr ush kov Ċ Ġ* Ċ Ġ* ĠLicensed Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 Ġapp . the le ma . json Ċ Ċ import Ġglfw .* Ċ import Ġkotlinx . c interop . CP o inter Ċ import Ġkotlinx . c interop . to K String Ċ import Ġkotlinx . c interop . interpret CP o inter Ċ Ċ class ĠNative JsonArray ( val Ġjson Array : ĠC Pointer < JSON _ Array >): ĠI JsonArray Ġ{ ĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġjson _ array _ get _ count ( json Array ). toInt () ĊĊĠĠĠ Ġoverride Ġval Ġsource Object : ĠAny ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġjson Array ĊĊĠĠĠ Ġoverride Ġfun Ġprint Json (): ĠString Ġ= Ġjson _ serialize _ to _ string _ pretty ( interpret CP o inter ( json Array . raw Value )) !!. to K String () ĊĊĠĠĠ Ġoverride Ġfun Ġobj ( index : ĠInt ): ĠI JsonObject Ġ= ĠNative JsonObject ( json _ array _ get _ object ( json Array , Ġindex . to UL ong ()) !! ) ĊĊĠĠĠ Ġoverride Ġfun Ġarray ( index : ĠInt ): ĠI JsonArray Ġ= ĠNative JsonArray ( json _ array _ get _ array ( json Array , Ġindex . to UL ong ()) !! ) ĊĊĠĠĠ Ġoverride Ġfun Ġstring ( index : ĠInt ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġjson _ array _ get _ string ( json Array , Ġindex . to UL ong ()) !!. to K String () ĊĊĠĠĠ Ġoverride Ġfun Ġfloat ( index : ĠInt ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠ Ġjson _ array _ get _ number ( json Array , Ġindex . to UL ong ()). toFloat () ĊĊĠĠĠ Ġoverride Ġfun Ġint ( index : ĠInt ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġjson _ array _ get _ number ( json Array , Ġindex . to UL ong ()). toInt () ĊĊĠĠĠ Ġoverride Ġfun Ġbool ( index : ĠInt ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġjson _ array _ get _ boolean ( json Array , Ġindex . to UL ong ()) Ġ== Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ boolean ( json Array , Ġif Ġ( value ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ number ( json Array , Ġvalue . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ number ( json Array , Ġvalue . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ string ( json Array , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠforEach Int ( block : Ġ( value : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( json _ array _ get _ number ( json Array , Ġi . to UL ong ()). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠforEach String ( block : Ġ( value : ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( json _ array _ get _ string ( json Array , Ġi . to UL ong ()) !!. to K String ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠforEach Bool ( block : Ġ( value : ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( json _ array _ get _ boolean ( json Array , Ġi . to UL ong ()) Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠforEach Float ( block : Ġ( value : ĠFloat ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( json _ array _ get _ number ( json Array , Ġi . to UL ong ()). toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠforEach Object ( block : ĠI JsonObject . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( Native JsonObject ( json _ array _ get _ object ( json Array , Ġi . to UL ong ()) !! )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠforEach Array ( block : ĠI JsonArray . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( Native JsonArray ( json _ array _ get _ array ( json Array , Ġi . to UL ong ()) !! )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( obj : ĠI JsonObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobj Ġas ĠNative JsonObject ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ value ( json Array , Ġinterpret CP o inter ( obj . json Obj . raw Value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( array : ĠI JsonArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray Ġas ĠNative JsonArray ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ value ( json Array , Ġinterpret CP o inter ( array . json Array . raw Value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠI JsonObject IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Value Ġ= Ġjson _ value _ init _ array () ĊĠĠĠĠĠĠĠ ĠNative JsonObject ( json _ object ( json Value ) !! ). apply Ġ{ Ġvalue . read Json ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ value ( json Array , Ġjson Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠI JsonArray IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Value Ġ= Ġjson _ value _ init _ array () ĊĠĠĠĠĠĠĠ ĠNative JsonArray ( json _ array ( json Value ) !! ). apply Ġ{ Ġvalue . read Json ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ value ( json Array , Ġjson Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Obj ( new Child Context : ĠI JsonObject . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Value Ġ= Ġjson _ value _ init _ array () ĊĠĠĠĠĠĠĠ ĠNative JsonObject ( json _ object ( json Value ) !! ). apply ( new Child Context ) ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ value ( json Array , Ġjson Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Array ( new Child Context : ĠI JsonArray . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Value Ġ= Ġjson _ value _ init _ array () ĊĠĠĠĠĠĠĠ ĠNative JsonArray ( json _ array ( json Value ) !! ). apply ( new Child Context ) ĊĠĠĠĠĠĠĠ Ġjson _ array _ append _ value ( json Array , Ġjson Value ) ĊĠĠĠ Ġ} Ċ }