diff --git a/icu4j/src/com/ibm/icu/text/CompoundTransliterator.java b/icu4j/src/com/ibm/icu/text/CompoundTransliterator.java
index cef6d105bc7..eb117c13eb1 100755
--- a/icu4j/src/com/ibm/icu/text/CompoundTransliterator.java
+++ b/icu4j/src/com/ibm/icu/text/CompoundTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CompoundTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.10 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.11 $
*
*****************************************************************************************
*/
@@ -35,7 +35,7 @@ import java.util.Vector;
*
Copyright © IBM Corporation 1999. All rights reserved.
*
* @author Alan Liu
- * @version $RCSfile: CompoundTransliterator.java,v $ $Revision: 1.10 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: CompoundTransliterator.java,v $ $Revision: 1.11 $ $Date: 2000/06/28 20:49:54 $
*/
public class CompoundTransliterator extends Transliterator {
@@ -274,7 +274,7 @@ public class CompoundTransliterator extends Transliterator {
* S C L
*/
int cursor = index.start;
- int limit = index.contextLimit;
+ int limit = index.limit;
int globalLimit = limit;
/* globalLimit is the overall limit. We keep track of this
* since we overwrite index.contextLimit with the previous
@@ -284,7 +284,7 @@ public class CompoundTransliterator extends Transliterator {
for (int i=0; iCopyright (c) IBM Corporation 1999-2000. All rights reserved.
*
* @author Alan Liu
- * @version $RCSfile: RuleBasedTransliterator.java,v $ $Revision: 1.34 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: RuleBasedTransliterator.java,v $ $Revision: 1.35 $ $Date: 2000/06/28 20:49:54 $
*/
public class RuleBasedTransliterator extends Transliterator {
@@ -325,7 +325,7 @@ public class RuleBasedTransliterator extends Transliterator {
* exzd| done
*/
int start = index.contextStart;
- int limit = index.contextLimit;
+ int limit = index.limit;
int cursor = index.start;
if (DEBUG) {
@@ -356,9 +356,9 @@ public class RuleBasedTransliterator extends Transliterator {
while (cursor < limit && loopCount <= loopLimit) {
TransliterationRule r = incremental ?
- data.ruleSet.findIncrementalMatch(text, start, limit, cursor,
+ data.ruleSet.findIncrementalMatch(text, index.contextStart, limit, cursor,
data, partial, getFilter()) :
- data.ruleSet.findMatch(text, start, limit,
+ data.ruleSet.findMatch(text, index.contextStart, limit,
cursor, data, getFilter());
/* If we match a rule then apply it by replacing the key
* with the rule output and repositioning the cursor
@@ -391,7 +391,8 @@ public class RuleBasedTransliterator extends Transliterator {
Utility.escape(rsubstring(text, cursor, limit)) + "\"");
}
- index.contextLimit = limit;
+ index.contextLimit += limit - index.limit;
+ index.limit = limit;
index.start = cursor;
}
@@ -1328,6 +1329,9 @@ public class RuleBasedTransliterator extends Transliterator {
/**
* $Log: RuleBasedTransliterator.java,v $
+ * Revision 1.35 2000/06/28 20:49:54 alan4j
+ * Fix handling of Positions fields
+ *
* Revision 1.34 2000/06/28 20:36:32 alan4j
* Clean up Transliterator::Position - rename temporary names
*
diff --git a/icu4j/src/com/ibm/icu/text/Transliterator.java b/icu4j/src/com/ibm/icu/text/Transliterator.java
index 11f61c3ca2d..dfbe9a5dad4 100755
--- a/icu4j/src/com/ibm/icu/text/Transliterator.java
+++ b/icu4j/src/com/ibm/icu/text/Transliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Transliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.18 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.19 $
*
*****************************************************************************************
*/
@@ -210,7 +210,7 @@ import java.text.MessageFormat;
* Copyright © IBM Corporation 1999. All rights reserved.
*
* @author Alan Liu
- * @version $RCSfile: Transliterator.java,v $ $Revision: 1.18 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: Transliterator.java,v $ $Revision: 1.19 $ $Date: 2000/06/28 20:49:54 $
*/
public abstract class Transliterator {
/**
@@ -536,7 +536,8 @@ public abstract class Transliterator {
int originalStart = index.contextStart;
if (insertion != null) {
- text.replace(index.contextLimit, index.contextLimit, insertion);
+ text.replace(index.limit, index.limit, insertion);
+ index.limit += insertion.length();
index.contextLimit += insertion.length();
}
@@ -593,19 +594,9 @@ public abstract class Transliterator {
*/
public final void finishTransliteration(Replaceable text,
Position index) {
- if (index.contextStart < 0 ||
- index.contextLimit > text.length() ||
- index.start < index.contextStart ||
- index.start > index.contextLimit) {
- throw new IllegalArgumentException("Invalid index");
- }
-
- int originalStart = index.contextStart;
-
- handleTransliterate(text, index, false);
-
- index.contextStart = Math.max(index.start - getMaximumContextLength(),
- originalStart);
+ int limit = transliterate(text, index.start, index.limit);
+ index.contextLimit += limit - index.limit;
+ index.start = index.limit = limit;
}
/**
diff --git a/icu4j/src/com/ibm/icu/text/UnicodeToHexTransliterator.java b/icu4j/src/com/ibm/icu/text/UnicodeToHexTransliterator.java
index 487ead23fcb..388610e1fb7 100755
--- a/icu4j/src/com/ibm/icu/text/UnicodeToHexTransliterator.java
+++ b/icu4j/src/com/ibm/icu/text/UnicodeToHexTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Attic/UnicodeToHexTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.8 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.9 $
*
*****************************************************************************************
*/
@@ -32,7 +32,7 @@ import java.util.*;
* default is uppercase.
*
* @author Alan Liu
- * @version $RCSfile: UnicodeToHexTransliterator.java,v $ $Revision: 1.8 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: UnicodeToHexTransliterator.java,v $ $Revision: 1.9 $ $Date: 2000/06/28 20:49:54 $
*/
public class UnicodeToHexTransliterator extends Transliterator {
@@ -292,7 +292,7 @@ public class UnicodeToHexTransliterator extends Transliterator {
* assuming the prefix is "U+".
*/
int cursor = offsets.start;
- int limit = offsets.contextLimit;
+ int limit = offsets.limit;
UnicodeFilter filter = getFilter();
StringBuffer hex = new StringBuffer(prefix);
@@ -323,7 +323,8 @@ public class UnicodeToHexTransliterator extends Transliterator {
limit += len;
}
- offsets.contextLimit = limit;
+ offsets.contextLimit += limit - offsets.limit;
+ offsets.limit = limit;
offsets.start = cursor;
}
}
diff --git a/icu4j/src/com/ibm/text/CompoundTransliterator.java b/icu4j/src/com/ibm/text/CompoundTransliterator.java
index f854313f8b0..b6d62b4e6da 100755
--- a/icu4j/src/com/ibm/text/CompoundTransliterator.java
+++ b/icu4j/src/com/ibm/text/CompoundTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/CompoundTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.10 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.11 $
*
*****************************************************************************************
*/
@@ -35,7 +35,7 @@ import java.util.Vector;
*
Copyright © IBM Corporation 1999. All rights reserved.
*
* @author Alan Liu
- * @version $RCSfile: CompoundTransliterator.java,v $ $Revision: 1.10 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: CompoundTransliterator.java,v $ $Revision: 1.11 $ $Date: 2000/06/28 20:49:54 $
*/
public class CompoundTransliterator extends Transliterator {
@@ -274,7 +274,7 @@ public class CompoundTransliterator extends Transliterator {
* S C L
*/
int cursor = index.start;
- int limit = index.contextLimit;
+ int limit = index.limit;
int globalLimit = limit;
/* globalLimit is the overall limit. We keep track of this
* since we overwrite index.contextLimit with the previous
@@ -284,7 +284,7 @@ public class CompoundTransliterator extends Transliterator {
for (int i=0; iCopyright © IBM Corporation 1999. All rights reserved.
*
* @author Mark Davis
- * @version $RCSfile: HangulJamoTransliterator.java,v $ $Revision: 1.6 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: HangulJamoTransliterator.java,v $ $Revision: 1.7 $ $Date: 2000/06/28 20:49:54 $
*/
public class HangulJamoTransliterator extends Transliterator {
private static final String COPYRIGHT =
@@ -43,7 +43,7 @@ public class HangulJamoTransliterator extends Transliterator {
protected void handleTransliterate(Replaceable text,
Position offsets, boolean incremental) {
int cursor = offsets.start;
- int limit = offsets.contextLimit;
+ int limit = offsets.limit;
StringBuffer replacement = new StringBuffer();
while (cursor < limit) {
@@ -57,6 +57,7 @@ public class HangulJamoTransliterator extends Transliterator {
}
}
+ offsets.contextLimit += limit - offsets.limit;
offsets.contextLimit = limit;
offsets.start = cursor;
}
diff --git a/icu4j/src/com/ibm/text/HexToUnicodeTransliterator.java b/icu4j/src/com/ibm/text/HexToUnicodeTransliterator.java
index aa4c50cec81..ab9ee5f9f28 100755
--- a/icu4j/src/com/ibm/text/HexToUnicodeTransliterator.java
+++ b/icu4j/src/com/ibm/text/HexToUnicodeTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/HexToUnicodeTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.7 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.8 $
*
*****************************************************************************************
*/
@@ -23,7 +23,7 @@ import java.util.*;
* applyPattern() for details.
*
* @author Alan Liu
- * @version $RCSfile: HexToUnicodeTransliterator.java,v $ $Revision: 1.7 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: HexToUnicodeTransliterator.java,v $ $Revision: 1.8 $ $Date: 2000/06/28 20:49:54 $
*/
public class HexToUnicodeTransliterator extends Transliterator {
private static final String COPYRIGHT =
@@ -268,7 +268,7 @@ public class HexToUnicodeTransliterator extends Transliterator {
protected void handleTransliterate(Replaceable text,
Position offsets, boolean isIncremental) {
int cursor = offsets.start;
- int limit = offsets.contextLimit;
+ int limit = offsets.limit;
int i, j, ipat;
loop:
@@ -373,7 +373,8 @@ public class HexToUnicodeTransliterator extends Transliterator {
++cursor;
}
- offsets.contextLimit = limit;
+ offsets.contextLimit += limit - offsets.limit;
+ offsets.limit = limit;
offsets.start = cursor;
}
}
diff --git a/icu4j/src/com/ibm/text/JamoHangulTransliterator.java b/icu4j/src/com/ibm/text/JamoHangulTransliterator.java
index 50851871f4e..c21d55f741e 100755
--- a/icu4j/src/com/ibm/text/JamoHangulTransliterator.java
+++ b/icu4j/src/com/ibm/text/JamoHangulTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/JamoHangulTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.7 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.8 $
*
*****************************************************************************************
*/
@@ -46,7 +46,7 @@ public class JamoHangulTransliterator extends Transliterator {
* Performs transliteration changing Jamo to Hangul
*/
int cursor = offsets.start;
- int limit = offsets.contextLimit;
+ int limit = offsets.limit;
if (cursor >= limit) return;
int count[] = new int[1];
@@ -68,7 +68,9 @@ public class JamoHangulTransliterator extends Transliterator {
}
}
- offsets.contextLimit = limit + 1;
+ ++limit;
+ offsets.contextLimit += limit - offsets.limit;
+ offsets.limit = limit;
offsets.start = cursor;
}
diff --git a/icu4j/src/com/ibm/text/NullTransliterator.java b/icu4j/src/com/ibm/text/NullTransliterator.java
index 0ac6d284997..0dbf888aaff 100755
--- a/icu4j/src/com/ibm/text/NullTransliterator.java
+++ b/icu4j/src/com/ibm/text/NullTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/NullTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.7 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.8 $
*
*****************************************************************************************
*/
@@ -37,6 +37,6 @@ public class NullTransliterator extends Transliterator {
*/
protected void handleTransliterate(Replaceable text,
Position offsets, boolean incremental) {
- offsets.start = offsets.contextLimit;
+ offsets.start = offsets.limit;
}
}
diff --git a/icu4j/src/com/ibm/text/RuleBasedTransliterator.java b/icu4j/src/com/ibm/text/RuleBasedTransliterator.java
index 192454b71e8..becdd62b715 100755
--- a/icu4j/src/com/ibm/text/RuleBasedTransliterator.java
+++ b/icu4j/src/com/ibm/text/RuleBasedTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/RuleBasedTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.34 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.35 $
*
*****************************************************************************************
*/
@@ -252,7 +252,7 @@ import com.ibm.util.Utility;
* Copyright (c) IBM Corporation 1999-2000. All rights reserved.
*
* @author Alan Liu
- * @version $RCSfile: RuleBasedTransliterator.java,v $ $Revision: 1.34 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: RuleBasedTransliterator.java,v $ $Revision: 1.35 $ $Date: 2000/06/28 20:49:54 $
*/
public class RuleBasedTransliterator extends Transliterator {
@@ -325,7 +325,7 @@ public class RuleBasedTransliterator extends Transliterator {
* exzd| done
*/
int start = index.contextStart;
- int limit = index.contextLimit;
+ int limit = index.limit;
int cursor = index.start;
if (DEBUG) {
@@ -356,9 +356,9 @@ public class RuleBasedTransliterator extends Transliterator {
while (cursor < limit && loopCount <= loopLimit) {
TransliterationRule r = incremental ?
- data.ruleSet.findIncrementalMatch(text, start, limit, cursor,
+ data.ruleSet.findIncrementalMatch(text, index.contextStart, limit, cursor,
data, partial, getFilter()) :
- data.ruleSet.findMatch(text, start, limit,
+ data.ruleSet.findMatch(text, index.contextStart, limit,
cursor, data, getFilter());
/* If we match a rule then apply it by replacing the key
* with the rule output and repositioning the cursor
@@ -391,7 +391,8 @@ public class RuleBasedTransliterator extends Transliterator {
Utility.escape(rsubstring(text, cursor, limit)) + "\"");
}
- index.contextLimit = limit;
+ index.contextLimit += limit - index.limit;
+ index.limit = limit;
index.start = cursor;
}
@@ -1328,6 +1329,9 @@ public class RuleBasedTransliterator extends Transliterator {
/**
* $Log: RuleBasedTransliterator.java,v $
+ * Revision 1.35 2000/06/28 20:49:54 alan4j
+ * Fix handling of Positions fields
+ *
* Revision 1.34 2000/06/28 20:36:32 alan4j
* Clean up Transliterator::Position - rename temporary names
*
diff --git a/icu4j/src/com/ibm/text/Transliterator.java b/icu4j/src/com/ibm/text/Transliterator.java
index aa7816a83d1..64eaeb3da92 100755
--- a/icu4j/src/com/ibm/text/Transliterator.java
+++ b/icu4j/src/com/ibm/text/Transliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/Transliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.18 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.19 $
*
*****************************************************************************************
*/
@@ -210,7 +210,7 @@ import java.text.MessageFormat;
* Copyright © IBM Corporation 1999. All rights reserved.
*
* @author Alan Liu
- * @version $RCSfile: Transliterator.java,v $ $Revision: 1.18 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: Transliterator.java,v $ $Revision: 1.19 $ $Date: 2000/06/28 20:49:54 $
*/
public abstract class Transliterator {
/**
@@ -536,7 +536,8 @@ public abstract class Transliterator {
int originalStart = index.contextStart;
if (insertion != null) {
- text.replace(index.contextLimit, index.contextLimit, insertion);
+ text.replace(index.limit, index.limit, insertion);
+ index.limit += insertion.length();
index.contextLimit += insertion.length();
}
@@ -593,19 +594,9 @@ public abstract class Transliterator {
*/
public final void finishTransliteration(Replaceable text,
Position index) {
- if (index.contextStart < 0 ||
- index.contextLimit > text.length() ||
- index.start < index.contextStart ||
- index.start > index.contextLimit) {
- throw new IllegalArgumentException("Invalid index");
- }
-
- int originalStart = index.contextStart;
-
- handleTransliterate(text, index, false);
-
- index.contextStart = Math.max(index.start - getMaximumContextLength(),
- originalStart);
+ int limit = transliterate(text, index.start, index.limit);
+ index.contextLimit += limit - index.limit;
+ index.start = index.limit = limit;
}
/**
diff --git a/icu4j/src/com/ibm/text/UnicodeToHexTransliterator.java b/icu4j/src/com/ibm/text/UnicodeToHexTransliterator.java
index 16fac5b9345..77403fc6f7e 100755
--- a/icu4j/src/com/ibm/text/UnicodeToHexTransliterator.java
+++ b/icu4j/src/com/ibm/text/UnicodeToHexTransliterator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeToHexTransliterator.java,v $
- * $Date: 2000/06/28 20:36:32 $
- * $Revision: 1.8 $
+ * $Date: 2000/06/28 20:49:54 $
+ * $Revision: 1.9 $
*
*****************************************************************************************
*/
@@ -32,7 +32,7 @@ import java.util.*;
* default is uppercase.
*
* @author Alan Liu
- * @version $RCSfile: UnicodeToHexTransliterator.java,v $ $Revision: 1.8 $ $Date: 2000/06/28 20:36:32 $
+ * @version $RCSfile: UnicodeToHexTransliterator.java,v $ $Revision: 1.9 $ $Date: 2000/06/28 20:49:54 $
*/
public class UnicodeToHexTransliterator extends Transliterator {
@@ -292,7 +292,7 @@ public class UnicodeToHexTransliterator extends Transliterator {
* assuming the prefix is "U+".
*/
int cursor = offsets.start;
- int limit = offsets.contextLimit;
+ int limit = offsets.limit;
UnicodeFilter filter = getFilter();
StringBuffer hex = new StringBuffer(prefix);
@@ -323,7 +323,8 @@ public class UnicodeToHexTransliterator extends Transliterator {
limit += len;
}
- offsets.contextLimit = limit;
+ offsets.contextLimit += limit - offsets.limit;
+ offsets.limit = limit;
offsets.start = cursor;
}
}