diff options
author | Tom Tromey <tromey@cygnus.com> | 1999-04-30 09:31:00 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-30 09:31:00 +0000 |
commit | a0e894a8cc0344dbbefc57523ff53e990854fcfb (patch) | |
tree | 4928c712cce75c2d0d4c9cf9f6f78ef4a4052149 /libjava/java/text/RuleBasedCollator.java | |
parent | 1c609c4cbee4dd46a739fae213da8d48fe1147e4 (diff) | |
download | gcc-a0e894a8cc0344dbbefc57523ff53e990854fcfb.zip gcc-a0e894a8cc0344dbbefc57523ff53e990854fcfb.tar.gz gcc-a0e894a8cc0344dbbefc57523ff53e990854fcfb.tar.bz2 |
StringBuffer.java (ensureCapacity): Don't resize vector when shared.
* java/lang/StringBuffer.java (ensureCapacity): Don't resize
vector when shared.
* java/util/Locale.java (Locale(String,String)): Implement in
terms of 3-argument version; variant now defaults to empty
string.
(toString): Assume variant is not null.
(equals): Assume all strings are not null.
(Locale): Throw NullPointerException if any argument is null.
* java/util/ResourceBundle.java (getBundle): Don't try the base
name; now implicit in partialGetBundle call.
(trySomeGetBundle): Search for parent bundles and call setParent
as required.
(partialGetBundle): Added `langStop' argument. Use
`Locale.toString' to compute bundleName.
(resource_cache): New static field.
(partialGetBundle): Cache the returned resource bundle. Now
synchronized.
* gnu/gcj/text/LocaleData_en.java (contents): [collatorRule] Added
missing `<'.
* mauve-libgcj: Enable Collator and RuleBasedCollator.
* java/text/natCollator.cc (decomposeCharacter): `base' now
`const'.
* Makefile.in: Rebuilt.
* Makefile.am (ordinary_java_source_files): Added
CollationElementIterator, CollationKey, Collator,
RuleBasedCollator.
(nat_source_files): Added natCollator.cc.
* java/text/RuleBasedCollator.java (ceiNext): No longer static.
(compare): Pass `this' to CollationElementIterator constructor.
(getCollationElementIterator): Likewise.
(ceiNext): Fix off-by-one error when finding initial substring.
(next): Correctly mask off bits when computing return value.
Fixed return values when one string is shorter than the other.
* java/text/CollationElementIterator.java (collator): New field.
(CollationElementIterator): Added collator argument.
(next): Call ceiNext on collator object.
From-SVN: r26707
Diffstat (limited to 'libjava/java/text/RuleBasedCollator.java')
-rw-r--r-- | libjava/java/text/RuleBasedCollator.java | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/libjava/java/text/RuleBasedCollator.java b/libjava/java/text/RuleBasedCollator.java index 18046ad..fd4002b 100644 --- a/libjava/java/text/RuleBasedCollator.java +++ b/libjava/java/text/RuleBasedCollator.java @@ -43,7 +43,7 @@ public class RuleBasedCollator extends Collator } // A helper for CollationElementIterator.next(). - static int ceiNext (CollationElementIterator cei) + int ceiNext (CollationElementIterator cei) { if (cei.lookahead_set) { @@ -61,7 +61,7 @@ public class RuleBasedCollator extends Collator boolean found = false; int i; - for (i = save; i < max; ++i) + for (i = save + 1; i <= max; ++i) { s = cei.text.substring(save, i); if (prefixes.get(s) == null) @@ -108,16 +108,15 @@ public class RuleBasedCollator extends Collator switch (strength) { case PRIMARY: - c |= CollationElementIterator.primaryOrder(os); - /* Fall through. */ + c = os & ~0xffff; + break; case SECONDARY: - c |= CollationElementIterator.secondaryOrder(os); - /* Fall through. */ - case TERTIARY: - c |= CollationElementIterator.tertiaryOrder(os); + c = os & ~0x00ff; break; + case TERTIARY: case IDENTICAL: c = os; + break; } if (c != 0) return c; @@ -128,8 +127,8 @@ public class RuleBasedCollator extends Collator { CollationElementIterator cs, ct; - cs = new CollationElementIterator (source); - ct = new CollationElementIterator (target); + cs = new CollationElementIterator (source, this); + ct = new CollationElementIterator (target, this); while (true) { @@ -140,9 +139,15 @@ public class RuleBasedCollator extends Collator && ot == CollationElementIterator.NULLORDER) break; else if (os == CollationElementIterator.NULLORDER) - return 1; + { + // Source string is shorter, so return "less than". + return -1; + } else if (ot == CollationElementIterator.NULLORDER) - return -1; + { + // Target string is shorter, so return "greater than". + return 1; + } if (os != ot) return os - ot; @@ -168,7 +173,7 @@ public class RuleBasedCollator extends Collator int max = source.length(); for (int i = 0; i < max; ++i) decomposeCharacter (source.charAt(i), expand); - return new CollationElementIterator (expand.toString()); + return new CollationElementIterator (expand.toString(), this); } public CollationKey getCollationKey (String source) |