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

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