package Ġkotlin Ċ Ċ external Ġfun Ġkotlin c lib _ long _ array _ get _ ix ( data Raw Ptr : ĠInt , Ġindex : ĠInt ): ĠLong Ċ external Ġfun Ġkotlin c lib _ long _ array _ set _ ix ( data Raw Ptr : ĠInt , Ġindex : ĠInt , Ġvalue : ĠLong ) Ċ external Ġfun Ġkotlin c lib _ long _ size (): ĠInt ĊĊ Ċ class ĠLong Array ( var Ġsize : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġdata Raw Ptr : ĠInt ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġnumber Ġof Ġelements Ġin Ġthe Ġarray . Ġ*/ ĊĠĠĠ Ġ// size : ĠInt ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Raw Ptr Ġ= Ġmalloc _ array ( kotlin c lib _ long _ size () Ġ* Ġthis . size ) ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ< Ġthis . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( index , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġarray Ġelement Ġat Ġthe Ġgiven Ġ[ index ]. ĠThis Ġmethod Ġcan Ġbe Ġcalled Ġusing Ġthe Ġindex Ġoperator . Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkotlin c lib _ long _ array _ get _ ix ( this . data Raw Ptr , Ġindex ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġelement Ġat Ġthe Ġgiven Ġ[ index ] Ġto Ġthe Ġgiven Ġ[ value ]. ĠThis Ġmethod Ġcan Ġbe Ġcalled Ġusing Ġthe Ġindex Ġoperator . Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġset ( index : ĠInt , Ġvalue : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin c lib _ long _ array _ set _ ix ( this . data Raw Ptr , Ġindex , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġclone (): ĠLong Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Instance Ġ= ĠLong Array ( this . size ) ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ< Ġthis . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġthis . get ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Instance . set ( index , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Instance ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠLong Array . print () Ġ{ ĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġprint ('[ ') ĊĠĠĠ Ġwhile Ġ( index Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint ( get ( index )) ĊĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (' ; ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (' Ġ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprint (' ]') Ċ } Ċ Ċ fun ĠLong Array . println () Ġ{ ĊĠĠĠ Ġthis . print () ĊĠĠĠ Ġ// println () Ċ } Ċ Ċ fun ĠLong Array . copyOf ( new Size : ĠInt ): ĠLong Array Ġ{ ĊĠĠĠ Ġval Ġnew Instance Ġ= ĠLong Array ( new Size ) ĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġval Ġend Ġ= Ġif Ġ( new Size Ġ> Ġthis . size ) Ġthis . size Ġelse Ġnew Size ĊĠĠĠ Ġwhile Ġ( index Ġ< Ġend ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġthis . get ( index ) ĊĠĠĠĠĠĠĠ Ġnew Instance . set ( index , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwhile Ġ( index Ġ< Ġnew Size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Instance . set ( index , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnew Instance Ċ } Ċ Ċ fun ĠLong Array . copyOf Range ( from Index : ĠInt , Ġto Index : ĠInt ): ĠLong Array Ġ{ ĊĠĠĠ Ġval Ġnew Instance Ġ= ĠLong Array ( to Index Ġ- Ġfrom Index ) ĊĠĠĠ Ġvar Ġindex Ġ= Ġfrom Index ĊĠĠĠ Ġwhile Ġ( index Ġ< Ġto Index ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġthis . get ( index ) ĊĠĠĠĠĠĠĠ Ġnew Instance . set ( index Ġ- Ġfrom Index , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnew Instance Ċ } Ċ Ċ operator Ġfun ĠLong Array . plus ( element : ĠLong ): ĠLong Array Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= Ġsize ĊĠĠĠ Ġval Ġresult Ġ= Ġthis . copyOf ( index Ġ+ Ġ 1 ) ĊĠĠĠ Ġresult [ index ] Ġ= Ġelement ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ operator Ġfun ĠLong Array . plus ( elements : ĠLong Array ): ĠLong Array Ġ{ ĊĠĠĠ Ġval Ġthis Size Ġ= Ġsize ĊĠĠĠ Ġval Ġarray Size Ġ= Ġelements . size ĊĠĠĠ Ġval Ġresult Size Ġ= Ġthis Size Ġ+ Ġarray Size ĊĠĠĠ Ġval Ġnew Instance Ġ= Ġthis . copyOf ( result Size ) ĊĠĠĠ Ġvar Ġindex Ġ= Ġthis Size ĊĊĠĠĠ Ġwhile Ġ( index Ġ< Ġresult Size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġelements . get ( index Ġ- Ġthis Size ) ĊĠĠĠĠĠĠĠ Ġnew Instance . set ( index , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnew Instance Ċ }