home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / io / ByteToCharDBCS_EBCDIC.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  1.9 KB  |  126 lines

  1. package sun.io;
  2.  
  3. public abstract class ByteToCharDBCS_EBCDIC extends ByteToCharConverter {
  4.    private static final int SBCS = 0;
  5.    private static final int DBCS = 1;
  6.    // $FF: renamed from: SO int
  7.    private static final int field_0 = 14;
  8.    // $FF: renamed from: SI int
  9.    private static final int field_1 = 15;
  10.    private int currentState = 0;
  11.    private boolean savedBytePresent = false;
  12.    private byte savedByte;
  13.    protected String singleByteToChar;
  14.    protected short[] index1;
  15.    protected String index2;
  16.    protected int mask1;
  17.    protected int mask2;
  18.    protected int shift;
  19.  
  20.    public int flush(char[] var1, int var2, int var3) throws MalformedInputException {
  21.       if (this.savedBytePresent) {
  22.          this.reset();
  23.          super.badInputLength = 0;
  24.          throw new MalformedInputException();
  25.       } else {
  26.          this.reset();
  27.          return 0;
  28.       }
  29.    }
  30.  
  31.    public int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws UnknownCharacterException, MalformedInputException, ConversionBufferFullException {
  32.       char var8 = '∩┐╜';
  33.       super.charOff = var5;
  34.       super.byteOff = var2;
  35.  
  36.       while(super.byteOff < var3) {
  37.          int var7;
  38.          int var9;
  39.          if (!this.savedBytePresent) {
  40.             var9 = var1[super.byteOff];
  41.             var7 = 1;
  42.          } else {
  43.             var9 = this.savedByte;
  44.             this.savedBytePresent = false;
  45.             var7 = 0;
  46.          }
  47.  
  48.          if (var9 == 14) {
  49.             if (this.currentState != 0) {
  50.                super.badInputLength = 1;
  51.                throw new MalformedInputException();
  52.             }
  53.  
  54.             this.currentState = 1;
  55.             super.byteOff += var7;
  56.          } else if (var9 == 15) {
  57.             if (this.currentState != 1) {
  58.                super.badInputLength = 1;
  59.                throw new MalformedInputException();
  60.             }
  61.  
  62.             this.currentState = 0;
  63.             super.byteOff += var7;
  64.          } else {
  65.             if (var9 < 0) {
  66.                var9 += 256;
  67.             }
  68.  
  69.             if (this.currentState == 0) {
  70.                var8 = this.singleByteToChar.charAt(var9);
  71.             } else {
  72.                if (var9 < 64 || var9 > 254) {
  73.                   super.badInputLength = 1;
  74.                   throw new MalformedInputException();
  75.                }
  76.  
  77.                if (super.byteOff + var7 >= var3) {
  78.                   this.savedByte = (byte)var9;
  79.                   this.savedBytePresent = true;
  80.                   super.byteOff += var7;
  81.                   break;
  82.                }
  83.  
  84.                int var10 = var1[super.byteOff + var7];
  85.                if (var10 < 0) {
  86.                   var10 += 256;
  87.                }
  88.  
  89.                ++var7;
  90.                if ((var9 != 64 || var10 != 64) && (var10 < 65 || var10 > 254)) {
  91.                   super.badInputLength = 2;
  92.                   throw new MalformedInputException();
  93.                }
  94.  
  95.                int var11 = var9 * 256 + var10;
  96.                var8 = this.index2.charAt(this.index1[(var11 & this.mask1) >> this.shift] + (var11 & this.mask2));
  97.             }
  98.  
  99.             if (var8 == '∩┐╜') {
  100.                if (!super.subMode) {
  101.                   super.badInputLength = var7;
  102.                   throw new UnknownCharacterException();
  103.                }
  104.  
  105.                var8 = super.subChars[0];
  106.             }
  107.  
  108.             if (super.charOff >= var6) {
  109.                throw new ConversionBufferFullException();
  110.             }
  111.  
  112.             var4[super.charOff++] = var8;
  113.             super.byteOff += var7;
  114.          }
  115.       }
  116.  
  117.       return super.charOff - var5;
  118.    }
  119.  
  120.    public void reset() {
  121.       super.charOff = super.byteOff = 0;
  122.       this.currentState = 0;
  123.       this.savedBytePresent = false;
  124.    }
  125. }
  126.