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

  1. package sun.io;
  2.  
  3. public class CharToByteSJIS extends CharToByteJIS0208 {
  4.    private char highHalfZoneCode;
  5.  
  6.    public int flush(byte[] var1, int var2, int var3) throws MalformedInputException {
  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[2];
  19.       super.charOff = var2;
  20.       super.byteOff = var5;
  21.       if (this.highHalfZoneCode != 0) {
  22.          char var16 = 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.             int var9 = 1;
  36.             byte var8 = 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.                var10[0] = ((CharToByteJIS0208)this).SingleByte(var7);
  64.                if (var10[0] == -1) {
  65.                   int var12 = ((CharToByteJIS0208)this).DoubleByte(var7);
  66.                   if (var12 != -1) {
  67.                      int var13 = var12 / 188 + 129;
  68.                      if (var13 > 159) {
  69.                         var13 += 64;
  70.                      }
  71.  
  72.                      int var14 = var12 % 188 + 64;
  73.                      if (var14 >= 127) {
  74.                         ++var14;
  75.                      }
  76.  
  77.                      var10[0] = (byte)var13;
  78.                      var10[1] = (byte)var14;
  79.                      var9 = 2;
  80.                   } else {
  81.                      if (!super.subMode) {
  82.                         super.badInputLength = 1;
  83.                         throw new UnknownCharacterException();
  84.                      }
  85.  
  86.                      var11 = super.subBytes;
  87.                      var9 = super.subBytes.length;
  88.                   }
  89.                }
  90.             }
  91.  
  92.             if (super.byteOff + var9 > var6) {
  93.                throw new ConversionBufferFullException();
  94.             }
  95.  
  96.             for(int var17 = 0; var17 < var9; ++var17) {
  97.                var4[super.byteOff++] = var11[var17];
  98.             }
  99.  
  100.             super.charOff += var8;
  101.          }
  102.  
  103.          return super.byteOff - var5;
  104.       }
  105.    }
  106.  
  107.    public boolean canConvert(char var1) {
  108.       if (((CharToByteJIS0208)this).SingleByte(var1) != -1) {
  109.          return true;
  110.       } else {
  111.          return ((CharToByteJIS0208)this).DoubleByte(var1) != -1;
  112.       }
  113.    }
  114.  
  115.    public int getMaxBytesPerChar() {
  116.       return 2;
  117.    }
  118.  
  119.    public String getCharacterEncoding() {
  120.       return "SJIS";
  121.    }
  122.  
  123.    public void reset() {
  124.       super.byteOff = super.charOff = 0;
  125.       this.highHalfZoneCode = 0;
  126.    }
  127. }
  128.