From abcb7f6e0012f9653e5487b91ff4f52dd7a88481 Mon Sep 17 00:00:00 2001 From: bothner Date: Fri, 16 Apr 1999 17:25:08 +0000 Subject: � * 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. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26502 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/gnu/gcj/convert/Input_JavaSrc.java | 89 ++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 libjava/gnu/gcj/convert/Input_JavaSrc.java (limited to 'libjava/gnu/gcj/convert/Input_JavaSrc.java') 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 + * @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; + } +} + -- cgit v1.2.3