From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- 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 000000000..12b8b695b --- /dev/null +++ b/libjava/gnu/gcj/convert/Input_JavaSrc.java @@ -0,0 +1,89 @@ +/* Copyright (C) 1999 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; + +/** + * 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 count) + { + int origpos = outpos; + for (;;) + { + if (inpos >= inlength) + break; + if (outpos - origpos >= count) + 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