package Ġrs . em ulate . util . charset Ċ Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Char Buffer Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . charset . Charset Decoder Ċ import Ġjava . nio . charset . Charset Encoder Ċ import Ġjava . nio . charset . Coder Result Ċ Ċ object ĠC p 1 2 5 2 Charset Ġ: ĠCharset (" Cp 1 2 5 2 ", Ġnull ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠASCII _ CLASS Ġ= ĠChar sets . US _ ASCII . java Class ĊĊĠĠĠ Ġprivate Ġval ĠCODE _ PAGE _ 1 2 5 2 Ġ= Ġchar ArrayOf ( ĊĠĠĠĠĠĠĠ Ġ'\ u 2 0 ac ', Ġ'\ u 0 0 0 0 ', Ġ'\ u 2 0 1 a ', Ġ'\ u 0 1 9 2 ', Ġ'\ u 2 0 1 e ', Ġ'\ u 2 0 2 6 ', Ġ'\ u 2 0 2 0 ', Ġ'\ u 2 0 2 1 ', ĊĠĠĠĠĠĠĠ Ġ'\ u 0 2 c 6 ', Ġ'\ u 2 0 3 0 ', Ġ'\ u 0 1 6 0 ', Ġ'\ u 2 0 3 9 ', Ġ'\ u 0 1 5 2 ', Ġ'\ u 0 0 0 0 ', Ġ'\ u 0 1 7 d ', Ġ'\ u 0 0 0 0 ', ĊĠĠĠĠĠĠĠ Ġ'\ u 0 0 0 0 ', Ġ'\ u 2 0 1 8 ', Ġ'\ u 2 0 1 9 ', Ġ'\ u 2 0 1 c ', Ġ'\ u 2 0 1 d ', Ġ'\ u 2 0 2 2 ', Ġ'\ u 2 0 1 3 ', Ġ'\ u 2 0 1 4 ', ĊĠĠĠĠĠĠĠ Ġ'\ u 0 2 dc ', Ġ'\ u 2 1 2 2 ', Ġ'\ u 0 1 6 1 ', Ġ'\ u 2 0 3 a ', Ġ'\ u 0 1 5 3 ', Ġ'\ u 0 0 0 0 ', Ġ'\ u 0 1 7 e ', Ġ'\ u 0 1 7 8 ' ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠDE CODE _ TABLE Ġ= ĠChar Array ( 2 5 6 ) ĊĠĠĠ Ġprivate Ġval ĠEN CODE _ TABLE Ġ= ĠByteArray ( 6 5 5 3 6 ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin ĠDE CODE _ TABLE . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch Ġ= Ġif Ġ( index Ġin Ġ 1 2 8 .. 1 5 9 ) ĠCODE _ PAGE _ 1 2 5 2 [ index Ġ- Ġ 1 2 8 ]. toInt () Ġelse Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDE CODE _ TABLE [ index ] Ġ= Ġch . to Char () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEN CODE _ TABLE [ ch ] Ġ= Ġindex . to Byte () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecode Char ( i : ĠInt ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( i Ġin Ġ 0 Ġuntil ĠDE CODE _ TABLE . size ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠDE CODE _ TABLE [ i ]. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( it Ġ!= Ġ 0 . to Char ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġencode Char ( chr : ĠChar ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠEN CODE _ TABLE [ chr . toInt ()]. toInt (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( it Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( cs : ĠCharset ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠASCII _ CLASS . is Instance ( cs ) Ġ|| Ġcs Ġ== ĠC p 1 2 5 2 Charset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnew Decoder (): ĠCharset Decoder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠC p 1 2 5 2 Decoder ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnew Encoder (): ĠCharset Encoder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠC p 1 2 5 2 Encoder ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠC p 1 2 5 2 Decoder ( cs : ĠCharset ) Ġ: ĠCharset Decoder ( cs , Ġ 1 F , Ġ 1 F ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdecode Loop ( input : ĠByteBuffer , Ġoutput : ĠChar Buffer ): ĠCod er Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( input . has Remaining ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! output . has Remaining ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCod er Result . OVER FLOW ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchr Ġ= Ġinput . get (). toInt () Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchr Ġ= ĠDE CODE _ TABLE [ chr ]. toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chr Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCod er Result . un m appable For Length ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . put ( chr . to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCod er Result . UNDER FLOW ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠC p 1 2 5 2 Encoder ( cs : ĠCharset ) Ġ: ĠCharset Encoder ( cs , Ġ 1 F , Ġ 1 F ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġencode Loop ( input : ĠChar Buffer , Ġoutput : ĠByteBuffer ): ĠCod er Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( input . has Remaining ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! output . has Remaining ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCod er Result . OVER FLOW ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchr Ġ= Ġinput . get (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchr Ġ= ĠEN CODE _ TABLE [ chr ]. toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chr Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCod er Result . un m appable For Length ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . put ( chr . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCod er Result . UNDER FLOW ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . hashCode Cp 1 2 5 2 (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġfold ( 0 ) Ġ{ Ġhash , Ġchar Ġ-> ĠC p 1 2 5 2 Charset . encode Char ( char ) Ġ+ Ġ(( hash Ġshl Ġ 5 ) Ġ- Ġhash ) Ġ} Ċ } Ċ