/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC . Ċ Ġ* Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ċ Ġ* Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ package Ġar cs . android . util Ċ Ċ import Ġandroid . os . Parcel Ċ import Ġcom . google . protobuf . CodedOutputStream Ċ import Ġcom . google . protobuf . Message Lite Ċ Ċ /** ĠWrites Ġthe Ġgiven Ġ[ proto ] Ġto Ġthe Ġ[ Parcel ] Ġas Ġbytes . Ġ*/ Ċ fun ĠParcel . write Proto ( proto : ĠMessage Lite ?) Ġ{ ĊĠ Ġif Ġ( proto Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġwrite Int ( NULL _ MARKER ) ĊĠĠĠ Ġreturn ĊĠ Ġ} ĊĠ Ġval Ġbytes Ġ= ĠByteArray ( proto . serialized Size ) ĊĠ Ġproto . writeTo ( CodedOutputStream . newInstance ( bytes )) ĊĠ Ġwrite Int ( bytes . size ) ĊĠ Ġwrite ByteArray ( bytes ) Ċ } Ċ Ċ /** Ċ Ġ* ĠReads Ġa Ġproto Ġof Ġthe Ġgiven Ġtype Ġfrom Ġthe Ġ[ Parcel ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġdefault Instance Ġthe Ġdefault Ġinstance Ġof Ġthe Ġproto Ġto Ġread Ċ Ġ* Ċ Ġ* ĠUsage : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġproto : ĠMy Proto ? Ġ= Ġmy Parcel . read Proto ( My Proto . getDefaultInstance ()) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠMessage Lite > ĠParcel . read Proto ( default Instance : ĠT ): ĠT ? Ġ{ ĊĠ Ġval Ġsize Ġ= Ġread Int () ĊĠ Ġif Ġ( size Ġ== ĠNULL _ MARKER ) Ġreturn Ġnull ĊĠ Ġval Ġbytes Ġ= ĠByteArray ( size ) ĊĠ Ġread ByteArray ( bytes ) ĊĠ Ġreturn Ġdecode Proto ( bytes , Ġdefault Instance ) Ċ } Ċ Ċ /** ĠNon - nullable Ġversion Ġof Ġ[ read Proto ], Ġwith Ġa Ġcustom Ġerror Ġmessage . Ġ*/ Ċ fun Ġ< T Ġ: ĠMessage Lite > ĠParcel . require Proto ( default Instance : ĠT , Ġlazy Message : Ġ() Ġ-> ĠAny ): ĠT Ġ= ĊĠ Ġrequire NotNull ( read Proto ( default Instance ), Ġlazy Message ) Ċ Ċ /** ĠNon - nullable Ġversion Ġof Ġ[ read Proto ]. Ġ*/ Ċ fun Ġ< T Ġ: ĠMessage Lite > ĠParcel . require Proto ( default Instance : ĠT ): ĠT Ġ= ĊĠ Ġrequire NotNull ( read Proto ( default Instance )) Ġ{ ĊĠĠĠ Ġ"${ default Instance :: class } Ġnot Ġfound Ġin Ġparcel ." ĊĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠDe codes Ġa Ġproto Ġfrom Ġthe Ġgiven Ġ[ ByteArray ]. ĠA Ġdefault Ġinstance Ġof Ġthe Ġproto Ġmust Ġbe Ġsupplied Ġso Ċ Ġ* Ġthe Ġcorrect Ġtype Ġof Ġproto Ġcan Ġbe Ġdecoded . Ċ Ġ*/ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T Ġ: ĠMessage Lite > Ġdecode Proto ( bytes : ĠByteArray , Ġdefault Instance : ĠT ): ĠT Ġ{ ĊĠ Ġreturn Ġdefault Instance . to Builder (). mergeFrom ( bytes ). build () Ġas ĠT Ċ } Ċ Ċ /** ĠSpecial Ġmarker Ġused Ġto Ġindicate Ġa Ġnull Ġproto Ġwas Ġstored . Ġ*/ Ċ private Ġconst Ġval ĠNULL _ MARKER Ġ= Ġ- 1 Ċ