home *** CD-ROM | disk | FTP | other *** search
Wrap
package sun.io; import java.io.CharConversionException; import java.io.UnsupportedEncodingException; public abstract class CharToByteConverter { protected boolean subMode = true; protected byte[] subBytes = new byte[]{63}; protected int charOff; protected int byteOff; protected int badInputLength; private static String pkgString; public static CharToByteConverter getDefault() { SecurityManager.enablePrivilege("UniversalPropertyRead"); String var0 = System.getProperty("file.encoding", "8859_1"); SecurityManager.revertPrivilege(); try { return getConverter(var0); } catch (UnsupportedEncodingException var1) { return new CharToByteDefault(); } } public static CharToByteConverter getConverter(String var0) throws UnsupportedEncodingException { String var1 = CharacterEncoding.aliasName(var0); if (var1 == null) { var1 = var0; } Class var2; try { var2 = Class.forName(pkgString + ".CharToByte" + var1); } catch (ClassNotFoundException var6) { throw new UnsupportedEncodingException(); } CharToByteConverter var3 = null; try { var3 = (CharToByteConverter)var2.newInstance(); return var3; } catch (IllegalAccessException var4) { throw new UnsupportedEncodingException(); } catch (InstantiationException var5) { throw new UnsupportedEncodingException(); } } public abstract String getCharacterEncoding(); public abstract int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException; public byte[] convertAll(char[] var1) throws MalformedInputException { this.reset(); boolean var2 = this.subMode; this.subMode = true; byte[] var3 = new byte[this.getMaxBytesPerChar() * var1.length]; byte[] var4; try { int var7 = this.convert(var1, 0, var1.length, var3, 0, var3.length); var7 += this.flush(var3, this.nextByteIndex(), var3.length); byte[] var8 = new byte[var7]; System.arraycopy(var3, 0, var8, 0, var7); var4 = var8; } catch (ConversionBufferFullException var12) { throw new InternalError("this.getMaxBytesPerChar returned bad value"); } catch (UnknownCharacterException var13) { throw new InternalError(); } finally { this.subMode = var2; } return var4; } public abstract int flush(byte[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException; public abstract void reset(); public boolean canConvert(char var1) { try { char[] var2 = new char[1]; byte[] var3 = new byte[3]; var2[0] = var1; this.convert(var2, 0, 1, var3, 0, 3); return true; } catch (CharConversionException var4) { return false; } } public abstract int getMaxBytesPerChar(); public int getBadInputLength() { return this.badInputLength; } public int nextCharIndex() { return this.charOff; } public int nextByteIndex() { return this.byteOff; } public void setSubstitutionMode(boolean var1) { this.subMode = var1; } public void setSubstitutionBytes(byte[] var1) throws IllegalArgumentException { if (var1.length > this.getMaxBytesPerChar()) { throw new IllegalArgumentException(); } else { this.subBytes = new byte[var1.length]; System.arraycopy(var1, 0, this.subBytes, 0, var1.length); } } public String toString() { return "CharToByteConverter: " + this.getCharacterEncoding(); } static { SecurityManager.enablePrivilege("UniversalPropertyRead"); pkgString = System.getProperty("file.encoding.pkg"); SecurityManager.revertPrivilege(); } }