home *** CD-ROM | disk | FTP | other *** search
Wrap
package sun.io; public abstract class CharToByteISO2022 extends CharToByteConverter { private final byte ISO_ESC = 27; private final byte ISO_SI = 15; private final byte ISO_SO = 14; private final byte ISO_SS2_7 = 78; private final byte ISO_SS3_7 = 79; private final byte SS2 = -114; // $FF: renamed from: P2 byte private final byte field_0 = -94; // $FF: renamed from: P3 byte private final byte field_1 = -93; private final byte MSB = -128; protected final byte maximumDesignatorLength = 3; protected String SODesignator; protected String SS2Designator; protected String SS3Designator; protected CharToByteConverter codeConverter; private boolean shiftout = false; private boolean SODesDefined = false; private boolean SS2DesDefined = false; private boolean SS3DesDefined = false; public int flush(byte[] var1, int var2, int var3) throws MalformedInputException { this.reset(); return 0; } public void reset() { this.shiftout = false; this.SODesDefined = false; this.SS2DesDefined = false; this.SS3DesDefined = false; super.byteOff = super.charOff = 0; } public boolean canConvert(char var1) { return var1 < 128 ? true : this.codeConverter.canConvert(var1); } private int unicodeToNative(char var1, byte[] var2) { int var3 = 0; byte[] var5 = new byte[this.codeConverter.getMaxBytesPerChar()]; char[] var6 = new char[]{var1}; int var7; try { var7 = this.codeConverter.convert(var6, 0, 1, var5, 0, this.codeConverter.getMaxBytesPerChar()); } catch (Exception var8) { return -1; } if (var7 == 2) { if (!this.SODesDefined) { this.SODesDefined = true; var2[0] = 27; byte[] var4 = this.SODesignator.getBytes(); System.arraycopy(var4, 0, var2, 1, var4.length); var3 = var4.length + 1; } if (!this.shiftout) { this.shiftout = true; var2[var3++] = 14; } var2[var3++] = (byte)(var5[0] & 127); var2[var3++] = (byte)(var5[1] & 127); } else { if (var5[0] == -114 && var5[1] == -94) { if (!this.SS2DesDefined) { this.SS2DesDefined = true; var2[0] = 27; byte[] var16 = this.SS2Designator.getBytes(); System.arraycopy(var16, 0, var2, 1, var16.length); var3 = var16.length + 1; } var2[var3++] = 27; var2[var3++] = 78; var2[var3++] = (byte)(var5[2] & 127); var2[var3++] = (byte)(var5[3] & 127); } if (var5[0] == -114 && var5[1] == 163) { if (!this.SS3DesDefined) { this.SS3DesDefined = true; var2[0] = 27; byte[] var17 = this.SS3Designator.getBytes(); System.arraycopy(var17, 0, var2, 1, var17.length); var3 = var17.length + 1; } var2[var3++] = 27; var2[var3++] = 79; var2[var3++] = (byte)(var5[2] & 127); var2[var3++] = (byte)(var5[3] & 127); } } return var3; } public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws UnknownCharacterException, MalformedInputException, ConversionBufferFullException { byte[] var8 = new byte[((CharToByteConverter)this).getMaxBytesPerChar()]; super.charOff = var2; super.byteOff = var5; while(super.charOff < var3) { byte[] var9 = var8; int var7; if (var1[super.charOff] < 128) { if (this.shiftout) { this.shiftout = false; var7 = 2; var8[0] = 15; var8[1] = (byte)(var1[super.charOff] & 127); } else { var7 = 1; var8[0] = (byte)(var1[super.charOff] & 127); } if (var1[super.charOff] == '\n') { this.SODesDefined = false; this.SS2DesDefined = false; this.SS3DesDefined = false; } } else { var7 = this.unicodeToNative(var1[super.charOff], var8); } ++super.charOff; if (var7 == -1) { if (!super.subMode) { super.badInputLength = 1; throw new UnknownCharacterException(); } if (!this.SODesDefined) { this.SODesDefined = !this.SODesDefined; var8[0] = 14; var8[1] = 63; var7 = 2; } else { var9 = super.subBytes; var7 = super.subBytes.length; } } if (var6 - super.byteOff < var7) { throw new ConversionBufferFullException(); } for(int var10 = 0; var10 < var7; ++var10) { var4[super.byteOff++] = var9[var10]; } } return super.byteOff - var5; } }