home *** CD-ROM | disk | FTP | other *** search
- package java.text;
-
- import java.util.Vector;
-
- public final class CollationElementIterator {
- public static final int NULLORDER = -1;
- static final int UNMAPPEDCHARVALUE = 2147418112;
- private DecompositionIterator text;
- private int[] buffer;
- private int expIndex;
- private StringBuffer key = new StringBuffer(5);
- private int swapOrder;
- private RuleBasedCollator ordering;
-
- CollationElementIterator(String var1, RuleBasedCollator var2) {
- this.ordering = var2;
- if (var1.length() != 0) {
- this.text = new DecompositionIterator(var1, 0, var1.length(), ((Collator)var2).getDecomposition());
- }
-
- }
-
- public void reset() {
- if (this.text != null) {
- this.text.reset();
- }
-
- this.buffer = null;
- this.expIndex = 0;
- this.swapOrder = 0;
- this.text.setDecomposition(this.ordering.getDecomposition());
- }
-
- public int next() {
- if (this.text == null) {
- return -1;
- } else {
- if (this.text.getDecomposition() != this.ordering.getDecomposition()) {
- this.text.setDecomposition(this.ordering.getDecomposition());
- }
-
- if (this.buffer != null) {
- if (this.expIndex < this.buffer.length) {
- return this.strengthOrder(this.buffer[this.expIndex++]);
- }
-
- this.buffer = null;
- this.expIndex = 0;
- } else if (this.swapOrder != 0) {
- int var3 = this.swapOrder << 16;
- this.swapOrder = 0;
- return var3;
- }
-
- char var1 = this.text.next();
- if (var1 == '\uffff') {
- return -1;
- } else {
- int var2 = this.ordering.getUnicodeOrder(var1);
- if (var2 == RuleBasedCollator.UNMAPPED) {
- this.swapOrder = var1;
- return 2147418112;
- } else if (var2 < RuleBasedCollator.CHARINDEX) {
- return this.strengthOrder(var2);
- } else if (var2 >= RuleBasedCollator.CONTRACTCHARINDEX) {
- return this.strengthOrder(this.nextContractChar(var1));
- } else if (var2 >= RuleBasedCollator.EXPANDCHARINDEX) {
- this.buffer = this.ordering.getExpandValueList(var1);
- this.expIndex = 0;
- return this.strengthOrder(this.buffer[this.expIndex++]);
- } else {
- return -1;
- }
- }
- }
- }
-
- public static final int primaryOrder(int var0) {
- var0 &= -65536;
- return var0 >>> RuleBasedCollator.PRIMARYORDERSHIFT;
- }
-
- public static final short secondaryOrder(int var0) {
- var0 &= 65280;
- return (short)(var0 >> RuleBasedCollator.SECONDARYORDERSHIFT);
- }
-
- public static final short tertiaryOrder(int var0) {
- int var1;
- return (short)(var1 = var0 & 255);
- }
-
- static final boolean isIgnorable(int var0) {
- return primaryOrder(var0) == 0;
- }
-
- final int strengthOrder(int var1) {
- int var2 = this.ordering.getStrength();
- if (var2 == 0) {
- var1 &= -65536;
- } else if (var2 == 1) {
- var1 &= -256;
- }
-
- return var1;
- }
-
- final void setOffset(int var1) {
- if (this.text != null) {
- this.text.setOffset(var1);
- }
-
- }
-
- final int getOffset() {
- return this.text != null ? this.text.getOffset() : 0;
- }
-
- void setText(String var1) {
- this.buffer = null;
- this.swapOrder = 0;
- if (this.text == null) {
- this.text = new DecompositionIterator(var1, this.ordering.getDecomposition());
- } else {
- this.text.setDecomposition(this.ordering.getDecomposition());
- this.text.setText(var1);
- }
- }
-
- private int getEntry(Vector var1, String var2) {
- for(int var3 = 0; var3 < var1.size(); ++var3) {
- EntryPair var4 = (EntryPair)var1.elementAt(var3);
- if (var4.entryName.equals(var2)) {
- return var3;
- }
- }
-
- return RuleBasedCollator.UNMAPPED;
- }
-
- private int nextContractChar(char var1) {
- Object var2 = null;
- Vector var3 = this.ordering.getContractValues(var1);
- int var4 = 0;
- this.key.setLength(0);
- this.key.append(var1);
- int var5 = 0;
- if ((var5 = this.getEntry(var3, this.key.toString())) != RuleBasedCollator.UNMAPPED) {
- EntryPair var8 = (EntryPair)var3.elementAt(var5);
- var4 = var8.value;
- }
-
- while((var1 = this.text.next()) != '\uffff') {
- this.key.append(var1);
- if ((var5 = this.getEntry(var3, this.key.toString())) == RuleBasedCollator.UNMAPPED) {
- var1 = this.text.previous();
- break;
- }
-
- EntryPair var9 = (EntryPair)var3.elementAt(var5);
- var4 = var9.value;
- }
-
- if (var4 - RuleBasedCollator.EXPANDCHARINDEX >= 0) {
- this.buffer = this.ordering.getExpandValueList(var4 - RuleBasedCollator.EXPANDCHARINDEX);
- this.expIndex = 0;
- var4 = this.buffer[this.expIndex++];
- }
-
- return var4;
- }
- }
-