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/RETokenNamedProperty.java | |
| parent | 96034e28360d660d7a7708807fcbc4b519574d8e (diff) | |
| download | gcc-64089cc9f030d8ef7972adb5d117e0b23f47d62b.tar.gz | |
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/RETokenNamedProperty.java')
| -rw-r--r-- | libjava/classpath/gnu/regexp/RETokenNamedProperty.java | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/libjava/classpath/gnu/regexp/RETokenNamedProperty.java b/libjava/classpath/gnu/regexp/RETokenNamedProperty.java index 13c1e418a09..6147e87dc37 100644 --- a/libjava/classpath/gnu/regexp/RETokenNamedProperty.java +++ b/libjava/classpath/gnu/regexp/RETokenNamedProperty.java @@ -105,24 +105,43 @@ final class RETokenNamedProperty extends REToken { return 1; } - boolean match(CharIndexed input, REMatch mymatch) { - char ch = input.charAt(mymatch.index); + REMatch matchThis(CharIndexed input, REMatch mymatch) { + char ch = input.charAt(mymatch.index); + boolean retval = matchOneChar(ch); + if (retval) { + ++mymatch.index; + return mymatch; + } + return null; + } + + private boolean matchOneChar(char ch) { if (ch == CharIndexed.OUT_OF_BOUNDS) return false; boolean retval = handler.includes(ch); if (insens) { retval = retval || - handler.includes(Character.toUpperCase(ch)) || - handler.includes(Character.toLowerCase(ch)); + handler.includes(toUpperCase(ch, unicodeAware)) || + handler.includes(toLowerCase(ch, unicodeAware)); } if (negate) retval = !retval; - if (retval) { - ++mymatch.index; - return next(input, mymatch); + return retval; + } + + boolean returnsFixedLengthMatches() { return true; } + + int findFixedLengthMatches(CharIndexed input, REMatch mymatch, int max) { + int index = mymatch.index; + int numRepeats = 0; + while (true) { + if (numRepeats >= max) break; + char ch = input.charAt(index++); + if (! matchOneChar(ch)) break; + numRepeats++; } - else return false; + return numRepeats; } void dump(StringBuffer os) { @@ -246,9 +265,6 @@ final class RETokenNamedProperty extends REToken { private static class POSIXHandler extends Handler { private RETokenPOSIX retoken; - private REMatch mymatch = new REMatch(0,0,0); - private char[] chars = new char[1]; - private CharIndexedCharArray ca = new CharIndexedCharArray(chars, 0); public POSIXHandler(String name) { int posixId = RETokenPOSIX.intValue(name.toLowerCase()); if (posixId != -1) @@ -257,9 +273,7 @@ final class RETokenNamedProperty extends REToken { throw new RuntimeException("Unknown posix ID: " + name); } public boolean includes(char c) { - chars[0] = c; - mymatch.index = 0; - return retoken.match(ca, mymatch); + return retoken.matchOneChar(c); } } |
