package Ġio . ktor . utils . io . core Ċ Ċ import Ġio . ktor . utils . io . bits .* Ċ import Ġio . ktor . utils . io . core . internal .* Ċ import Ġio . ktor . utils . io . pool .* Ċ import Ġkotlinx . c interop .* Ċ import Ġplatform . posix .* Ċ import Ġkotlin . contracts .* Ċ import Ġkotlin . native . concurrent .* Ċ Ċ @ Opt In ( Unsafe Number :: class ) Ċ @ Published Api Ċ internal Ġval ĠMAX _ SIZE : Ġsize _ t Ġ= Ġsize _ t . MAX _ VALUE Ċ Ċ public Ġfun ĠChunk Buffer ( ptr : ĠC Pointer <* >, Ġlength InBytes : ĠInt , Ġorigin : ĠChunk Buffer ?): ĠChunk Buffer Ġ{ ĊĠĠĠ Ġreturn ĠChunk Buffer ( Memory . of ( ptr , Ġlength InBytes ), Ġorigin , Ġnull ) Ċ } Ċ Ċ public Ġfun ĠChunk Buffer ( ptr : ĠC Pointer <* >, Ġlength InBytes : ĠLong , Ġorigin : ĠChunk Buffer ?): ĠChunk Buffer Ġ{ ĊĠĠĠ Ġreturn ĠChunk Buffer ( Memory . of ( ptr , Ġlength InBytes ), Ġorigin , Ġnull ) Ċ } Ċ Ċ public Ġfun ĠBuffer . read Fully ( pointer : ĠC Pointer < Byte Var >, Ġoffset : ĠInt , Ġlength : ĠInt ) Ġ{ ĊĠĠĠ Ġread Fully ( pointer , Ġoffset . to Long (), Ġlength ) Ċ } Ċ Ċ public Ġfun ĠBuffer . read Fully ( pointer : ĠC Pointer < Byte Var >, Ġoffset : ĠLong , Ġlength : ĠInt ) Ġ{ ĊĠĠĠ Ġrequire Positive Index ( offset , Ġ" offset ") ĊĠĠĠ Ġrequire Positive Index ( length , Ġ" length ") ĊĠĠĠ Ġread Exact ( length , Ġ" content ") Ġ{ Ġmemory , Ġstart Ġ-> ĊĠĠĠĠĠĠĠ Ġmemory . copy To ( pointer , Ġstart . to Long (), Ġlength . to Long (), Ġoffset ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġfun ĠBuffer . read Available ( pointer : ĠC Pointer < Byte Var >, Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġread Available ( pointer , Ġoffset . to Long (), Ġlength ) Ċ } Ċ Ċ public Ġfun ĠBuffer . read Available ( pointer : ĠC Pointer < Byte Var >, Ġoffset : ĠLong , Ġlength : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġavailable Ġ= Ġread Remaining ĊĠĠĠ Ġif Ġ( available Ġ== Ġ 0 ) Ġreturn Ġ- 1 ĊĠĠĠ Ġval Ġresult Size Ġ= Ġmin Of ( available , Ġlength ) ĊĠĠĠ Ġread Fully ( pointer , Ġoffset , Ġresult Size ) ĊĠĠĠ Ġreturn Ġresult Size Ċ } Ċ Ċ public Ġfun ĠBuffer . write Fully ( pointer : ĠC Pointer < Byte Var >, Ġoffset : ĠInt , Ġlength : ĠInt ) Ġ{ ĊĠĠĠ Ġrequire Positive Index ( offset , Ġ" offset ") ĊĠĠĠ Ġrequire Positive Index ( length , Ġ" length ") ĊĊĠĠĠ Ġwrite Exact ( length , Ġ" content ") Ġ{ Ġmemory , Ġstart Ġ-> ĊĠĠĠĠĠĠĠ Ġpointer . copy To ( memory , Ġoffset , Ġlength , Ġstart ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġfun ĠBuffer . write Fully ( pointer : ĠC Pointer < Byte Var >, Ġoffset : ĠLong , Ġlength : ĠInt ) Ġ{ ĊĠĠĠ Ġrequire Positive Index ( offset , Ġ" offset ") ĊĠĠĠ Ġrequire Positive Index ( length , Ġ" length ") ĊĊĠĠĠ Ġwrite Exact ( length , Ġ" content ") Ġ{ Ġmemory , Ġstart Ġ-> ĊĠĠĠĠĠĠĠ Ġpointer . copy To ( memory , Ġoffset , Ġlength . to Long (), Ġstart . to Long ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun ĠBuffer . read Direct ( block : Ġ( CP o inter < Byte Var >) Ġ-> ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġcalls In Place ( block , ĠInvocation Kind . EX ACT LY _ ON CE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġread Ġ{ Ġmemory , Ġstart , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġblock ( memory . pointer . plus ( start ) !! ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun ĠBuffer . write Direct ( block : Ġ( CP o inter < Byte Var >) Ġ-> ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġcalls In Place ( block , ĠInvocation Kind . EX ACT LY _ ON CE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġwrite Ġ{ Ġmemory , Ġstart , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġblock ( memory . pointer . plus ( start ) !! ) ĊĠĠĠ Ġ} Ċ } Ċ