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

  1. package sun.io;
  2.  
  3. public class ByteToCharEUC_JP extends ByteToCharJIS0208 {
  4.    private byte savedSecond;
  5.    ByteToCharJIS0201 bcJIS0201 = new ByteToCharJIS0201();
  6.    ByteToCharJIS0212 bcJIS0212 = new ByteToCharJIS0212();
  7.  
  8.    public ByteToCharEUC_JP() {
  9.       super.start = 161;
  10.       super.end = 254;
  11.       this.savedSecond = 0;
  12.    }
  13.  
  14.    public int flush(char[] var1, int var2, int var3) throws MalformedInputException {
  15.       if (this.savedSecond != 0) {
  16.          this.reset();
  17.          throw new MalformedInputException();
  18.       } else {
  19.          this.reset();
  20.          return 0;
  21.       }
  22.    }
  23.  
  24.    public void reset() {
  25.       super.reset();
  26.       this.savedSecond = 0;
  27.    }
  28.  
  29.    public String getCharacterEncoding() {
  30.       return "EUC_JP";
  31.    }
  32.  
  33.    protected char convSingleByte(int var1) {
  34.       return var1 >= 0 && var1 <= 127 ? this.bcJIS0201.getUnicode(var1) : '∩┐╜';
  35.    }
  36.  
  37.    protected char getUnicode(int var1, int var2) {
  38.       if (var1 == 142) {
  39.          return this.bcJIS0201.getUnicode(var2 - 256);
  40.       } else {
  41.          int var3 = (ByteToCharJIS0208.index1[var1 - 128] & 15) * (super.end - super.start + 1) + (var2 - super.start);
  42.          return super.index2[ByteToCharJIS0208.index1[var1 - 128] >> 4].charAt(var3);
  43.       }
  44.    }
  45.  
  46.    public int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws UnknownCharacterException, ConversionBufferFullException {
  47.       char var7 = '∩┐╜';
  48.       int var8 = 0;
  49.       super.charOff = var5;
  50.  
  51.       for(super.byteOff = var2; super.byteOff < var3; super.byteOff += var8) {
  52.          byte var9;
  53.          if (super.savedByte == 0) {
  54.             var9 = var1[super.byteOff];
  55.             var8 = 1;
  56.          } else {
  57.             var9 = super.savedByte;
  58.             super.savedByte = 0;
  59.             var8 = 0;
  60.          }
  61.  
  62.          var7 = this.convSingleByte(var9);
  63.          if (var7 == '∩┐╜') {
  64.             if ((var9 & 255) == 143) {
  65.                if (super.byteOff + var8 + 1 >= var3) {
  66.                   super.savedByte = (byte)var9;
  67.                   super.byteOff += var8;
  68.                   if (super.byteOff < var3) {
  69.                      this.savedSecond = var1[super.byteOff];
  70.                      ++super.byteOff;
  71.                   }
  72.                   break;
  73.                }
  74.  
  75.                if (this.savedSecond != 0) {
  76.                   var9 = this.savedSecond & 255;
  77.                   this.savedSecond = 0;
  78.                } else {
  79.                   var9 = var1[super.byteOff + var8] & 255;
  80.                   ++var8;
  81.                }
  82.  
  83.                int var10 = var1[super.byteOff + var8] & 255;
  84.                ++var8;
  85.                var7 = this.bcJIS0212.getUnicode(var9 - 128, var10 - 128);
  86.             } else {
  87.                if (super.byteOff + var8 >= var3) {
  88.                   super.savedByte = (byte)var9;
  89.                   super.byteOff += var8;
  90.                   break;
  91.                }
  92.  
  93.                var9 &= 255;
  94.                int var15 = var1[super.byteOff + var8] & 255;
  95.                ++var8;
  96.                var7 = this.getUnicode(var9, var15);
  97.             }
  98.          }
  99.  
  100.          if (var7 == '∩┐╜') {
  101.             if (!super.subMode) {
  102.                super.badInputLength = var8;
  103.                throw new UnknownCharacterException();
  104.             }
  105.  
  106.             var7 = super.subChars[0];
  107.          }
  108.  
  109.          if (super.charOff >= var6) {
  110.             throw new ConversionBufferFullException();
  111.          }
  112.  
  113.          var4[super.charOff++] = var7;
  114.       }
  115.  
  116.       return super.charOff - var5;
  117.    }
  118. }
  119.