diff options
| author | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-05-18 17:29:21 +0000 |
|---|---|---|
| committer | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-05-18 17:29:21 +0000 |
| commit | 64089cc9f030d8ef7972adb5d117e0b23f47d62b (patch) | |
| tree | 9f9c470de62ee62fba1331a396450d728d2b1fad /libjava/classpath/gnu/regexp/RETokenChar.java | |
| parent | 96034e28360d660d7a7708807fcbc4b519574d8e (diff) | |
| download | ppe42-gcc-64089cc9f030d8ef7972adb5d117e0b23f47d62b.tar.gz ppe42-gcc-64089cc9f030d8ef7972adb5d117e0b23f47d62b.zip | |
Imported GNU Classpath 0.90
* scripts/makemake.tcl: LocaleData.java moved to gnu/java/locale.
* sources.am: Regenerated.
* gcj/javaprims.h: Regenerated.
* Makefile.in: Regenerated.
* gcj/Makefile.in: Regenerated.
* include/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
* gnu/java/lang/VMInstrumentationImpl.java: New override.
* gnu/java/net/local/LocalSocketImpl.java: Likewise.
* gnu/classpath/jdwp/VMMethod.java: Likewise.
* gnu/classpath/jdwp/VMVirtualMachine.java: Update to latest
interface.
* java/lang/Thread.java: Add UncaughtExceptionHandler.
* java/lang/reflect/Method.java: Implements GenericDeclaration and
isSynthetic(),
* java/lang/reflect/Field.java: Likewise.
* java/lang/reflect/Constructor.java
* java/lang/Class.java: Implements Type, GenericDeclaration,
getSimpleName() and getEnclosing*() methods.
* java/lang/Class.h: Add new public methods.
* java/lang/Math.java: Add signum(), ulp() and log10().
* java/lang/natMath.cc (log10): New function.
* java/security/VMSecureRandom.java: New override.
* java/util/logging/Logger.java: Updated to latest classpath
version.
* java/util/logging/LogManager.java: New override.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113887 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/gnu/regexp/RETokenChar.java')
| -rw-r--r-- | libjava/classpath/gnu/regexp/RETokenChar.java | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/libjava/classpath/gnu/regexp/RETokenChar.java b/libjava/classpath/gnu/regexp/RETokenChar.java index 5c087c68778..1b3a74855ec 100644 --- a/libjava/classpath/gnu/regexp/RETokenChar.java +++ b/libjava/classpath/gnu/regexp/RETokenChar.java @@ -1,5 +1,5 @@ /* gnu/regexp/RETokenChar.java - Copyright (C) 1998-2001, 2004 Free Software Foundation, Inc. + Copyright (C) 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -44,8 +44,9 @@ final class RETokenChar extends REToken { RETokenChar(int subIndex, char c, boolean ins) { super(subIndex); + insens = ins; ch = new char [1]; - ch[0] = (insens = ins) ? Character.toLowerCase(c) : c; + ch[0] = c; } int getMinimumLength() { @@ -56,18 +57,50 @@ final class RETokenChar extends REToken { return ch.length; } - boolean match(CharIndexed input, REMatch mymatch) { + REMatch matchThis(CharIndexed input, REMatch mymatch) { + int z = ch.length; + if (matchOneString(input, mymatch.index)) { + mymatch.index += z; + return mymatch; + } + return null; + } + + boolean matchOneString(CharIndexed input, int index) { int z = ch.length; char c; for (int i=0; i<z; i++) { - c = input.charAt(mymatch.index+i); - if (( (insens) ? Character.toLowerCase(c) : c ) != ch[i]) { + c = input.charAt(index+i); + if (! charEquals(c, ch[i])) { return false; } } - mymatch.index += z; + return true; + } - return next(input, mymatch); + private boolean charEquals(char c1, char c2) { + if (c1 == c2) return true; + if (! insens) return false; + if (toLowerCase(c1, unicodeAware) == c2) return true; + if (toUpperCase(c1, unicodeAware) == c2) return true; + return false; + } + + boolean returnsFixedLengthMatches() { return true; } + + int findFixedLengthMatches(CharIndexed input, REMatch mymatch, int max) { + int index = mymatch.index; + int numRepeats = 0; + int z = ch.length; + while (true) { + if (numRepeats >= max) break; + if (matchOneString(input, index)) { + index += z; + numRepeats++; + } + else break; + } + return numRepeats; } // Overrides REToken.chain() to optimize for strings |

