home *** CD-ROM | disk | FTP | other *** search
- package sun.io;
-
- public class ByteToCharEUC_JP extends ByteToCharJIS0208 {
- private byte savedSecond;
- ByteToCharJIS0201 bcJIS0201 = new ByteToCharJIS0201();
- ByteToCharJIS0212 bcJIS0212 = new ByteToCharJIS0212();
-
- public ByteToCharEUC_JP() {
- super.start = 161;
- super.end = 254;
- this.savedSecond = 0;
- }
-
- public int flush(char[] var1, int var2, int var3) throws MalformedInputException {
- if (this.savedSecond != 0) {
- this.reset();
- throw new MalformedInputException();
- } else {
- this.reset();
- return 0;
- }
- }
-
- public void reset() {
- super.reset();
- this.savedSecond = 0;
- }
-
- public String getCharacterEncoding() {
- return "EUC_JP";
- }
-
- protected char convSingleByte(int var1) {
- return var1 >= 0 && var1 <= 127 ? this.bcJIS0201.getUnicode(var1) : '�';
- }
-
- protected char getUnicode(int var1, int var2) {
- if (var1 == 142) {
- return this.bcJIS0201.getUnicode(var2 - 256);
- } else {
- int var3 = (ByteToCharJIS0208.index1[var1 - 128] & 15) * (super.end - super.start + 1) + (var2 - super.start);
- return super.index2[ByteToCharJIS0208.index1[var1 - 128] >> 4].charAt(var3);
- }
- }
-
- public int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws UnknownCharacterException, ConversionBufferFullException {
- char var7 = '�';
- int var8 = 0;
- super.charOff = var5;
-
- for(super.byteOff = var2; super.byteOff < var3; super.byteOff += var8) {
- byte var9;
- if (super.savedByte == 0) {
- var9 = var1[super.byteOff];
- var8 = 1;
- } else {
- var9 = super.savedByte;
- super.savedByte = 0;
- var8 = 0;
- }
-
- var7 = this.convSingleByte(var9);
- if (var7 == '�') {
- if ((var9 & 255) == 143) {
- if (super.byteOff + var8 + 1 >= var3) {
- super.savedByte = (byte)var9;
- super.byteOff += var8;
- if (super.byteOff < var3) {
- this.savedSecond = var1[super.byteOff];
- ++super.byteOff;
- }
- break;
- }
-
- if (this.savedSecond != 0) {
- var9 = this.savedSecond & 255;
- this.savedSecond = 0;
- } else {
- var9 = var1[super.byteOff + var8] & 255;
- ++var8;
- }
-
- int var10 = var1[super.byteOff + var8] & 255;
- ++var8;
- var7 = this.bcJIS0212.getUnicode(var9 - 128, var10 - 128);
- } else {
- if (super.byteOff + var8 >= var3) {
- super.savedByte = (byte)var9;
- super.byteOff += var8;
- break;
- }
-
- var9 &= 255;
- int var15 = var1[super.byteOff + var8] & 255;
- ++var8;
- var7 = this.getUnicode(var9, var15);
- }
- }
-
- if (var7 == '�') {
- if (!super.subMode) {
- super.badInputLength = var8;
- throw new UnknownCharacterException();
- }
-
- var7 = super.subChars[0];
- }
-
- if (super.charOff >= var6) {
- throw new ConversionBufferFullException();
- }
-
- var4[super.charOff++] = var7;
- }
-
- return super.charOff - var5;
- }
- }
-