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

  1. package sun.io;
  2.  
  3. public class CharToByteASCII extends CharToByteConverter {
  4.    private char highHalfZoneCode;
  5.  
  6.    public String getCharacterEncoding() {
  7.       return "ASCII";
  8.    }
  9.  
  10.    public int flush(byte[] var1, int var2, int var3) throws MalformedInputException {
  11.       if (this.highHalfZoneCode != 0) {
  12.          this.highHalfZoneCode = 0;
  13.          throw new MalformedInputException("String ends with <High Half Zone code> of UTF16");
  14.       } else {
  15.          super.byteOff = super.charOff = 0;
  16.          return 0;
  17.       }
  18.    }
  19.  
  20.    public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException {
  21.       byte[] var9 = new byte[1];
  22.       super.charOff = var2;
  23.       super.byteOff = var5;
  24.       if (this.highHalfZoneCode != 0) {
  25.          char var14 = this.highHalfZoneCode;
  26.          this.highHalfZoneCode = 0;
  27.          if (var1[var2] >= '\udc00' && var1[var2] <= '\udfff') {
  28.             super.badInputLength = 1;
  29.             throw new UnknownCharacterException();
  30.          } else {
  31.             super.badInputLength = 0;
  32.             throw new MalformedInputException("Previous converted string ends with <High Half Zone Code> of UTF16 , but this string is not begin with <Low Half Zone>");
  33.          }
  34.       } else {
  35.          while(super.charOff < var3) {
  36.             byte[] var8 = var9;
  37.             char var7 = var1[super.charOff];
  38.             int var11 = 1;
  39.             byte var10 = 1;
  40.             if (var7 >= '\ud800' && var7 <= '\udbff') {
  41.                if (super.charOff + 1 == var3) {
  42.                   this.highHalfZoneCode = var7;
  43.                   break;
  44.                }
  45.  
  46.                var7 = var1[super.charOff + 1];
  47.                if (var7 < '\udc00' || var7 > '\udfff') {
  48.                   super.badInputLength = 1;
  49.                   throw new MalformedInputException();
  50.                }
  51.  
  52.                if (!super.subMode) {
  53.                   super.badInputLength = 2;
  54.                   throw new UnknownCharacterException();
  55.                }
  56.  
  57.                var8 = super.subBytes;
  58.                var11 = super.subBytes.length;
  59.                var10 = 2;
  60.             } else {
  61.                if (var7 >= '\udc00' && var7 <= '\udfff') {
  62.                   super.badInputLength = 1;
  63.                   throw new MalformedInputException();
  64.                }
  65.  
  66.                if (var7 <= 127) {
  67.                   var9[0] = (byte)var7;
  68.                } else {
  69.                   if (!super.subMode) {
  70.                      super.badInputLength = 1;
  71.                      throw new UnknownCharacterException();
  72.                   }
  73.  
  74.                   var8 = super.subBytes;
  75.                   var11 = super.subBytes.length;
  76.                }
  77.             }
  78.  
  79.             if (super.byteOff + var11 > var6) {
  80.                throw new ConversionBufferFullException();
  81.             }
  82.  
  83.             for(int var12 = 0; var12 < var11; ++var12) {
  84.                var4[super.byteOff++] = var8[var12];
  85.             }
  86.  
  87.             super.charOff += var10;
  88.          }
  89.  
  90.          return super.byteOff - var5;
  91.       }
  92.    }
  93.  
  94.    public boolean canConvert(char var1) {
  95.       return var1 <= 127;
  96.    }
  97.  
  98.    public void reset() {
  99.       super.byteOff = super.charOff = 0;
  100.       this.highHalfZoneCode = 0;
  101.    }
  102.  
  103.    public int getMaxBytesPerChar() {
  104.       return 1;
  105.    }
  106. }
  107.