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

  1. package sun.io;
  2.  
  3. public abstract class ByteToCharDBCS_ASCII extends ByteToCharConverter {
  4.    private boolean savedBytePresent = false;
  5.    private byte savedByte;
  6.    protected String singleByteToChar;
  7.    protected boolean[] leadByte;
  8.    protected short[] index1;
  9.    protected String index2;
  10.    protected int mask1;
  11.    protected int mask2;
  12.    protected int shift;
  13.  
  14.    public int flush(char[] var1, int var2, int var3) throws MalformedInputException {
  15.       if (this.savedBytePresent) {
  16.          this.reset();
  17.          super.badInputLength = 0;
  18.          throw new MalformedInputException();
  19.       } else {
  20.          this.reset();
  21.          return 0;
  22.       }
  23.    }
  24.  
  25.    public int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws UnknownCharacterException, MalformedInputException, ConversionBufferFullException {
  26.       char var8 = '∩┐╜';
  27.       super.charOff = var5;
  28.  
  29.       int var7;
  30.       for(super.byteOff = var2; super.byteOff < var3; super.byteOff += var7) {
  31.          int var9;
  32.          if (!this.savedBytePresent) {
  33.             var9 = var1[super.byteOff];
  34.             var7 = 1;
  35.          } else {
  36.             var9 = this.savedByte;
  37.             this.savedBytePresent = false;
  38.             var7 = 0;
  39.          }
  40.  
  41.          if (var9 < 0) {
  42.             var9 += 256;
  43.          }
  44.  
  45.          if (!this.leadByte[var9]) {
  46.             var8 = this.singleByteToChar.charAt(var9);
  47.          } else {
  48.             if (super.byteOff + var7 >= var3) {
  49.                this.savedByte = (byte)var9;
  50.                this.savedBytePresent = true;
  51.                super.byteOff += var7;
  52.                break;
  53.             }
  54.  
  55.             int var10 = var1[super.byteOff + var7];
  56.             if (var10 < 0) {
  57.                var10 += 256;
  58.             }
  59.  
  60.             ++var7;
  61.             int var11 = var9 * 256 + var10;
  62.             var8 = this.index2.charAt(this.index1[(var11 & this.mask1) >> this.shift] + (var11 & this.mask2));
  63.          }
  64.  
  65.          if (var8 == '∩┐╜') {
  66.             if (!super.subMode) {
  67.                super.badInputLength = var7;
  68.                throw new UnknownCharacterException();
  69.             }
  70.  
  71.             var8 = super.subChars[0];
  72.          }
  73.  
  74.          if (super.charOff >= var6) {
  75.             throw new ConversionBufferFullException();
  76.          }
  77.  
  78.          var4[super.charOff++] = var8;
  79.       }
  80.  
  81.       return super.charOff - var5;
  82.    }
  83.  
  84.    public void reset() {
  85.       super.charOff = super.byteOff = 0;
  86.       this.savedBytePresent = false;
  87.    }
  88. }
  89.