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 Normalizer text = null;
- private int[] buffer = null;
- private int expIndex = 0;
- private StringBuffer key = new StringBuffer(5);
- private int swapOrder = 0;
- private RBCollationTables ordering;
- private RuleBasedCollator owner;
-
- CollationElementIterator(String var1, RuleBasedCollator var2) {
- this.owner = var2;
- this.ordering = var2.getTables();
- if (var1.length() != 0) {
- this.text = new Normalizer(var1, ((Collator)var2).getDecomposition());
- }
-
- }
-
- CollationElementIterator(CharacterIterator var1, RuleBasedCollator var2) {
- this.owner = var2;
- this.ordering = var2.getTables();
- this.text = new Normalizer(var1, ((Collator)var2).getDecomposition());
- }
-
- public void reset() {
- if (this.text != null) {
- this.text.reset();
- this.text.setDecomposition(this.owner.getDecomposition());
- }
-
- this.buffer = null;
- this.expIndex = 0;
- this.swapOrder = 0;
- }
-
- public int next() {
- if (this.text == null) {
- return -1;
- } else {
- if (this.text.getDecomposition() != this.owner.getDecomposition()) {
- this.text.setDecomposition(this.owner.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 == -1) {
- this.swapOrder = var1;
- return 2147418112;
- } else {
- if (var2 >= 2130706432) {
- var2 = this.nextContractChar(var1);
- }
-
- if (var2 >= 2113929216) {
- this.buffer = this.ordering.getExpandValueList(var2);
- this.expIndex = 0;
- var2 = this.buffer[this.expIndex++];
- }
-
- return this.strengthOrder(var2);
- }
- }
- }
- }
-
- public int previous() {
- if (this.text == null) {
- return -1;
- } else {
- if (this.text.getDecomposition() != this.owner.getDecomposition()) {
- this.text.setDecomposition(this.owner.getDecomposition());
- }
-
- if (this.buffer != null) {
- if (this.expIndex > 0) {
- 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.previous();
- if (var1 == '\uffff') {
- return -1;
- } else {
- int var2 = this.ordering.getUnicodeOrder(var1);
- if (var2 == -1) {
- this.swapOrder = 2147418112;
- return var1;
- } else {
- if (var2 >= 2130706432) {
- var2 = this.prevContractChar(var1);
- }
-
- if (var2 >= 2113929216) {
- this.buffer = this.ordering.getExpandValueList(var2);
- this.expIndex = this.buffer.length;
- var2 = this.buffer[--this.expIndex];
- }
-
- return this.strengthOrder(var2);
- }
- }
- }
- }
-
- public static final int primaryOrder(int var0) {
- var0 &= -65536;
- return var0 >>> 16;
- }
-
- public static final short secondaryOrder(int var0) {
- var0 &= 65280;
- return (short)(var0 >> 8);
- }
-
- public static final short tertiaryOrder(int var0) {
- int var1;
- return (short)(var1 = var0 & 255);
- }
-
- final int strengthOrder(int var1) {
- int var2 = this.owner.getStrength();
- if (var2 == 0) {
- var1 &= -65536;
- } else if (var2 == 1) {
- var1 &= -256;
- }
-
- return var1;
- }
-
- public void setOffset(int var1) {
- if (this.text != null) {
- if (var1 >= this.text.getText().getBeginIndex() && var1 < this.text.getText().getEndIndex()) {
- this.text.setOffset(var1 + 1);
- char var2 = this.text.previous();
- if (this.ordering.usedInContractSeq(var2)) {
- while(this.ordering.usedInContractSeq(var2)) {
- var2 = this.text.previous();
- }
-
- int var3 = this.text.getOffset();
-
- while(this.text.getOffset() <= var1) {
- var3 = this.text.getOffset();
- this.next();
- }
-
- this.text.setOffset(var3);
- }
- } else {
- this.text.setOffset(var1);
- }
- }
-
- this.buffer = null;
- this.expIndex = 0;
- this.swapOrder = 0;
- }
-
- public int getOffset() {
- return this.text != null ? this.text.getOffset() : 0;
- }
-
- public int getMaxExpansion(int var1) {
- return this.ordering.getMaxExpansion(var1);
- }
-
- public void setText(String var1) {
- this.buffer = null;
- this.swapOrder = 0;
- this.expIndex = 0;
- if (this.text == null) {
- this.text = new Normalizer(var1, this.owner.getDecomposition());
- } else {
- this.text.setDecomposition(this.owner.getDecomposition());
- this.text.setText(var1);
- }
-
- }
-
- public void setText(CharacterIterator var1) {
- this.buffer = null;
- this.swapOrder = 0;
- this.expIndex = 0;
- if (this.text == null) {
- this.text = new Normalizer(var1, this.owner.getDecomposition());
- } else {
- this.text.setDecomposition(this.owner.getDecomposition());
- this.text.setText(var1);
- }
-
- }
-
- static final boolean isIgnorable(int var0) {
- return primaryOrder(var0) == 0;
- }
-
- private int nextContractChar(char var1) {
- Vector var2 = this.ordering.getContractValues(var1);
- EntryPair var3 = (EntryPair)var2.firstElement();
- int var4 = var3.value;
- var3 = (EntryPair)var2.lastElement();
- int var5 = var3.entryName.length();
- Normalizer var6 = (Normalizer)this.text.clone();
- var6.previous();
- this.key.setLength(0);
-
- for(char var7 = var6.next(); var5 > 0 && var7 != '\uffff'; var7 = var6.next()) {
- this.key.append(var7);
- --var5;
- }
-
- String var8 = this.key.toString();
- var5 = 1;
-
- for(int var9 = var2.size() - 1; var9 > 0; --var9) {
- var3 = (EntryPair)var2.elementAt(var9);
- if (var3.fwd && var8.startsWith(var3.entryName) && var3.entryName.length() > var5) {
- var5 = var3.entryName.length();
- var4 = var3.value;
- }
- }
-
- while(var5 > 1) {
- this.text.next();
- --var5;
- }
-
- return var4;
- }
-
- private int prevContractChar(char var1) {
- Vector var2 = this.ordering.getContractValues(var1);
- EntryPair var3 = (EntryPair)var2.firstElement();
- int var4 = var3.value;
- var3 = (EntryPair)var2.lastElement();
- int var5 = var3.entryName.length();
- Normalizer var6 = (Normalizer)this.text.clone();
- var6.next();
- this.key.setLength(0);
-
- for(char var7 = var6.previous(); var5 > 0 && var7 != '\uffff'; var7 = var6.previous()) {
- this.key.append(var7);
- --var5;
- }
-
- String var8 = this.key.toString();
- var5 = 1;
-
- for(int var9 = var2.size() - 1; var9 > 0; --var9) {
- var3 = (EntryPair)var2.elementAt(var9);
- if (!var3.fwd && var8.startsWith(var3.entryName) && var3.entryName.length() > var5) {
- var5 = var3.entryName.length();
- var4 = var3.value;
- }
- }
-
- while(var5 > 1) {
- this.text.previous();
- --var5;
- }
-
- return var4;
- }
- }
-