package Ġio . v ito . l ud w ie g . types Ċ Ċ import Ġio . v ito . l ud w ie g .* Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ Ċ @ L ud w ie g Internal Type ( Protocol Type . DY N INT ) Ċ class ĠType Dyn Int Ġ: ĠType < Dyn Int >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġencode Value To ( buf : ĠByteArrayOutputStream , Ġcandidate : ĠSerialization Candidate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuf . write Byte ( value !!. underlying Type . value ) ĊĠĠĠĠĠĠĠ Ġwhen ( value !!. underlying Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . INVALID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . INT 8 , ĠDyn Int Value Kind . UINT 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Byte ( value !!. value . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . INT 1 6 , ĠDyn Int Value Kind . UINT 1 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Short ( value !!. value . to Short ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . INT 3 2 , ĠDyn Int Value Kind . UINT 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . writeInt ( value !!. value . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . INT 6 4 , ĠDyn Int Value Kind . UINT 6 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Long ( value !!. value . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . FLOAT 3 2 , ĠDyn Int Value Kind . FLOAT 6 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Double ( value !!. value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecode Value ( buf : ĠByteArrayInputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdyn Kind Ġ= ĠDyn Int Value Kind . kind From Byte ( buf . read Byte ()) ĊĠĠĠĠĠĠĠ Ġval Ġread Value : ĠDouble Ġ= Ġwhen Ġ( dyn Kind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . INVALID Ġ-> Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . UINT 8 , ĠDyn Int Value Kind . INT 8 Ġ-> Ġbuf . read Byte (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . UINT 1 6 , ĠDyn Int Value Kind . INT 1 6 Ġ-> Ġbuf . read Short (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . UINT 3 2 , ĠDyn Int Value Kind . INT 3 2 Ġ-> Ġbuf . readInt (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . UINT 6 4 , ĠDyn Int Value Kind . INT 6 4 Ġ-> Ġbuf . read Long (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDyn Int Value Kind . FLOAT 3 2 , ĠDyn Int Value Kind . FLOAT 6 4 Ġ-> Ġbuf . read Double () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvalue Ġ= ĠDyn Int ( Triple ( dyn Kind Ġ!= ĠDyn Int Value Kind . INVALID , Ġdyn Kind , Ġread Value )) ĊĠĠĠ Ġ} Ċ } Ċ