home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / io / CharToByteUnicode.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.7 KB  |  116 lines

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