home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / io / CharToByteConverter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.7 KB  |  162 lines

  1. package sun.io;
  2.  
  3. import java.io.CharConversionException;
  4. import java.io.UnsupportedEncodingException;
  5.  
  6. public abstract class CharToByteConverter {
  7.    protected boolean subMode = true;
  8.    protected byte[] subBytes = new byte[]{63};
  9.    protected int charOff;
  10.    protected int byteOff;
  11.    protected int badInputLength;
  12.  
  13.    public static CharToByteConverter getDefault() {
  14.       Object var0 = Converters.newDefaultConverter(1);
  15.       return (CharToByteConverter)var0;
  16.    }
  17.  
  18.    public static CharToByteConverter getConverter(String var0) throws UnsupportedEncodingException {
  19.       Object var1 = Converters.newConverter(1, var0);
  20.       return (CharToByteConverter)var1;
  21.    }
  22.  
  23.    public abstract String getCharacterEncoding();
  24.  
  25.    public abstract int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException;
  26.  
  27.    public int convertAny(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws ConversionBufferFullException {
  28.       if (!this.subMode) {
  29.          throw new IllegalStateException("Substitution mode is not on");
  30.       } else {
  31.          int var7 = var2;
  32.          int var8 = var5;
  33.  
  34.          while(var7 < var3) {
  35.             try {
  36.                this.convert(var1, var7, var3, var4, var8, var6);
  37.                return this.nextByteIndex() - var5;
  38.             } catch (MalformedInputException var13) {
  39.                byte[] var10 = this.subBytes;
  40.                int var11 = var10.length;
  41.                var8 = this.nextByteIndex();
  42.                if (var8 + var11 > var6) {
  43.                   throw new ConversionBufferFullException();
  44.                }
  45.  
  46.                for(int var12 = 0; var12 < var11; ++var12) {
  47.                   var4[var8++] = var10[var12];
  48.                }
  49.  
  50.                var7 = this.nextCharIndex();
  51.                var7 += this.badInputLength;
  52.                this.badInputLength = 0;
  53.                if (var7 >= var3) {
  54.                   this.byteOff = var8;
  55.                   return this.byteOff - var5;
  56.                }
  57.             } catch (UnknownCharacterException var14) {
  58.                throw new InternalError("UnknownCharacterException thrown in substititution mode");
  59.             }
  60.          }
  61.  
  62.          return this.nextByteIndex() - var5;
  63.       }
  64.    }
  65.  
  66.    public byte[] convertAll(char[] var1) throws MalformedInputException {
  67.       this.reset();
  68.       boolean var2 = this.subMode;
  69.       this.subMode = true;
  70.       byte[] var3 = new byte[this.getMaxBytesPerChar() * var1.length];
  71.  
  72.       byte[] var6;
  73.       try {
  74.          int var4 = this.convert(var1, 0, var1.length, var3, 0, var3.length);
  75.          var4 += this.flush(var3, this.nextByteIndex(), var3.length);
  76.          byte[] var5 = new byte[var4];
  77.          System.arraycopy(var3, 0, var5, 0, var4);
  78.          var6 = var5;
  79.       } catch (ConversionBufferFullException var12) {
  80.          throw new InternalError("this.getMaxBytesPerChar returned bad value");
  81.       } catch (UnknownCharacterException var13) {
  82.          throw new InternalError();
  83.       } finally {
  84.          this.subMode = var2;
  85.       }
  86.  
  87.       return var6;
  88.    }
  89.  
  90.    public abstract int flush(byte[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException;
  91.  
  92.    public int flushAny(byte[] var1, int var2, int var3) throws ConversionBufferFullException {
  93.       if (!this.subMode) {
  94.          throw new IllegalStateException("Substitution mode is not on");
  95.       } else {
  96.          try {
  97.             return this.flush(var1, var2, var3);
  98.          } catch (MalformedInputException var9) {
  99.             int var5 = this.subBytes.length;
  100.             byte[] var6 = this.subBytes;
  101.             int var7 = var2;
  102.             if (var2 + var5 > var3) {
  103.                throw new ConversionBufferFullException();
  104.             } else {
  105.                for(int var8 = 0; var8 < var5; ++var8) {
  106.                   var1[var7++] = var6[var8];
  107.                }
  108.  
  109.                this.byteOff = this.charOff = 0;
  110.                this.badInputLength = 0;
  111.                return var5;
  112.             }
  113.          }
  114.       }
  115.    }
  116.  
  117.    public abstract void reset();
  118.  
  119.    public boolean canConvert(char var1) {
  120.       try {
  121.          char[] var2 = new char[1];
  122.          byte[] var3 = new byte[3];
  123.          var2[0] = var1;
  124.          this.convert(var2, 0, 1, var3, 0, 3);
  125.          return true;
  126.       } catch (CharConversionException var4) {
  127.          return false;
  128.       }
  129.    }
  130.  
  131.    public abstract int getMaxBytesPerChar();
  132.  
  133.    public int getBadInputLength() {
  134.       return this.badInputLength;
  135.    }
  136.  
  137.    public int nextCharIndex() {
  138.       return this.charOff;
  139.    }
  140.  
  141.    public int nextByteIndex() {
  142.       return this.byteOff;
  143.    }
  144.  
  145.    public void setSubstitutionMode(boolean var1) {
  146.       this.subMode = var1;
  147.    }
  148.  
  149.    public void setSubstitutionBytes(byte[] var1) throws IllegalArgumentException {
  150.       if (var1.length > this.getMaxBytesPerChar()) {
  151.          throw new IllegalArgumentException();
  152.       } else {
  153.          this.subBytes = new byte[var1.length];
  154.          System.arraycopy(var1, 0, this.subBytes, 0, var1.length);
  155.       }
  156.    }
  157.  
  158.    public String toString() {
  159.       return "CharToByteConverter: " + this.getCharacterEncoding();
  160.    }
  161. }
  162.