diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-30 09:31:00 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-30 09:31:00 +0000 |
commit | d41dfd6cc95692f13ca6dde18e9717679c00595d (patch) | |
tree | 4928c712cce75c2d0d4c9cf9f6f78ef4a4052149 /libjava/java/text/RuleBasedCollator.java | |
parent | 5f00c9ab3e46684aba3272ade7a944a34a82e991 (diff) | |
download | gcc-d41dfd6cc95692f13ca6dde18e9717679c00595d.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26707 138bc75d-0d04-0410-961f-82ee72b054a4
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 18046adf9e5..fd4002b1a9f 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) |