diff options
author | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-16 17:25:08 +0000 |
---|---|---|
committer | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-16 17:25:08 +0000 |
commit | abcb7f6e0012f9653e5487b91ff4f52dd7a88481 (patch) | |
tree | cddd6c89fd51beb6c0917d09795fe8ba7e6fab1e /libjava/gnu/gcj/convert/Input_JavaSrc.java | |
parent | 491d315e7eb1b661167101a35a5586e0b3034818 (diff) | |
download | gcc-abcb7f6e0012f9653e5487b91ff4f52dd7a88481.tar.gz |
�
* gnu/gcj/convert/JIS0201.h: New file, generated from Unicode table.
* gnu/gcj/convert/Input_JavaSrc.java: New BytesToUnicode class.
* gnu/gcj/convert/Input_SJIS.java: New BytesToUnicode class.
* gnu/gcj/convert/Output_EUCJIS.java: New UnicodeToBytes class.
* gnu/gcj/convert/Output_SJIS.java: New UnicodeToBytes class.
* gnu/gcj/convert/natInput_EUCJIS.cc: New file.
* gnu/gcj/convert/natInput_SJIS.cc: New file.
* gnu/gcj/convert/natOutput_EUCJIS.cc: New file.
* gnu/gcj/convert/natOutput_SJIS.cc: New file.
* gnu/gcj/convert/make-trie.c: New file: functions to make a trie.
* gnu/gcj/convert/gen-from-JIS.c: Invoke make-trie for output.
* gnu/gcj/convert/Unicode_to_JIS.cc: New generated trie table.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26502 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/gcj/convert/Input_JavaSrc.java')
-rw-r--r-- | libjava/gnu/gcj/convert/Input_JavaSrc.java | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/libjava/gnu/gcj/convert/Input_JavaSrc.java b/libjava/gnu/gcj/convert/Input_JavaSrc.java new file mode 100644 index 00000000000..fc2107a591b --- /dev/null +++ b/libjava/gnu/gcj/convert/Input_JavaSrc.java @@ -0,0 +1,89 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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; + +/** + * Convert Ascii with \ u XXXX-escapes to Unicode. + * @author Per Bothner <bothner@cygnus.com> + * @date April 1999. + */ + +public class Input_JavaSrc extends BytesToUnicode +{ + public String getName() { return "JavaSrc"; } + + // 0: normal + // 1: seen '\\' + // 2: seen '\\' and 'u' + // 3: seen '\\' and need to emit value. + // 4, 5, 6, 7: seen '\\u', 'u' and (state-3) hex digits. + int state = 0; + + int value; + + public int read (char[] outbuffer, int outpos, int outlength) + { + int origpos = outpos; + for (;;) + { + if (inpos >= inlength) + break; + if (outpos >= outlength) + break; + char b = (char) (inbuffer[inpos++] & 0xFF); + switch (state) + { + case 0: + if (b == '\\') + { + state = 1; + continue; + } + break; + case 1: + if (b == 'u') + { + state = 2; + continue; + } + if (b != '\\') + { + value = b; + b = '\\'; + state = 3; + } + break; + case 3: + b = (char) value; + break; + default: // case 4: case 5: case 6: case 7: + int digit = Character.digit(b, 16); + if (digit < 0) + { + b = '\uFFFD'; + state = 0; + } + else + { + value = value * 16 + digit; + if (state < 7) + { + state++; + continue; + } + b = (char) value; + } + state = 0; + } + outbuffer[outpos++] = b; + } + return outpos - origpos; + } +} + |