package Ġkotlinx . serialization . csv . decode Ċ Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . csv . Csv Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . descriptors . Structure Kind Ċ import Ġkotlinx . serialization . encoding . Composite Decoder Ċ import Ġkotlinx . serialization . encoding . Composite Decoder . Companion . DECODE _ DONE Ċ Ċ /** Ċ Ġ* ĠInitial Ġentry Ġpoint Ġfor Ġdecoding . Ċ Ġ* Ċ Ġ* ĠThis Ġroot Ġdecoder Ġhandles Ġthe Ġcase Ġthat Ġthe Ġfirst Ġlevel Ġis Ġa Ġlist Ċ Ġ* Ġ( which Ġis Ġinterpreted Ġas Ġmultiple ĠCSV Ġrecords / lines ). ĠIf Ġthis Ġis Ġthe Ġcase , Ġdecoding Ġcontinues Ġin Ċ Ġ* Ġ[ Record List Csv Decoder ]. Ċ Ġ*/ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ internal Ġclass ĠRoot Csv Decoder ( ĊĠĠĠ Ġcsv : ĠCsv , ĊĠĠĠ Ġreader : ĠCsv Reader Ċ ) Ġ: ĠCsv Decoder ( csv , Ġreader , Ġnull ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġposition Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġdecode Element Index ( descriptor : ĠSerial Descriptor ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( reader . is Done ) ĠDE CODE _ DONE Ġelse Ġposition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbegin Structure ( descriptor : ĠSerial Descriptor ): ĠComposite Decoder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( descriptor . kind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStructure Kind . LIST Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTop Ġlevel Ġlist Ġis Ġtreated Ġas Ġlist Ġof Ġmultiple Ġrecords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecord List Csv Decoder ( csv , Ġreader ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTop Ġlevel Ġis Ġtreated Ġas Ġone Ġsingle Ġrecord ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Headers ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . begin Structure ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend Child Structure ( descriptor : ĠSerial Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . end Child Structure ( descriptor ) ĊĠĠĠĠĠĠĠ Ġread Trailing Delimiter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecode Column (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsuper . decode Column () ĊĠĠĠĠĠĠĠ Ġposition ++ ĊĠĠĠĠĠĠĠ Ġread Trailing Delimiter () ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ