Input_UnicodeBig.java: New class..
authorPer Bothner <per@bothner.com>
Sat, 20 Mar 2004 00:24:49 +0000 (16:24 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Sat, 20 Mar 2004 00:24:49 +0000 (16:24 -0800)
* 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

libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/gnu/gcj/convert/IOConverter.java
libjava/gnu/gcj/convert/Input_UnicodeBig.java [new file with mode: 0644]
libjava/gnu/gcj/convert/Input_UnicodeLittle.java [new file with mode: 0644]

index 27fbd60..1b96246 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-19  Per Bothner  <per@bothner.com>
+
+       * 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.
+
 2004-03-20  Mark Wielaard  <mark@klomp.org>
 
        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c
index a5bef0a..254c9ca 100644 (file)
@@ -882,6 +882,8 @@ gnu/gcj/convert/Input_ASCII.java \
 gnu/gcj/convert/Input_EUCJIS.java \
 gnu/gcj/convert/Input_JavaSrc.java \
 gnu/gcj/convert/Input_SJIS.java \
+gnu/gcj/convert/Input_UnicodeBig.java \
+gnu/gcj/convert/Input_UnicodeLittle.java \
 gnu/gcj/convert/Input_UTF8.java        \
 gnu/gcj/convert/Input_iconv.java \
 gnu/gcj/convert/IOConverter.java \
index cf0fc0f..e664a10 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -565,6 +565,8 @@ gnu/gcj/convert/Input_ASCII.java \
 gnu/gcj/convert/Input_EUCJIS.java \
 gnu/gcj/convert/Input_JavaSrc.java \
 gnu/gcj/convert/Input_SJIS.java \
+gnu/gcj/convert/Input_UnicodeBig.java \
+gnu/gcj/convert/Input_UnicodeLittle.java \
 gnu/gcj/convert/Input_UTF8.java        \
 gnu/gcj/convert/Input_iconv.java \
 gnu/gcj/convert/IOConverter.java \
@@ -3007,6 +3009,8 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/gnu/gcj/convert/Input_EUCJIS.P \
 .deps/gnu/gcj/convert/Input_JavaSrc.P \
 .deps/gnu/gcj/convert/Input_SJIS.P .deps/gnu/gcj/convert/Input_UTF8.P \
+.deps/gnu/gcj/convert/Input_UnicodeBig.P \
+.deps/gnu/gcj/convert/Input_UnicodeLittle.P \
 .deps/gnu/gcj/convert/Input_iconv.P \
 .deps/gnu/gcj/convert/JIS0208_to_Unicode.P \
 .deps/gnu/gcj/convert/JIS0212_to_Unicode.P \
@@ -4977,7 +4981,7 @@ maintainer-clean-recursive:
        dot_seen=no; \
        rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
          rev="$$subdir $$rev"; \
-         test "$$subdir" != "." || dot_seen=yes; \
+         test "$$subdir" = "." && dot_seen=yes; \
        done; \
        test "$$dot_seen" = "no" && rev=". $$rev"; \
        target=`echo $@ | sed s/-recursive//`; \
@@ -5019,7 +5023,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
          awk '    { files[$$0] = 1; } \
               END { for (i in files) print i; }'`; \
        test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-         || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags  $$unique $(LISP))
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
index 0f869c6..ba3260a 100644 (file)
@@ -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 (file)
index 0000000..c8da2b9
--- /dev/null
@@ -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 (file)
index 0000000..89d9c53
--- /dev/null
@@ -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;
+  }
+}