home *** CD-ROM | disk | FTP | other *** search
Wrap
package sun.io; public class ByteToCharEUCJIS extends ByteToCharJIS0208 { private byte savedFirst; private byte savedSecond; public int flush(char[] var1, int var2, int var3) throws MalformedInputException { if (this.savedFirst != 0) { this.savedFirst = this.savedSecond = 0; super.badInputLength = 0; throw new MalformedInputException(); } else { super.byteOff = super.charOff = 0; return 0; } } public int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws UnknownCharacterException, MalformedInputException, ConversionBufferFullException { char var10 = '�'; byte var11 = 0; byte[] var13 = var1; super.byteOff = var2; if (this.savedFirst != 0) { if ((var1[0] & 255) < 161) { super.badInputLength = 0; throw new MalformedInputException(); } byte[] var14; if (this.savedSecond != 0) { var14 = new byte[var3 - var2 + 2]; var14[0] = this.savedFirst; var14[1] = this.savedSecond; System.arraycopy(var1, var2, var14, 2, var3 - var2); super.byteOff -= 2; } else { var14 = new byte[var3 - var2 + 1]; var14[0] = this.savedFirst; System.arraycopy(var1, var2, var14, 1, var3 - var2); --super.byteOff; } var13 = var14; var2 = 0; var3 = var14.length; this.savedFirst = this.savedSecond = 0; } super.charOff = var5; for(int var12 = var2; var12 < var3; super.byteOff += var11) { int var7 = var13[var12] & 255; if (var7 < 128) { switch (var7) { case 0: default: var10 = (char)var7; var11 = 1; } } else if (var7 == 142) { if (var12 + 1 >= var3) { this.savedFirst = (byte)var7; ++super.byteOff; break; } int var17 = var13[var12 + 1] & 255; if (var17 < 161 || var17 > 223) { super.badInputLength = 2; throw new MalformedInputException(); } var10 = (char)(var17 + 'ﻀ'); var11 = 2; } else if (var7 >= 161 && var7 <= 254) { if (var12 + 1 >= var3) { this.savedFirst = (byte)var7; ++super.byteOff; break; } int var16 = var13[var12 + 1] & 255; if (var7 == 161 && var16 == 192) { var10 = '\'; } else { if (var16 < 161 || var16 > 254) { super.badInputLength = 2; throw new MalformedInputException(); } try { var10 = super.jisx0208Chars[(var7 - 161) * 94 + var16 - 161]; } catch (ArrayIndexOutOfBoundsException var15) { var10 = '�'; } } var11 = 2; } else if (var7 == 143) { if (var12 + 2 >= var3) { this.savedFirst = (byte)var7; ++super.byteOff; if (var12 + 1 < var3) { this.savedSecond = var13[var12 + 1]; ++super.byteOff; } break; } int var8 = var13[var12 + 1] & 255; int var9 = var13[var12 + 2] & 255; if (var8 < 161 || var8 > 254 || var9 < 161 || var9 > 254) { super.badInputLength = 3; throw new MalformedInputException(); } var10 = '�'; var11 = 3; } else { var11 = 1; var10 = '�'; } if (var10 == '�') { if (!super.subMode) { super.badInputLength = var11; throw new UnknownCharacterException(); } var10 = super.subChars[0]; } if (super.charOff >= var6) { throw new ConversionBufferFullException(); } var4[super.charOff++] = var10; var12 += var11; } return super.charOff - var5; } public String getCharacterEncoding() { return "EUCJIS"; } public void reset() { super.byteOff = super.charOff = 0; this.savedFirst = this.savedSecond = 0; } }