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 / ByteToCharEUCJIS.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.2 KB  |  153 lines

  1. package sun.io;
  2.  
  3. public class ByteToCharEUCJIS extends ByteToCharJIS0208 {
  4.    private byte savedFirst;
  5.    private byte savedSecond;
  6.  
  7.    public int flush(char[] var1, int var2, int var3) throws MalformedInputException {
  8.       if (this.savedFirst != 0) {
  9.          this.savedFirst = this.savedSecond = 0;
  10.          super.badInputLength = 0;
  11.          throw new MalformedInputException();
  12.       } else {
  13.          super.byteOff = super.charOff = 0;
  14.          return 0;
  15.       }
  16.    }
  17.  
  18.    public int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws UnknownCharacterException, MalformedInputException, ConversionBufferFullException {
  19.       char var10 = '∩┐╜';
  20.       byte var11 = 0;
  21.       byte[] var13 = var1;
  22.       super.byteOff = var2;
  23.       if (this.savedFirst != 0) {
  24.          if ((var1[0] & 255) < 161) {
  25.             super.badInputLength = 0;
  26.             throw new MalformedInputException();
  27.          }
  28.  
  29.          byte[] var14;
  30.          if (this.savedSecond != 0) {
  31.             var14 = new byte[var3 - var2 + 2];
  32.             var14[0] = this.savedFirst;
  33.             var14[1] = this.savedSecond;
  34.             System.arraycopy(var1, var2, var14, 2, var3 - var2);
  35.             super.byteOff -= 2;
  36.          } else {
  37.             var14 = new byte[var3 - var2 + 1];
  38.             var14[0] = this.savedFirst;
  39.             System.arraycopy(var1, var2, var14, 1, var3 - var2);
  40.             --super.byteOff;
  41.          }
  42.  
  43.          var13 = var14;
  44.          var2 = 0;
  45.          var3 = var14.length;
  46.          this.savedFirst = this.savedSecond = 0;
  47.       }
  48.  
  49.       super.charOff = var5;
  50.  
  51.       for(int var12 = var2; var12 < var3; super.byteOff += var11) {
  52.          int var7 = var13[var12] & 255;
  53.          if (var7 < 128) {
  54.             switch (var7) {
  55.                case 0:
  56.                default:
  57.                   var10 = (char)var7;
  58.                   var11 = 1;
  59.             }
  60.          } else if (var7 == 142) {
  61.             if (var12 + 1 >= var3) {
  62.                this.savedFirst = (byte)var7;
  63.                ++super.byteOff;
  64.                break;
  65.             }
  66.  
  67.             int var17 = var13[var12 + 1] & 255;
  68.             if (var17 < 161 || var17 > 223) {
  69.                super.badInputLength = 2;
  70.                throw new MalformedInputException();
  71.             }
  72.  
  73.             var10 = (char)(var17 + '∩╗Ç');
  74.             var11 = 2;
  75.          } else if (var7 >= 161 && var7 <= 254) {
  76.             if (var12 + 1 >= var3) {
  77.                this.savedFirst = (byte)var7;
  78.                ++super.byteOff;
  79.                break;
  80.             }
  81.  
  82.             int var16 = var13[var12 + 1] & 255;
  83.             if (var7 == 161 && var16 == 192) {
  84.                var10 = '∩╝╝';
  85.             } else {
  86.                if (var16 < 161 || var16 > 254) {
  87.                   super.badInputLength = 2;
  88.                   throw new MalformedInputException();
  89.                }
  90.  
  91.                try {
  92.                   var10 = super.jisx0208Chars[(var7 - 161) * 94 + var16 - 161];
  93.                } catch (ArrayIndexOutOfBoundsException var15) {
  94.                   var10 = '∩┐╜';
  95.                }
  96.             }
  97.  
  98.             var11 = 2;
  99.          } else if (var7 == 143) {
  100.             if (var12 + 2 >= var3) {
  101.                this.savedFirst = (byte)var7;
  102.                ++super.byteOff;
  103.                if (var12 + 1 < var3) {
  104.                   this.savedSecond = var13[var12 + 1];
  105.                   ++super.byteOff;
  106.                }
  107.                break;
  108.             }
  109.  
  110.             int var8 = var13[var12 + 1] & 255;
  111.             int var9 = var13[var12 + 2] & 255;
  112.             if (var8 < 161 || var8 > 254 || var9 < 161 || var9 > 254) {
  113.                super.badInputLength = 3;
  114.                throw new MalformedInputException();
  115.             }
  116.  
  117.             var10 = '∩┐╜';
  118.             var11 = 3;
  119.          } else {
  120.             var11 = 1;
  121.             var10 = '∩┐╜';
  122.          }
  123.  
  124.          if (var10 == '∩┐╜') {
  125.             if (!super.subMode) {
  126.                super.badInputLength = var11;
  127.                throw new UnknownCharacterException();
  128.             }
  129.  
  130.             var10 = super.subChars[0];
  131.          }
  132.  
  133.          if (super.charOff >= var6) {
  134.             throw new ConversionBufferFullException();
  135.          }
  136.  
  137.          var4[super.charOff++] = var10;
  138.          var12 += var11;
  139.       }
  140.  
  141.       return super.charOff - var5;
  142.    }
  143.  
  144.    public String getCharacterEncoding() {
  145.       return "EUCJIS";
  146.    }
  147.  
  148.    public void reset() {
  149.       super.byteOff = super.charOff = 0;
  150.       this.savedFirst = this.savedSecond = 0;
  151.    }
  152. }
  153.