package Ġkotlinx . io Ċ Ċ import Ġkotlinx . io . buffer .* Ċ Ċ /** Ċ Ġ* ĠOutput Ġwhich Ġuses Ġa Ġbyte Ġarray Ġas Ġits Ġdata Ġstorage . Ċ Ġ* ĠByte Ġarray Ġautomatically Ġg rows Ġas Ġdata Ġis Ġwritten Ġto Ġit Ġand Ċ Ġ* Ġcan Ġbe Ġaccessed Ġwith Ġ[ toByteArray ]. Ċ Ġ* ĠThe Ġinitial Ġcapacity Ġof Ġthe Ġunderlying Ġarray Ġcan Ġbe Ġspecified Ġwith Ġ[ initial Capacity ] Ġparameter . Ċ Ġ* Ċ Ġ* ĠCalling Ġ[ close ][ Output . close ] Ġon Ġthis Ġclass Ġhas Ġno Ġeffect . Ċ Ġ*/ Ċ public Ġclass ĠByteArray Output ( initial Capacity : ĠInt Ġ= Ġ 1 6 ) Ġ: ĠOutput ( Unmanaged Buffer Pool . Instance ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( initial Capacity Ġ> Ġ 0 ) Ġ{ Ġ" Initial Ġcapacity Ġshould Ġbe Ġgreater Ġthan Ġ 0 , Ġbut Ġhas Ġ$ initial Capacity " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġarray : ĠByteArray Ġ= ĠByteArray ( initial Capacity ) ĊĠĠĠ Ġprivate Ġvar Ġsize Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġcopy Ġof Ġall Ġbytes Ġthat Ġwere Ġwritten Ġto Ġthe Ġcurrent Ġoutput . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġto ByteArray (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġflush () ĊĠĠĠĠĠĠĠ Ġreturn Ġarray . copyOf ( size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ@ suppress Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġflush ( source : ĠBuffer , ĠstartIndex : ĠInt , Ġend Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġensure Capacity ( end Index Ġ- ĠstartIndex ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠstartIndex Ġuntil Ġend Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray [ size Ġ+ Ġi ] Ġ= Ġsource [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsize Ġ+= Ġend Index ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ@ suppress Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġclose Source () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNothing Ġby Ġdefault ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġensure Capacity ( length : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( array . size Ġ< Ġsize Ġ+ Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Capacity Ġ= Ġsize Ġ+ Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpow Of 2 Ġ= Ġpow Of 2 ( min Capacity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray Ġ= Ġarray . copyOf ( pow Of 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Use Experimental ( Experimental Std lib Api :: class ) ĊĠĠĠ Ġprivate Ġfun Ġpow Of 2 ( min Capacity : ĠInt ) Ġ= Ġif Ġ( min Capacity Ġ>= Ġ 1 Ġshl Ġ 3 0 ) Ġmin Capacity Ġelse Ġ( 1 Ġshl Ġ( 3 2 Ġ- Ġ( min Capacity Ġ- Ġ 1 ). count Leading Zero Bits ())) Ċ } Ċ