home *** CD-ROM | disk | FTP | other *** search
- package sun.io;
-
- public class CharToByteUnicode extends CharToByteConverter {
- static final char BYTE_ORDER_MARK = '\ufeff';
- protected boolean marked = false;
- static final int UNKNOWN = 0;
- static final int BIG = 1;
- static final int LITTLE = 2;
- protected int byteOrder = 0;
-
- public CharToByteUnicode() {
- String var1 = System.getProperty("unicode.encoding", "UnicodeBig");
- if (var1.equals("UnicodeBig")) {
- this.byteOrder = 1;
- } else if (var1.equals("UnicodeLittle")) {
- this.byteOrder = 2;
- } else {
- this.byteOrder = 1;
- }
- }
-
- public String getCharacterEncoding() {
- switch (this.byteOrder) {
- case 1:
- return "UnicodeBig";
- case 2:
- return "UnicodeLittle";
- default:
- return "UnicodeUnknown";
- }
- }
-
- public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws ConversionBufferFullException, MalformedInputException {
- super.charOff = var2;
- super.byteOff = var5;
- if (var2 >= var3) {
- return 0;
- } else {
- int var7 = var2;
- int var11 = var5;
- int var9 = var6 - 2;
- if (!this.marked) {
- if (var5 > var9) {
- throw new ConversionBufferFullException();
- }
-
- if (this.byteOrder == 1) {
- var11 = var5 + 1;
- var4[var5] = -2;
- var4[var11++] = -1;
- } else {
- var11 = var5 + 1;
- var4[var5] = -1;
- var4[var11++] = -2;
- }
-
- this.marked = true;
- }
-
- if (this.byteOrder == 1) {
- while(var7 < var3) {
- if (var11 > var9) {
- super.charOff = var7;
- super.byteOff = var11;
- throw new ConversionBufferFullException();
- }
-
- char var15 = var1[var7++];
- var4[var11++] = (byte)(var15 >> 8);
- var4[var11++] = (byte)(var15 & 255);
- }
- } else {
- while(var7 < var3) {
- if (var11 > var9) {
- super.charOff = var7;
- super.byteOff = var11;
- throw new ConversionBufferFullException();
- }
-
- char var10 = var1[var7++];
- var4[var11++] = (byte)(var10 & 255);
- var4[var11++] = (byte)(var10 >> 8);
- }
- }
-
- super.charOff = var7;
- super.byteOff = var11;
- return var11 - var5;
- }
- }
-
- public int flush(byte[] var1, int var2, int var3) {
- super.byteOff = super.charOff = 0;
- return 0;
- }
-
- public void reset() {
- super.byteOff = super.charOff = 0;
- }
-
- public int getMaxBytesPerChar() {
- return 4;
- }
- }
-