diff options
author | Michael Koch <konqueror@gmx.de> | 2004-01-07 18:40:08 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2004-01-07 18:40:08 +0000 |
commit | 9b773289f883bc57491f8254e7ece335ae948f7e (patch) | |
tree | 195faa2550e69c0ed1060d2bf90a2b1c688588a5 /libjava | |
parent | 677e7ddceed691a4453804e97bb9733e53d4ea4d (diff) | |
download | gcc-9b773289f883bc57491f8254e7ece335ae948f7e.zip gcc-9b773289f883bc57491f8254e7ece335ae948f7e.tar.gz gcc-9b773289f883bc57491f8254e7ece335ae948f7e.tar.bz2 |
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.
From-SVN: r75510
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 15 | ||||
-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 |
4 files changed, 57 insertions, 31 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 85df30e..983e26a 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,20 @@ 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. + +2004-01-07 Michael Koch <konqueror@gmx.de> + * gnu/java/nio/DatagramChannelImpl.java (blocking): Removed. (DatagramChannelImpl): Call configureBlocking(). diff --git a/libjava/java/text/CollationElementIterator.java b/libjava/java/text/CollationElementIterator.java index bcb4f6b..ecc9523 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 f7e3148..8859b32 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 82df0d6..5b1dc0c 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); } |