[kaffe] CVS kaffe (kaz): libraries/javalib/kaffe/io/CharToByteEUC_JP.java,

Kaffe CVS Kaffe Mailing List <kaffe@kaffe.org>
Fri Dec 12 07:45:04 2003


PatchSet 4216 
Date: 2003/12/12 15:42:53
Author: kaz
Branch: HEAD
Tag: (none) 
Log:
2003-12-12  Ito Kazumitsu  <kaz@maczuka.gcd.org>

        * libraries/javalib/kaffe/io/CharToByteEUC_JP.java,
        libraries/javalib/kaffe/io/ByteToCharEUC_JP.java:
        Rewritten as an extension of CharToByteIconv and
        ByteToCharIconv.

        * kaffe/developers/README.EUC_JP:
        Added a comment on the change above.

        * libraries/javalib/kaffe/io/CharToByteEUC_JP.tbl,
        libraries/javalib/kaffe/io/ByteToCharEUC_JP.tbl:
        Deleted.

Members: 
	ChangeLog:1.1806->1.1807 
	developers/README.EUC_JP:1.1->1.2 
	libraries/javalib/kaffe/io/ByteToCharEUC_JP.java:1.2->1.3 
	libraries/javalib/kaffe/io/ByteToCharEUC_JP.tbl:1.1->1.2(DEAD) 
	libraries/javalib/kaffe/io/CharToByteEUC_JP.java:1.2->1.3 
	libraries/javalib/kaffe/io/CharToByteEUC_JP.tbl:1.1->1.2(DEAD) 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1806 kaffe/ChangeLog:1.1807
--- kaffe/ChangeLog:1.1806	Thu Dec 11 21:43:56 2003
+++ kaffe/ChangeLog	Fri Dec 12 15:42:53 2003
@@ -1,3 +1,17 @@
+2003-12-12  Ito Kazumitsu  <kaz@maczuka.gcd.org>
+
+	* libraries/javalib/kaffe/io/CharToByteEUC_JP.java,
+	libraries/javalib/kaffe/io/ByteToCharEUC_JP.java:
+	Rewritten as an extension of CharToByteIconv and
+	ByteToCharIconv.
+
+	* kaffe/developers/README.EUC_JP:
+	Added a comment on the change above.
+
+	* libraries/javalib/kaffe/io/CharToByteEUC_JP.tbl,
+	libraries/javalib/kaffe/io/ByteToCharEUC_JP.tbl:
+	Deleted.
+
 2003-12-11  Ito Kazumitsu  <kaz@maczuka.gcd.org>
 
 	* libraries/javalib/kaffe/io/CharToByteEUC_JP.java:
Index: kaffe/developers/README.EUC_JP
diff -u kaffe/developers/README.EUC_JP:1.1 kaffe/developers/README.EUC_JP:1.2
--- kaffe/developers/README.EUC_JP:1.1	Thu Nov 30 03:32:46 2000
+++ kaffe/developers/README.EUC_JP	Fri Dec 12 15:42:54 2003
@@ -1,3 +1,9 @@
+# This is a historical document.
+# Classes kaffe.io.ByteToCharEUC_JP and kaffe.io.CharToByteEUC_JP use
+# Classes kaffe.io.ByteToCharIconv and kaffe.io.CharToByteIconv
+# respectively and the tables ByteToCharEUC_JP.tbl and CharToByteEUC_JP.tbl
+# are no longer used.  (Dec 12, 2003, Ito Kazumitsu <kaz@maczuka.gcd.org>)
+
 Extended UNIX Code (EUC) Encoding Scheme
 
 The EUC encoding scheme defines a set of encoding rules that can
Index: kaffe/libraries/javalib/kaffe/io/ByteToCharEUC_JP.java
diff -u kaffe/libraries/javalib/kaffe/io/ByteToCharEUC_JP.java:1.2 kaffe/libraries/javalib/kaffe/io/ByteToCharEUC_JP.java:1.3
--- kaffe/libraries/javalib/kaffe/io/ByteToCharEUC_JP.java:1.2	Sat Dec  2 02:10:18 2000
+++ kaffe/libraries/javalib/kaffe/io/ByteToCharEUC_JP.java	Fri Dec 12 15:42:54 2003
@@ -10,165 +10,21 @@
  * Byte to Char converter for EUC-JP encoding.
  * See also class EncodeEUC_JP in developers directory.
  *
- * @author Edouard G. Parmelan <egp@free.fr>
+ * @author Ito Kazumitsu <kaz@maczuka.gcd.org>
  */
 
-package kaffe.io;
-
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-public class ByteToCharEUC_JP extends ByteToCharConverter {
-    // Set this to false if you want handle exceptions defined in
-    // JIS-X-201 for US-ASCII range (0x5C '~' map to overline and 0x7E
-    // '\' to yen).  You must use the same value in classes
-    // kaffe.io.ByteToCharEUC_JP and kaffe.io.CharToByteEUC_JP.
-    private final static boolean US_ASCII = true;
-    
-    static boolean tableLoaded;
-    static String encodingRoot;
-
-    // Code set 1 (JIS X 0208): 0xA1A1-0xFEFE
-    static char[] cs1table;
-    static char[] uni1table;
-
-    // Code set 2 (half-width katakana): 0x8EA1-0x8EDF
-    static byte[] cs2table;
-    static char[] uni2table;
+/*
+ * This is only a wrapper of ByteToCharIconv for EUC-JP.
+ * The name "EUC-JP" cannot be used within a Java class name.
+ * So we use "EUC_JP" for "EUC-JP".
+ */ 
 
-    // Code set 3 (JIS X 0212-1990): 0x8FA1A1-0x8FFEFE
-    static char[] cs3table;
-    static char[] uni3table;
-
-    static {
-	tableLoaded = false;
-	encodingRoot = "kaffe.io";
-    }
-
-
-    public ByteToCharEUC_JP() {
-    }
-
-    public int convert(byte[] from, int fpos, int flen, char[] to, int tpos, int tlen ) {
-	if (!tableLoaded) {
-	    loadTable();
-	}
-	int o = tpos;
-	int oe = tpos + tlen;
-	int i = fpos;
-	int ie = fpos + flen;
-
-	for (; i < ie && o < oe; i++) {
-	    int data = from[i] & 0xFF;
-	    if ((data & 0x80) == 0) {
-		// Code set 0 (ASCII or JIS X 0201-1976 Roman): 0x21-0x7E
-		if (!US_ASCII) {
-		    // handle exceptions
-		    // 0x5C -> U+A5 YEN SIGN
-		    // 0x7E -> U+203E OVERLINE
-		    if (data == 0x5C) {
-			data = 0xA5;
-		    }
-		    else if (data == 0x7E) {
-			data = 0x203E;
-		    }
-		}
-		to[o++] = (char)data;
-	    }
-	    else if (data == 0x8E) {
-		// Code set 2 (half-width katakana): 0x8EA1-0x8EDF
-		// If we don't have enough data, bail.
-		if (i + 1 >= ie) {
-		    break;
-		}
-		i++;
-		data = from[i] & 0xFF;
-		int m = Arrays.binarySearch (cs2table, (byte)data);
-		if (m >= 0) {
-		    to[o++] = uni2table[m];
-		}
-		else {
-		    to[o++] = 0; // Error
-		}
-	    }
-	    else if (data == 0x8F) {
-		// Code set 3 (JIS X 0212-1990): 0x8FA1A1-0x8FFEFE
-		// If we don't have enough data, bail.
-		if (i + 2 >= ie) {
-		    break;
-		}
-		data = ((from[i + 1] & 0xFF) << 8) + (from[i + 2] & 0xFF);
-		i += 2;
-		int m = Arrays.binarySearch (cs3table, (char)data);
-		if (m >= 0) {
-		    to[o++] = uni3table[m];
-		}
-		else {
-		    to[o++] = 0; // Error
-		}
-	    }
-	    else {
-		// Code set 1 (JIS X 0208): 0xA1A1-0xFEFE
-		// If we don't have enough data, bail.
-		if (i + 1 >= ie) {
-		    break;
-		}
-		data = ((from[i] & 0xFF) << 8) + (from[i + 1] & 0xFF);
-		i += 1;
-		int m = Arrays.binarySearch (cs1table, (char)data);
-		if (m >= 0) {
-		    to[o++] = uni1table[m];
-		}
-		else {
-		    to[o++] = 0; // Error
-		}
-	    }
-	}
-
-	if (ie > i) {
-	    carry(from, i, ie - i);
-	}
+package kaffe.io;
 
-	return (o - tpos);
-    }
+public class ByteToCharEUC_JP extends ByteToCharIconv {
 
-    public int getNumberOfChars (byte[] from, int fpos, int flen ) {
-	return flen;
+    public ByteToCharEUC_JP() throws java.io.UnsupportedEncodingException {
+        super("EUC-JP");
     }
 
-    private static void loadTable() {
-	try {
-	    String tablename = encodingRoot + ".ByteToCharEUC_JP";
-	    InputStream in = ClassLoader.getSystemResourceAsStream(tablename.replace('.', '/') + ".tbl");
-	    if (in != null) {
-		ObjectInputStream oin = new ObjectInputStream(in);
-		// Code set 1 (JIS X 0208): 0xA1A1-0xFEFE
-		cs1table = (char[])(oin.readObject());
-		uni1table = (char[])(oin.readObject());
-
-		// Code set 2 (half-width katakana): 0x8EA1-0x8EDF
-		cs2table = (byte[])(oin.readObject());
-		uni2table = (char[])(oin.readObject());
-
-		// Code set 3 (JIS X 0212-1990): 0x8FA1A1-0x8FFEFE
-		cs3table = (char[])(oin.readObject());
-		uni3table = (char[])(oin.readObject());
-
-		tableLoaded = true;
-	    }
-	} catch (Exception e) {
-	    System.err.println("ByteToCharEUC_JP.tbl could not be loaded" + e);
-	}
-	if(!tableLoaded) {
-	    cs1table = new char[0];
-	    uni1table = new char[0];
-	    cs2table = new byte[0];
-	    uni2table = new char[0];
-	    cs3table = new char[0];
-	    uni3table = new char[0];
-	    tableLoaded = true;
-	    System.err.println("CharToByteEUC_JP.tbl could not be loaded");
-	}
-    }
 }
===================================================================
Checking out kaffe/libraries/javalib/kaffe/io/ByteToCharEUC_JP.tbl
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/kaffe/io/Attic/ByteToCharEUC_JP.tbl,v
VERS: 1.1
***************
cvs [checkout aborted]: received broken pipe signal
Binary files - and /dev/null differ
Index: kaffe/libraries/javalib/kaffe/io/CharToByteEUC_JP.java
diff -u kaffe/libraries/javalib/kaffe/io/CharToByteEUC_JP.java:1.2 kaffe/libraries/javalib/kaffe/io/CharToByteEUC_JP.java:1.3
--- kaffe/libraries/javalib/kaffe/io/CharToByteEUC_JP.java:1.2	Thu Dec 11 21:43:57 2003
+++ kaffe/libraries/javalib/kaffe/io/CharToByteEUC_JP.java	Fri Dec 12 15:42:55 2003
@@ -8,143 +8,17 @@
  * of this file.
  *
  * Char to Byte converter for EUC-JP encoding.
- * See also class EncodeEUC_JP in developers directory.
  *
  * @author Ito Kazumitsu <kaz@maczuka.gcd.org>
  *
- * Modified by Edouard G. Parmelan <egp@free.fr> to add comments and
- * to handle exceptions in Code set 0.
  */
 
 package kaffe.io;
 
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
+public class CharToByteEUC_JP extends CharToByteIconv {
 
-public class CharToByteEUC_JP extends CharToByteConverter {
-    // Set this to false if you want handle exceptions defined in
-    // JIS-X-201 for US-ASCII range (0x5C '~' map to overline and 0x7E
-    // '\' to yen).  You must use the same value in classes
-    // kaffe.io.ByteToCharEUC_JP and kaffe.io.CharToByteEUC_JP.
-    private final static boolean US_ASCII = true;
-
-    static boolean tableLoaded;
-    static char[] utable;
-    static byte[] e1table;
-    static byte[] e2table;
-    static String encodingRoot;
-
-    static {
-	tableLoaded = false;
-	encodingRoot = "kaffe.io";
-    }
-
-    public CharToByteEUC_JP() {
-    }
-
-    public int convert (char[] from, int fpos, int flen, byte[] to, int tpos, int tlen ) {
-	if (!tableLoaded) {
-	    loadTable();
-	}
-	int o = tpos;
-	int oe = tpos + tlen;
-	int i = fpos;
-	int ie = fpos + flen;
-
-	for (; i < ie; i++) {
-	    char chr = from[i];
-	    if (chr < 0x80) {
-		// Code set 0 (ASCII or JIS X 0201-1976 Roman): 0x21-0x7E
-		if (o >= oe) {
-		    break;
-		}
-		if (!US_ASCII) {
-		    // handled exceptions
-		    // 0x5C -> U+A5 YEN SIGN
-		    // 0x7E -> U+203E OVERLINE
-		    if (chr == 0xA5) {
-			chr = 0x5C;
-		    }
-		}
-		    
-		if (o >= oe) {
-		    break;
-		}
-		to[o++] = (byte)chr;
-		continue;
-	    }
-	    if (!US_ASCII && (chr == 0x203E)) {
-		if (o >= oe) {
-		    break;
-		}
-		to[o++] = (byte)0x7E;
-		continue;
-	    }
-	    
-	    int m = Arrays.binarySearch(utable, chr);
-	    if (m >= 0) {
-		byte e1 = e1table[m];
-		byte e2 = e2table[m];
-		if (e1 > 0) {
-		    // Code set 3 (JIS X 0212-1990): 0x8FA1A1-0x8FFEFE
-		    if (o + 2 >= oe) {
-			break;
-		    }
-		    to[o++] = (byte)0x8f;
-		    to[o++] = (byte)((int)e1 | 0x80);
-		    to[o++] = (byte)((int)e2 | 0x80);
-		}
-		else {
-		    //  Code set 1 (JIS X 0208): 0xA1A1-0xFEFE
-		    //  Code set 2 (half-width katakana): 0x8EA1-0x8EDF
-		    if (o + 1 >= oe) {
-			break;
-		    }
-		    to[o++] = e1;
-		    to[o++] = e2;
-		}
-	    }
-	    else {
-		if (o >= oe) {
-		    break;
-		}
-		to[o++] = (byte)'?'; // Error
-	    }
-	}
-
-	// Carry anything left.
-	if (ie > i) {
-	    carry(from, i, ie - i);
-	}
-
-	return (o - tpos);
+    public CharToByteEUC_JP() throws java.io.UnsupportedEncodingException {
+        super("EUC-JP");
     }
 
-    public int getNumberOfBytes ( char[] from, int fpos, int flen ) {
-	return flen; // This may return something wrong, but I do not care.
-    }
-
-    private static void loadTable() {
-	try {
-	    String tablename = encodingRoot + ".CharToByteEUC_JP";
-	    InputStream in = ClassLoader.getSystemResourceAsStream(tablename.replace('.', '/') + ".tbl");
-	    if (in != null) {
-		ObjectInputStream oin = new ObjectInputStream(in);
-		utable = (char[])(oin.readObject());
-		e1table = (byte[])(oin.readObject());
-		e2table = (byte[])(oin.readObject());
-		tableLoaded = true;
-	    }
-	} catch (Exception e) {
-	    System.err.println("CharToByteEUC_JP.tbl could not be loaded" + e);
-	}
-	if(!tableLoaded) {
-	    utable = new char[0];
-	    e1table = new byte[0];
-	    e2table = new byte[0];
-	    tableLoaded = true;
-	    System.err.println("CharToByteEUC_JP.tbl could not be loaded");
-	}
-    }
 }
===================================================================
Checking out kaffe/libraries/javalib/kaffe/io/CharToByteEUC_JP.tbl
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/kaffe/io/Attic/CharToByteEUC_JP.tbl,v
VERS: 1.1
***************
cvs [checkout aborted]: received broken pipe signal
Binary files - and /dev/null differ