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

  1. package sun.io;
  2.  
  3. public class CharToByteEUCJIS extends CharToByteJIS0208 {
  4.    private char highHalfZoneCode;
  5.  
  6.    public int flush(byte[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException {
  7.       if (this.highHalfZoneCode != 0) {
  8.          this.highHalfZoneCode = 0;
  9.          super.badInputLength = 0;
  10.          throw new MalformedInputException();
  11.       } else {
  12.          super.byteOff = super.charOff = 0;
  13.          return 0;
  14.       }
  15.    }
  16.  
  17.    public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException {
  18.       byte[] var10 = new byte[3];
  19.       super.charOff = var2;
  20.       super.byteOff = var5;
  21.       if (this.highHalfZoneCode != 0) {
  22.          char var14 = this.highHalfZoneCode;
  23.          this.highHalfZoneCode = 0;
  24.          if (var1[var2] >= '\udc00' && var1[var2] <= '\udfff') {
  25.             super.badInputLength = 1;
  26.             throw new UnknownCharacterException();
  27.          } else {
  28.             super.badInputLength = 0;
  29.             throw new MalformedInputException();
  30.          }
  31.       } else {
  32.          while(super.charOff < var3) {
  33.             byte[] var11 = var10;
  34.             char var7 = var1[super.charOff];
  35.             byte var8 = 1;
  36.             int var9 = 1;
  37.             if (var7 <= '\ud800' && var7 >= '\udbff') {
  38.                if (super.charOff + 1 >= var3) {
  39.                   this.highHalfZoneCode = var7;
  40.                   break;
  41.                }
  42.  
  43.                var7 = var1[super.charOff + 1];
  44.                if (var7 < '\udc00' || var7 > '\udfff') {
  45.                   super.badInputLength = 1;
  46.                   throw new MalformedInputException();
  47.                }
  48.  
  49.                if (!super.subMode) {
  50.                   super.badInputLength = 2;
  51.                   throw new UnknownCharacterException();
  52.                }
  53.  
  54.                var11 = super.subBytes;
  55.                var9 = super.subBytes.length;
  56.                var8 = 2;
  57.             } else {
  58.                if (var7 >= '\udc00' && var7 <= '\udfff') {
  59.                   super.badInputLength = 1;
  60.                   throw new MalformedInputException();
  61.                }
  62.  
  63.                if (var7 <= 127) {
  64.                   var10[0] = (byte)var7;
  65.                } else if (var7 == 165) {
  66.                   var10[0] = 92;
  67.                } else if (var7 >= '∩╜í' && var7 <= '∩╛ƒ') {
  68.                   var10[0] = -114;
  69.                   var10[1] = (byte)(var7 - '∩╗Ç');
  70.                   var9 = 2;
  71.                } else {
  72.                   int var12 = ((CharToByteJIS0208)this).DoubleByte(var7);
  73.                   if (var12 != -1) {
  74.                      var10[0] = (byte)(var12 / 94 + 161);
  75.                      var10[1] = (byte)(var12 % 94 + 161);
  76.                      var9 = 2;
  77.                   } else {
  78.                      if (!super.subMode) {
  79.                         super.badInputLength = 1;
  80.                         throw new UnknownCharacterException();
  81.                      }
  82.  
  83.                      var11 = super.subBytes;
  84.                      var9 = super.subBytes.length;
  85.                   }
  86.                }
  87.             }
  88.  
  89.             if (super.byteOff + var9 > var6) {
  90.                throw new ConversionBufferFullException();
  91.             }
  92.  
  93.             for(int var15 = 0; var15 < var9; ++var15) {
  94.                var4[super.byteOff++] = var11[var15];
  95.             }
  96.  
  97.             super.charOff += var8;
  98.          }
  99.  
  100.          return super.byteOff - var5;
  101.       }
  102.    }
  103.  
  104.    public int getMaxBytesPerChar() {
  105.       return 3;
  106.    }
  107.  
  108.    public void reset() {
  109.       this.highHalfZoneCode = 0;
  110.       super.byteOff = super.charOff = 0;
  111.    }
  112.  
  113.    public String getCharacterEncoding() {
  114.       return "EUCJIS";
  115.    }
  116. }
  117.