diff options
author | Per Bothner <per@bothner.com> | 2004-03-19 16:24:49 -0800 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 2004-03-19 16:24:49 -0800 |
commit | 0fca95f56f5e884f028446f1f931f83f1f00012f (patch) | |
tree | 66bf9bc23927e73393e9fb69545698a9b5149acb /libjava/gnu | |
parent | 4546865e5b18963ce661d5053a6b4b7b15adfe7d (diff) | |
download | gcc-0fca95f56f5e884f028446f1f931f83f1f00012f.zip gcc-0fca95f56f5e884f028446f1f931f83f1f00012f.tar.gz gcc-0fca95f56f5e884f028446f1f931f83f1f00012f.tar.bz2 |
Input_UnicodeBig.java: New class..
* gnu/gcj/convert/Input_UnicodeBig.java: New class..
* gnu/gcj/convert/Input_UnicodeLittle.java: New class.
* Makefile.am: Update accordingly.
* gnu/gcj/convert/IOConverter.java: Define "utf-16le" and "utf16be"
as aliases for UnicodeLittle and UnicodeBig.
From-SVN: r79723
Diffstat (limited to 'libjava/gnu')
-rw-r--r-- | libjava/gnu/gcj/convert/IOConverter.java | 4 | ||||
-rw-r--r-- | libjava/gnu/gcj/convert/Input_UnicodeBig.java | 49 | ||||
-rw-r--r-- | libjava/gnu/gcj/convert/Input_UnicodeLittle.java | 49 |
3 files changed, 101 insertions, 1 deletions
diff --git a/libjava/gnu/gcj/convert/IOConverter.java b/libjava/gnu/gcj/convert/IOConverter.java index 0f869c6..ba3260a 100644 --- a/libjava/gnu/gcj/convert/IOConverter.java +++ b/libjava/gnu/gcj/convert/IOConverter.java @@ -63,7 +63,9 @@ public abstract class IOConverter hash.put ("extended_unix_code_packed_format_for_japanese", "EUCJIS"); hash.put ("cseucpkdfmtjapanese", "EUCJIS"); hash.put ("euc-jp", "EUCJIS"); - + hash.put ("euc-jp", "EUCJIS"); + hash.put ("utf-16le", "UnicodeLittle"); + hash.put ("utf-16be", "UnicodeBig"); iconv_byte_swap = iconv_init (); } diff --git a/libjava/gnu/gcj/convert/Input_UnicodeBig.java b/libjava/gnu/gcj/convert/Input_UnicodeBig.java new file mode 100644 index 0000000..c8da2b9 --- /dev/null +++ b/libjava/gnu/gcj/convert/Input_UnicodeBig.java @@ -0,0 +1,49 @@ +/* Copyright (C) 2004 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package gnu.gcj.convert; + +public class Input_UnicodeBig extends BytesToUnicode +{ + /** 0, 8, or 16 bits of a partially constructed character. */ + char partial; + /** How many bytes of partial are valid. */ + int partial_count; + + public String getName() { return "UnicodeBig"; } + + public int read (char[] outbuffer, int outpos, int count) + { + int origcount = count; + for (;;) + { + if (partial_count == 2) + { + if (count == 0) + break; + if (partial == 0xFEFF) + ; // drop byte order mark + // else if (partial >= 0xFFFe) ERROR; + else + outbuffer[outpos++] = partial; + count--; + partial_count = 0; + partial = 0; + } + else if (inpos >= inlength) + break; + else + { + int b = inbuffer[inpos++] & 0xFF; + partial = (char) (((int) partial << 8) + b); + partial_count++; + } + } + return origcount - count; + } +} diff --git a/libjava/gnu/gcj/convert/Input_UnicodeLittle.java b/libjava/gnu/gcj/convert/Input_UnicodeLittle.java new file mode 100644 index 0000000..89d9c53 --- /dev/null +++ b/libjava/gnu/gcj/convert/Input_UnicodeLittle.java @@ -0,0 +1,49 @@ +/* Copyright (C) 2004 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package gnu.gcj.convert; + +public class Input_UnicodeLittle extends BytesToUnicode +{ + /** 0, 8, or 16 bits of a partially constructed character. */ + char partial; + /** How many bytes of partial are valid. */ + int partial_count; + + public String getName() { return "UnicodeLittle"; } + + public int read (char[] outbuffer, int outpos, int count) + { + int origcount = count; + for (;;) + { + if (partial_count == 2) + { + if (count == 0) + break; + if (partial == 0xFEFF) + ; // drop byte order mark + // else if (partial >= 0xFFFe) ERROR; + else + outbuffer[outpos++] = partial; + count--; + partial_count = 0; + partial = 0; + } + else if (inpos >= inlength) + break; + else + { + int b = inbuffer[inpos++] & 0xFF; + partial = (char) (partial | (b << (8 * partial_count))); + partial_count++; + } + } + return origcount - count; + } +} |