diff options
author | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-07 18:40:08 +0000 |
---|---|---|
committer | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-07 18:40:08 +0000 |
commit | 2667bdcefd2d6989492b69b4a59fa495bc3d6636 (patch) | |
tree | 195faa2550e69c0ed1060d2bf90a2b1c688588a5 /libjava/java/text | |
parent | 3f71441c93f32f6e977f7c775a4455b7d4b7cce9 (diff) | |
download | ppe42-gcc-2667bdcefd2d6989492b69b4a59fa495bc3d6636.tar.gz ppe42-gcc-2667bdcefd2d6989492b69b4a59fa495bc3d6636.zip |
2004-01-07 Michael Koch <konqueror@gmx.de>
* java/text/CollationElementIterator.java
(textIndex): Renamed from index.
* java/text/CollationKey.java
(collator): New member.
(CollationKey): New argument for parent collator.
(equals): Check for same collator, source string and key array.
* java/text/RuleBasedCollator.java:
Reformated.
(RuleBasedCollator): Don't re-initialize frenchAccents with default
value.
(getCollationElementIterator): Rewritten.
(getCollationKey): Added new argument to CollationKey constructor.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75510 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/text')
-rw-r--r-- | libjava/java/text/CollationElementIterator.java | 10 | ||||
-rw-r--r-- | libjava/java/text/CollationKey.java | 20 | ||||
-rw-r--r-- | libjava/java/text/RuleBasedCollator.java | 43 |
3 files changed, 42 insertions, 31 deletions
diff --git a/libjava/java/text/CollationElementIterator.java b/libjava/java/text/CollationElementIterator.java index bcb4f6b89c2..ecc95231d30 100644 --- a/libjava/java/text/CollationElementIterator.java +++ b/libjava/java/text/CollationElementIterator.java @@ -76,7 +76,7 @@ public final class CollationElementIterator /** * This is the index into the String where we are currently scanning. */ - int index; + int textIndex; // A piece of lookahead. boolean lookahead_set; @@ -107,7 +107,7 @@ public final class CollationElementIterator */ public int next() { - if (index == text.length()) + if (textIndex == text.length()) return NULLORDER; return collator.ceiNext (this); @@ -133,7 +133,7 @@ public final class CollationElementIterator */ public void reset() { - index = 0; + textIndex = 0; } /** @@ -175,7 +175,7 @@ public final class CollationElementIterator public void setText(String text) { this.text = text; - this.index = 0; + this.textIndex = 0; this.lookahead_set = false; this.lookahead = 0; } @@ -190,6 +190,6 @@ public final class CollationElementIterator */ public int getOffset() { - return index; + return textIndex; } } diff --git a/libjava/java/text/CollationKey.java b/libjava/java/text/CollationKey.java index f7e3148c50b..8859b320463 100644 --- a/libjava/java/text/CollationKey.java +++ b/libjava/java/text/CollationKey.java @@ -66,6 +66,11 @@ package java.text; public final class CollationKey implements Comparable { /** + * This is the <code>Collator</code> this object was created from. + */ + private Collator collator; + + /** * This is the <code>String</code> this object represents. */ private String originalText; @@ -75,9 +80,10 @@ public final class CollationKey implements Comparable */ private int[] key; - CollationKey (CollationElementIterator iter, String originalText, - int strength) + CollationKey(Collator collator, CollationElementIterator iter, + String originalText, int strength) { + this.collator = collator; this.originalText = originalText; // Compute size of required array. @@ -153,12 +159,14 @@ public final class CollationKey implements Comparable CollationKey ck = (CollationKey) obj; - if (key.length != ck.key.length) + if (ck.collator != collator) return false; - for (int i = 0; i < key.length; ++i) - if (key[i] != ck.key[i]) - return false; + if (!ck.getSourceString ().equals (getSourceString ())) + return false; + + if (!ck.toByteArray ().equals (toByteArray ())) + return false; return true; } diff --git a/libjava/java/text/RuleBasedCollator.java b/libjava/java/text/RuleBasedCollator.java index 82df0d6919b..5b1dc0cfbed 100644 --- a/libjava/java/text/RuleBasedCollator.java +++ b/libjava/java/text/RuleBasedCollator.java @@ -152,13 +152,12 @@ public class RuleBasedCollator extends Collator String key; char relation; - CollationElement (String key, char relation) + CollationElement(String key, char relation) { this.key = key; this.relation = relation; } - - } // inner class CollationElement + } // True if we are using French-style accent ordering. private boolean frenchAccents; @@ -188,21 +187,21 @@ public class RuleBasedCollator extends Collator */ public RuleBasedCollator(String rules) throws ParseException { - if (rules.equals ("")) - throw new ParseException ("empty rule set", 0); + if (rules.equals("")) + throw new ParseException("empty rule set", 0); this.rules = rules; - this.frenchAccents = false; // We keep each rule in order in a vector. At the end we traverse // the vector and compute collation values from it. int insertion_index = 0; Vector vec = new Vector (); - StringBuffer argument = new StringBuffer (); - + int index; + StringBuffer argument = new StringBuffer(); int len = rules.length(); - for (int index = 0; index < len; ++index) + + for (index = 0; index < len; ++index) { char c = rules.charAt(index); @@ -339,7 +338,7 @@ public class RuleBasedCollator extends Collator return cei.lookahead; } - int save = cei.index; + int save = cei.textIndex; int max = cei.text.length(); String s = null; @@ -368,7 +367,7 @@ public class RuleBasedCollator extends Collator } // Update state. - cei.index = i; + cei.textIndex = i; if (obj == null) { @@ -490,10 +489,12 @@ public class RuleBasedCollator extends Collator */ public CollationElementIterator getCollationElementIterator(String source) { - StringBuffer expand = new StringBuffer (source.length()); - int max = source.length(); - for (int i = 0; i < max; ++i) - decomposeCharacter (source.charAt(i), expand); + int len = source.length(); + StringBuffer expand = new StringBuffer(len); + + for (int index = 0; index < len; ++index) + decomposeCharacter(source.charAt(index), expand); + return new CollationElementIterator(this, expand.toString()); } @@ -508,11 +509,13 @@ public class RuleBasedCollator extends Collator */ public CollationElementIterator getCollationElementIterator(CharacterIterator source) { - StringBuffer expand = new StringBuffer(); - for (char c = source.first (); + StringBuffer expand = new StringBuffer(""); + + // Right now we assume that we will read from the beginning of the string. + for (char c = source.first(); c != CharacterIterator.DONE; - c = source.next ()) - decomposeCharacter (c, expand); + c = source.next()) + decomposeCharacter(c, expand); return new CollationElementIterator(this, expand.toString()); } @@ -530,7 +533,7 @@ public class RuleBasedCollator extends Collator */ public CollationKey getCollationKey(String source) { - return new CollationKey(getCollationElementIterator(source), source, + return new CollationKey(this, getCollationElementIterator(source), source, strength); } |