diff options
author | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-20 00:24:49 +0000 |
---|---|---|
committer | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-20 00:24:49 +0000 |
commit | 5a2ce0e9a4e814b288ccb0a2a64d37e20461706c (patch) | |
tree | 66bf9bc23927e73393e9fb69545698a9b5149acb /libjava/gnu/gcj | |
parent | 7ef1439905f453c183dc9ddeac220371a1a2cfc1 (diff) | |
download | gcc-5a2ce0e9a4e814b288ccb0a2a64d37e20461706c.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79723 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/gcj')
-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 0f869c6fd9c..ba3260ac17e 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 00000000000..c8da2b9976f --- /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 00000000000..89d9c53cd56 --- /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; + } +} |