home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupportInternational / i18n.jar / sun / io / CharToByteISO2022.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.0 KB  |  163 lines

  1. package sun.io;
  2.  
  3. public abstract class CharToByteISO2022 extends CharToByteConverter {
  4.    private final byte ISO_ESC = 27;
  5.    private final byte ISO_SI = 15;
  6.    private final byte ISO_SO = 14;
  7.    private final byte ISO_SS2_7 = 78;
  8.    private final byte ISO_SS3_7 = 79;
  9.    private final byte SS2 = -114;
  10.    // $FF: renamed from: P2 byte
  11.    private final byte field_0 = -94;
  12.    // $FF: renamed from: P3 byte
  13.    private final byte field_1 = -93;
  14.    private final byte MSB = -128;
  15.    protected final byte maximumDesignatorLength = 3;
  16.    protected String SODesignator;
  17.    protected String SS2Designator;
  18.    protected String SS3Designator;
  19.    protected CharToByteConverter codeConverter;
  20.    private boolean shiftout = false;
  21.    private boolean SODesDefined = false;
  22.    private boolean SS2DesDefined = false;
  23.    private boolean SS3DesDefined = false;
  24.  
  25.    public int flush(byte[] var1, int var2, int var3) throws MalformedInputException {
  26.       this.reset();
  27.       return 0;
  28.    }
  29.  
  30.    public void reset() {
  31.       this.shiftout = false;
  32.       this.SODesDefined = false;
  33.       this.SS2DesDefined = false;
  34.       this.SS3DesDefined = false;
  35.       super.byteOff = super.charOff = 0;
  36.    }
  37.  
  38.    public boolean canConvert(char var1) {
  39.       return var1 < 128 ? true : this.codeConverter.canConvert(var1);
  40.    }
  41.  
  42.    private int unicodeToNative(char var1, byte[] var2) {
  43.       int var3 = 0;
  44.       byte[] var5 = new byte[this.codeConverter.getMaxBytesPerChar()];
  45.       char[] var6 = new char[]{var1};
  46.  
  47.       int var7;
  48.       try {
  49.          var7 = this.codeConverter.convert(var6, 0, 1, var5, 0, this.codeConverter.getMaxBytesPerChar());
  50.       } catch (Exception var8) {
  51.          return -1;
  52.       }
  53.  
  54.       if (var7 == 2) {
  55.          if (!this.SODesDefined) {
  56.             this.SODesDefined = true;
  57.             var2[0] = 27;
  58.             byte[] var4 = this.SODesignator.getBytes();
  59.             System.arraycopy(var4, 0, var2, 1, var4.length);
  60.             var3 = var4.length + 1;
  61.          }
  62.  
  63.          if (!this.shiftout) {
  64.             this.shiftout = true;
  65.             var2[var3++] = 14;
  66.          }
  67.  
  68.          var2[var3++] = (byte)(var5[0] & 127);
  69.          var2[var3++] = (byte)(var5[1] & 127);
  70.       } else {
  71.          if (var5[0] == -114 && var5[1] == -94) {
  72.             if (!this.SS2DesDefined) {
  73.                this.SS2DesDefined = true;
  74.                var2[0] = 27;
  75.                byte[] var16 = this.SS2Designator.getBytes();
  76.                System.arraycopy(var16, 0, var2, 1, var16.length);
  77.                var3 = var16.length + 1;
  78.             }
  79.  
  80.             var2[var3++] = 27;
  81.             var2[var3++] = 78;
  82.             var2[var3++] = (byte)(var5[2] & 127);
  83.             var2[var3++] = (byte)(var5[3] & 127);
  84.          }
  85.  
  86.          if (var5[0] == -114 && var5[1] == 163) {
  87.             if (!this.SS3DesDefined) {
  88.                this.SS3DesDefined = true;
  89.                var2[0] = 27;
  90.                byte[] var17 = this.SS3Designator.getBytes();
  91.                System.arraycopy(var17, 0, var2, 1, var17.length);
  92.                var3 = var17.length + 1;
  93.             }
  94.  
  95.             var2[var3++] = 27;
  96.             var2[var3++] = 79;
  97.             var2[var3++] = (byte)(var5[2] & 127);
  98.             var2[var3++] = (byte)(var5[3] & 127);
  99.          }
  100.       }
  101.  
  102.       return var3;
  103.    }
  104.  
  105.    public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws UnknownCharacterException, MalformedInputException, ConversionBufferFullException {
  106.       byte[] var8 = new byte[((CharToByteConverter)this).getMaxBytesPerChar()];
  107.       super.charOff = var2;
  108.       super.byteOff = var5;
  109.  
  110.       while(super.charOff < var3) {
  111.          byte[] var9 = var8;
  112.          int var7;
  113.          if (var1[super.charOff] < 128) {
  114.             if (this.shiftout) {
  115.                this.shiftout = false;
  116.                var7 = 2;
  117.                var8[0] = 15;
  118.                var8[1] = (byte)(var1[super.charOff] & 127);
  119.             } else {
  120.                var7 = 1;
  121.                var8[0] = (byte)(var1[super.charOff] & 127);
  122.             }
  123.  
  124.             if (var1[super.charOff] == '\n') {
  125.                this.SODesDefined = false;
  126.                this.SS2DesDefined = false;
  127.                this.SS3DesDefined = false;
  128.             }
  129.          } else {
  130.             var7 = this.unicodeToNative(var1[super.charOff], var8);
  131.          }
  132.  
  133.          ++super.charOff;
  134.          if (var7 == -1) {
  135.             if (!super.subMode) {
  136.                super.badInputLength = 1;
  137.                throw new UnknownCharacterException();
  138.             }
  139.  
  140.             if (!this.SODesDefined) {
  141.                this.SODesDefined = !this.SODesDefined;
  142.                var8[0] = 14;
  143.                var8[1] = 63;
  144.                var7 = 2;
  145.             } else {
  146.                var9 = super.subBytes;
  147.                var7 = super.subBytes.length;
  148.             }
  149.          }
  150.  
  151.          if (var6 - super.byteOff < var7) {
  152.             throw new ConversionBufferFullException();
  153.          }
  154.  
  155.          for(int var10 = 0; var10 < var7; ++var10) {
  156.             var4[super.byteOff++] = var9[var10];
  157.          }
  158.       }
  159.  
  160.       return super.byteOff - var5;
  161.    }
  162. }
  163.