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

  1. package sun.io;
  2.  
  3. public class CharToByteUnicode extends CharToByteConverter {
  4.    static final char BYTE_ORDER_MARK = '\ufeff';
  5.    protected boolean marked = false;
  6.    static final int UNKNOWN = 0;
  7.    static final int BIG = 1;
  8.    static final int LITTLE = 2;
  9.    protected int byteOrder = 0;
  10.  
  11.    public CharToByteUnicode() {
  12.       String var1 = System.getProperty("unicode.encoding", "UnicodeBig");
  13.       if (var1.equals("UnicodeBig")) {
  14.          this.byteOrder = 1;
  15.       } else if (var1.equals("UnicodeLittle")) {
  16.          this.byteOrder = 2;
  17.       } else {
  18.          this.byteOrder = 1;
  19.       }
  20.    }
  21.  
  22.    public String getCharacterEncoding() {
  23.       switch (this.byteOrder) {
  24.          case 1:
  25.             return "UnicodeBig";
  26.          case 2:
  27.             return "UnicodeLittle";
  28.          default:
  29.             return "UnicodeUnknown";
  30.       }
  31.    }
  32.  
  33.    public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws ConversionBufferFullException, MalformedInputException {
  34.       super.charOff = var2;
  35.       super.byteOff = var5;
  36.       if (var2 >= var3) {
  37.          return 0;
  38.       } else {
  39.          int var7 = var2;
  40.          int var11 = var5;
  41.          int var9 = var6 - 2;
  42.          if (!this.marked) {
  43.             if (var5 > var9) {
  44.                throw new ConversionBufferFullException();
  45.             }
  46.  
  47.             if (this.byteOrder == 1) {
  48.                var11 = var5 + 1;
  49.                var4[var5] = -2;
  50.                var4[var11++] = -1;
  51.             } else {
  52.                var11 = var5 + 1;
  53.                var4[var5] = -1;
  54.                var4[var11++] = -2;
  55.             }
  56.  
  57.             this.marked = true;
  58.          }
  59.  
  60.          if (this.byteOrder == 1) {
  61.             while(var7 < var3) {
  62.                if (var11 > var9) {
  63.                   super.charOff = var7;
  64.                   super.byteOff = var11;
  65.                   throw new ConversionBufferFullException();
  66.                }
  67.  
  68.                char var15 = var1[var7++];
  69.                var4[var11++] = (byte)(var15 >> 8);
  70.                var4[var11++] = (byte)(var15 & 255);
  71.             }
  72.          } else {
  73.             while(var7 < var3) {
  74.                if (var11 > var9) {
  75.                   super.charOff = var7;
  76.                   super.byteOff = var11;
  77.                   throw new ConversionBufferFullException();
  78.                }
  79.  
  80.                char var10 = var1[var7++];
  81.                var4[var11++] = (byte)(var10 & 255);
  82.                var4[var11++] = (byte)(var10 >> 8);
  83.             }
  84.          }
  85.  
  86.          super.charOff = var7;
  87.          super.byteOff = var11;
  88.          return var11 - var5;
  89.       }
  90.    }
  91.  
  92.    public int flush(byte[] var1, int var2, int var3) {
  93.       super.byteOff = super.charOff = 0;
  94.       return 0;
  95.    }
  96.  
  97.    public void reset() {
  98.       super.byteOff = super.charOff = 0;
  99.    }
  100.  
  101.    public int getMaxBytesPerChar() {
  102.       return 4;
  103.    }
  104. }
  105.