home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / io / CharToByteConverter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.5 KB  |  143 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.    private static String pkgString = System.getProperty("file.encoding.pkg");
  13.    private static Class defClassCache;
  14.  
  15.    private static Class getConverterClass(String var0) throws ClassNotFoundException {
  16.       Object var1 = null;
  17.       String var2 = CharacterEncoding.aliasName(var0);
  18.       if (var2 == null) {
  19.          var2 = var0;
  20.       }
  21.  
  22.       return Class.forName(pkgString + ".CharToByte" + var2);
  23.    }
  24.  
  25.    public static CharToByteConverter getDefault() {
  26.       if (defClassCache == null) {
  27.          return new CharToByteDefault();
  28.       } else {
  29.          try {
  30.             return (CharToByteConverter)defClassCache.newInstance();
  31.          } catch (InstantiationException var0) {
  32.             return new CharToByteDefault();
  33.          } catch (IllegalAccessException var1) {
  34.             return new CharToByteDefault();
  35.          }
  36.       }
  37.    }
  38.  
  39.    public static CharToByteConverter getConverter(String var0) throws UnsupportedEncodingException {
  40.       CharToByteConverter var2 = null;
  41.  
  42.       Class var1;
  43.       try {
  44.          var1 = getConverterClass(var0);
  45.       } catch (ClassNotFoundException var5) {
  46.          throw new UnsupportedEncodingException();
  47.       }
  48.  
  49.       try {
  50.          var2 = (CharToByteConverter)var1.newInstance();
  51.          return var2;
  52.       } catch (IllegalAccessException var3) {
  53.          throw new UnsupportedEncodingException();
  54.       } catch (InstantiationException var4) {
  55.          throw new UnsupportedEncodingException();
  56.       }
  57.    }
  58.  
  59.    public abstract String getCharacterEncoding();
  60.  
  61.    public abstract int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException;
  62.  
  63.    public byte[] convertAll(char[] var1) throws MalformedInputException {
  64.       this.reset();
  65.       boolean var2 = this.subMode;
  66.       this.subMode = true;
  67.       byte[] var3 = new byte[this.getMaxBytesPerChar() * var1.length];
  68.  
  69.       byte[] var4;
  70.       try {
  71.          int var7 = this.convert(var1, 0, var1.length, var3, 0, var3.length);
  72.          var7 += this.flush(var3, this.nextByteIndex(), var3.length);
  73.          byte[] var8 = new byte[var7];
  74.          System.arraycopy(var3, 0, var8, 0, var7);
  75.          var4 = var8;
  76.       } catch (ConversionBufferFullException var12) {
  77.          throw new InternalError("this.getMaxBytesPerChar returned bad value");
  78.       } catch (UnknownCharacterException var13) {
  79.          throw new InternalError();
  80.       } finally {
  81.          this.subMode = var2;
  82.       }
  83.  
  84.       return var4;
  85.    }
  86.  
  87.    public abstract int flush(byte[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException;
  88.  
  89.    public abstract void reset();
  90.  
  91.    public boolean canConvert(char var1) {
  92.       try {
  93.          char[] var2 = new char[1];
  94.          byte[] var3 = new byte[3];
  95.          var2[0] = var1;
  96.          this.convert(var2, 0, 1, var3, 0, 3);
  97.          return true;
  98.       } catch (CharConversionException var4) {
  99.          return false;
  100.       }
  101.    }
  102.  
  103.    public abstract int getMaxBytesPerChar();
  104.  
  105.    public int getBadInputLength() {
  106.       return this.badInputLength;
  107.    }
  108.  
  109.    public int nextCharIndex() {
  110.       return this.charOff;
  111.    }
  112.  
  113.    public int nextByteIndex() {
  114.       return this.byteOff;
  115.    }
  116.  
  117.    public void setSubstitutionMode(boolean var1) {
  118.       this.subMode = var1;
  119.    }
  120.  
  121.    public void setSubstitutionBytes(byte[] var1) throws IllegalArgumentException {
  122.       if (var1.length > this.getMaxBytesPerChar()) {
  123.          throw new IllegalArgumentException();
  124.       } else {
  125.          this.subBytes = new byte[var1.length];
  126.          System.arraycopy(var1, 0, this.subBytes, 0, var1.length);
  127.       }
  128.    }
  129.  
  130.    public String toString() {
  131.       return "CharToByteConverter: " + this.getCharacterEncoding();
  132.    }
  133.  
  134.    static {
  135.       try {
  136.          String var0 = System.getProperty("file.encoding", "8859_1");
  137.          defClassCache = getConverterClass(var0);
  138.       } catch (ClassNotFoundException var1) {
  139.          defClassCache = null;
  140.       }
  141.    }
  142. }
  143.