/* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 ĠSquare ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . squareup . wire Ċ Ċ import Ġok io . Buffered Sink Ċ import Ġok io . Buffered Source Ċ import Ġok io . ByteString Ċ import Ġkotlin . reflect . K Class Ċ Ċ actual Ġabstract Ġclass ĠProto Adapter < E > Ġactual Ġconstructor ( ĊĠ Ġinternal Ġactual Ġval Ġfield Encoding : ĠField Encoding , ĊĠ Ġactual Ġval Ġtype : ĠK Class < *> ? Ċ ) Ġ{ ĊĠ Ġinternal Ġactual Ġval Ġpacked Adapter : ĠProto Adapter < List < E >> ? Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġthis Ġis ĠPacked Proto Adapter < *> Ġ|| Ġthis Ġis ĠRe peated Proto Adapter < *> Ġ-> Ġnull ĊĠĠĠ Ġfield Encoding Ġ== ĠField Encoding . LENGTH _ DE LIMIT ED Ġ-> Ġnull ĊĠĠĠ Ġelse Ġ-> Ġcommon Create Packed () ĊĠ Ġ} ĊĠ Ġinternal Ġactual Ġval Ġrepeated Adapter : ĠProto Adapter < List < E >> ? Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġthis Ġis ĠRe peated Proto Adapter < *> Ġ|| Ġthis Ġis ĠPacked Proto Adapter < *> Ġ-> Ġnull ĊĠĠĠ Ġelse Ġ-> Ġcommon Create Repeated () ĊĠ Ġ} ĊĊĠ Ġ/** ĠReturns Ġthe Ġred acted Ġform Ġof Ġ` value `. Ġ*/ ĊĠ Ġactual Ġabstract Ġfun Ġred act ( value : ĠE ): ĠE ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġsize Ġof Ġthe Ġnon - null Ġdata Ġ` value `. ĠThis Ġdoes Ġnot Ġinclude Ġthe Ġsize Ġrequired Ġfor Ġa ĊĠĠ Ġ* Ġlength - de limited Ġprefix Ġ( should Ġthe Ġtype Ġrequire Ġone ). ĊĠĠ Ġ*/ ĊĠ Ġactual Ġabstract Ġfun Ġencoded Size ( value : ĠE ): ĠInt ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġsize Ġof Ġ` tag ` Ġand Ġ` value ` Ġin Ġthe Ġwire Ġformat . ĠThis Ġsize Ġincludes Ġthe Ġtag , Ġtype , ĊĠĠ Ġ* Ġlength - de limited Ġprefix Ġ( should Ġthe Ġtype Ġrequire Ġone ), Ġand Ġvalue . ĠReturns Ġ 0 Ġif Ġ` value ` Ġis ĊĠĠ Ġ* Ġnull . ĊĠĠ Ġ*/ ĊĠ Ġactual Ġopen Ġfun Ġencoded Size With Tag ( tag : ĠInt , Ġvalue : ĠE ?): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġcommon Encoded Size With Tag ( tag , Ġvalue ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠWrite Ġnon - null Ġ` value ` Ġto Ġ` writer `. Ġ*/ ĊĠ Ġactual Ġabstract Ġfun Ġencode ( writer : ĠProto Writer , Ġvalue : ĠE ) ĊĊĠ Ġ/** ĠWrite Ġ` tag ` Ġand Ġ` value ` Ġto Ġ` writer `. ĠIf Ġvalue Ġis Ġnull Ġthis Ġdoes Ġnothing . Ġ*/ ĊĠ Ġactual Ġopen Ġfun Ġencode With Tag ( writer : ĠProto Writer , Ġtag : ĠInt , Ġvalue : ĠE ?) Ġ{ ĊĠĠĠ Ġcommon Encode With Tag ( writer , Ġtag , Ġvalue ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠEncode Ġ` value ` Ġand Ġwrite Ġit Ġto Ġ` stream `. Ġ*/ ĊĠ Ġactual Ġfun Ġencode ( sink : ĠBuffered Sink , Ġvalue : ĠE ) Ġ{ ĊĠĠĠ Ġcommon Encode ( sink , Ġvalue ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠEncode Ġ` value ` Ġas Ġa Ġ` byte [] `. Ġ*/ ĊĠ Ġactual Ġfun Ġencode ( value : ĠE ): ĠByteArray Ġ{ ĊĠĠĠ Ġreturn Ġcommon Encode ( value ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠRead Ġa Ġnon - null Ġvalue Ġfrom Ġ` reader `. Ġ*/ ĊĠ Ġactual Ġabstract Ġfun Ġdecode ( reader : ĠProto Reader ): ĠE ĊĊĠ Ġ/** ĠRead Ġan Ġencoded Ġmessage Ġfrom Ġ` bytes `. Ġ*/ ĊĠ Ġactual Ġfun Ġdecode ( bytes : ĠByteArray ): ĠE Ġ{ ĊĠĠĠ Ġreturn Ġcommon Decode ( bytes ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠRead Ġan Ġencoded Ġmessage Ġfrom Ġ` bytes `. Ġ*/ ĊĠ Ġactual Ġfun Ġdecode ( bytes : ĠByte String ): ĠE Ġ{ ĊĠĠĠ Ġreturn Ġcommon Decode ( bytes ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠRead Ġan Ġencoded Ġmessage Ġfrom Ġ` source `. Ġ*/ ĊĠ Ġactual Ġfun Ġdecode ( source : ĠBuffered Source ): ĠE Ġ{ ĊĠĠĠ Ġreturn Ġcommon Decode ( source ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠReturns Ġa Ġhuman - readable Ġversion Ġof Ġthe Ġgiven Ġ` value `. Ġ*/ ĊĠ Ġactual Ġopen Ġfun ĠtoString ( value : ĠE ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġcommon ToString ( value ) ĊĠ Ġ} ĊĊĠ Ġinternal Ġactual Ġfun Ġwith Label ( label : ĠWire Field . Label ): ĠProto Adapter < *> Ġ{ ĊĠĠĠ Ġreturn Ġcommon With Label ( label ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠReturns Ġan Ġadapter Ġfor Ġ` E ` Ġbut Ġas Ġa Ġpacked , Ġrepeated Ġvalue . Ġ*/ ĊĠ Ġactual Ġfun Ġas Packed (): ĠProto Adapter < List < E >> Ġ{ ĊĠĠĠ Ġrequire ( field Encoding Ġ!= ĠField Encoding . LENGTH _ DE LIMIT ED ) Ġ{ ĊĠĠĠĠĠ Ġ" Unable Ġto Ġpack Ġa Ġlength - de limited Ġtype ." ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġpacked Adapter Ġ?: Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠ Ġ" Can 't Ġcreate Ġa Ġpacked Ġadapter Ġfrom Ġa Ġpacked Ġor Ġrepeated Ġadapter .") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġan Ġadapter Ġfor Ġ` E ` Ġbut Ġas Ġa Ġrepeated Ġvalue . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠNote : ĠRe peated Ġitems Ġare Ġnot Ġrequired Ġto Ġbe Ġencoded Ġse quent ially . ĠThus , Ġwhen Ġdecoding Ġusing ĊĠĠ Ġ* Ġthe Ġreturned Ġadapter , Ġonly Ġsingle - element Ġlists Ġwill Ġbe Ġreturned Ġand Ġit Ġis Ġthe Ġcaller 's ĊĠĠ Ġ* Ġresponsibility Ġto Ġmerge Ġthem Ġinto Ġthe Ġfinal Ġlist . ĊĠĠ Ġ*/ ĊĠ Ġactual Ġfun Ġas Repeated (): ĠProto Adapter < List < E >> Ġ{ ĊĠĠĠ Ġreturn Ġrepeated Adapter Ġ?: Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠ Ġ" Can 't Ġcreate Ġa Ġrepeated Ġadapter Ġfrom Ġa Ġrepeated Ġor Ġpacked Ġadapter .") ĊĠ Ġ} ĊĊĠ Ġactual Ġclass ĠEnum Constant NotFoundException Ġactual Ġconstructor ( ĊĠĠĠ Ġactual Ġval Ġvalue : ĠInt , ĊĠĠĠ Ġtype : ĠK Class < *> ? ĊĠ Ġ) Ġ: ĠIllegalArgumentException (" Unknown Ġenum Ġtag Ġ$ value Ġfor Ġ${ type ?. simple Name }") ĊĊĠ Ġactual Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġproto Ġadapter Ġfor Ġa Ġmap Ġusing Ġ` key Adapter ` Ġand Ġ` value Adapter `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote : ĠMap Ġentries Ġare Ġnot Ġrequired Ġto Ġbe Ġencoded Ġse quent ially . ĠThus , Ġwhen Ġdecoding Ġusing ĊĠĠĠĠ Ġ* Ġthe Ġreturned Ġadapter , Ġonly Ġsingle - element Ġmaps Ġwill Ġbe Ġreturned Ġand Ġit Ġis Ġthe Ġcaller 's ĊĠĠĠĠ Ġ* Ġresponsibility Ġto Ġmerge Ġthem Ġinto Ġthe Ġfinal Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġactual Ġfun Ġ< K , ĠV > Ġnew Map Adapter ( ĊĠĠĠĠĠ Ġkey Adapter : ĠProto Adapter < K >, ĊĠĠĠĠĠ Ġvalue Adapter : ĠProto Adapter < V > ĊĠĠĠ Ġ): ĠProto Adapter < Map < K , ĠV >> Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcommon New Map Adapter ( key Adapter , Ġvalue Adapter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġval ĠBOOL : ĠProto Adapter < Boolean > Ġ= Ġcommon Bool () ĊĠĠĠ Ġactual Ġval ĠINT 3 2 : ĠProto Adapter < Int > Ġ= Ġcommon Int 3 2 () ĊĠĠĠ Ġactual Ġval ĠUINT 3 2 : ĠProto Adapter < Int > Ġ= Ġcommon Uint 3 2 () ĊĠĠĠ Ġactual Ġval ĠS INT 3 2 : ĠProto Adapter < Int > Ġ= Ġcommon Sint 3 2 () ĊĠĠĠ Ġactual Ġval ĠFIX ED 3 2 : ĠProto Adapter < Int > Ġ= Ġcommon Fixed 3 2 () ĊĠĠĠ Ġactual Ġval ĠS FIXED 3 2 : ĠProto Adapter < Int > Ġ= Ġcommon S fixed 3 2 () ĊĠĠĠ Ġactual Ġval ĠINT 6 4 : ĠProto Adapter < Long > Ġ= Ġcommon Int 6 4 () ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLike ĠINT 6 4 , Ġbut Ġnegative Ġlong s Ġare Ġinterpreted Ġas Ġlarge Ġpositive Ġvalues , Ġand Ġencoded Ġthat Ġway ĊĠĠĠĠ Ġ* Ġin ĠJSON . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġactual Ġval ĠUINT 6 4 : ĠProto Adapter < Long > Ġ= Ġcommon Uint 6 4 () ĊĠĠĠ Ġactual Ġval ĠS INT 6 4 : ĠProto Adapter < Long > Ġ= Ġcommon Sint 6 4 () ĊĠĠĠ Ġactual Ġval ĠFIX ED 6 4 : ĠProto Adapter < Long > Ġ= Ġcommon Fixed 6 4 () ĊĠĠĠ Ġactual Ġval ĠS FIXED 6 4 : ĠProto Adapter < Long > Ġ= Ġcommon S fixed 6 4 () ĊĠĠĠ Ġactual Ġval ĠFLOAT : ĠProto Adapter < Float > Ġ= Ġcommon Float () ĊĠĠĠ Ġactual Ġval ĠDOUBLE : ĠProto Adapter < Double > Ġ= Ġcommon Double () ĊĠĠĠ Ġactual Ġval ĠBY TES : ĠProto Adapter < ByteString > Ġ= Ġcommon Bytes () ĊĠĠĠ Ġactual Ġval ĠSTRING : ĠProto Adapter < String > Ġ= Ġcommon String () ĊĠ Ġ} Ċ } Ċ