]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / classes / core / src / com / ibm / icu / text / StringCharacterIterator.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 1996-2006, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 \r
8 \r
9 // NOTE:  This class is identical to java.text.StringCharacterIterator\r
10 // in JDK 1.2.  It's copied here because the JDK 1.1 version of\r
11 // StringCharacterIterator has a bug that prevents it from working\r
12 // right with RuleBasedBreakIterator.  This class is unnecessary\r
13 // when using RuleBasedBreakIterator with JDK 1.2.\r
14 \r
15 package com.ibm.icu.text;\r
16 import java.text.CharacterIterator;\r
17 \r
18 /**\r
19  * <code>StringCharacterIterator</code> implements the\r
20  * <code>CharacterIterater</code> protocol for a <code>String</code>.\r
21  * The <code>StringCharacterIterator</code> class iterates over the\r
22  * entire <code>String</code>.\r
23  *\r
24  * @see CharacterIterator\r
25  * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
26  */\r
27 ///CLOVER:OFF\r
28 public final class StringCharacterIterator implements CharacterIterator\r
29 {\r
30     private String text;\r
31     private int begin;\r
32     private int end;\r
33     // invariant: begin <= pos <= end\r
34     private int pos;\r
35 \r
36     /**\r
37      * Constructs an iterator with an initial index of 0.\r
38      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
39      */\r
40     public StringCharacterIterator(String text)\r
41     {\r
42         this(text, 0);\r
43     }\r
44 \r
45     /**\r
46      * Constructs an iterator with the specified initial index.\r
47      *\r
48      * @param  text   The String to be iterated over\r
49      * @param  pos    Initial iterator position     \r
50      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
51      */\r
52     public StringCharacterIterator(String text, int pos)\r
53     {\r
54     this(text, 0, text.length(), pos);\r
55     }\r
56 \r
57     /**\r
58      * Constructs an iterator over the given range of the given string, with the\r
59      * index set at the specified position.\r
60      *\r
61      * @param  text   The String to be iterated over\r
62      * @param  begin  Index of the first character\r
63      * @param  end    Index of the character following the last character\r
64      * @param  pos    Initial iterator position \r
65      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
66      */\r
67     public StringCharacterIterator(String text, int begin, int end, int pos) {\r
68         if (text == null) {\r
69             throw new NullPointerException();\r
70         }\r
71         this.text = text;\r
72 \r
73         if (begin < 0 || begin > end || end > text.length()) {\r
74             throw new IllegalArgumentException("Invalid substring range");\r
75         }\r
76 \r
77         if (pos < begin || pos > end) {\r
78             throw new IllegalArgumentException("Invalid position");\r
79         }\r
80 \r
81         this.begin = begin;\r
82         this.end = end;\r
83         this.pos = pos;\r
84     }\r
85 \r
86     /**\r
87      * Reset this iterator to point to a new string.  This package-visible\r
88      * method is used by other java.text classes that want to avoid allocating\r
89      * new StringCharacterIterator objects every time their setText method\r
90      * is called.\r
91      *\r
92      * @param  text   The String to be iterated over \r
93      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
94      */\r
95     public void setText(String text) {\r
96         if (text == null) {\r
97             throw new NullPointerException();\r
98         }\r
99         this.text = text;\r
100         this.begin = 0;\r
101         this.end = text.length();\r
102         this.pos = 0;\r
103     }\r
104 \r
105     /**\r
106      * Implements CharacterIterator.first() for String.\r
107      * @see CharacterIterator#first \r
108      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
109      */\r
110     public char first()\r
111     {\r
112         pos = begin;\r
113         return current();\r
114     }\r
115 \r
116     /**\r
117      * Implements CharacterIterator.last() for String.\r
118      * @see CharacterIterator#last \r
119      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
120      */\r
121     public char last()\r
122     {\r
123         if (end != begin) {\r
124             pos = end - 1;\r
125         } else {\r
126             pos = end;\r
127         }\r
128         return current();\r
129      }\r
130 \r
131     /**\r
132      * Implements CharacterIterator.setIndex() for String.\r
133      * @see CharacterIterator#setIndex \r
134      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
135      */\r
136     public char setIndex(int p)\r
137     {\r
138     if (p < begin || p > end) {\r
139             throw new IllegalArgumentException("Invalid index");\r
140     }\r
141         pos = p;\r
142         return current();\r
143     }\r
144 \r
145     /**\r
146      * Implements CharacterIterator.current() for String.\r
147      * @see CharacterIterator#current \r
148      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
149      */\r
150     public char current()\r
151     {\r
152         if (pos >= begin && pos < end) {\r
153             return text.charAt(pos);\r
154         }\r
155         else {\r
156             return DONE;\r
157         }\r
158     }\r
159 \r
160     /**\r
161      * Implements CharacterIterator.next() for String.\r
162      * @see CharacterIterator#next \r
163      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
164      */\r
165     public char next()\r
166     {\r
167         if (pos < end - 1) {\r
168             pos++;\r
169             return text.charAt(pos);\r
170         }\r
171         else {\r
172             pos = end;\r
173             return DONE;\r
174         }\r
175     }\r
176 \r
177     /**\r
178      * Implements CharacterIterator.previous() for String.\r
179      * @see CharacterIterator#previous \r
180      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
181      */\r
182     public char previous()\r
183     {\r
184         if (pos > begin) {\r
185             pos--;\r
186             return text.charAt(pos);\r
187         }\r
188         else {\r
189             return DONE;\r
190         }\r
191     }\r
192 \r
193     /**\r
194      * Implements CharacterIterator.getBeginIndex() for String.\r
195      * @see CharacterIterator#getBeginIndex \r
196      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
197      */\r
198     public int getBeginIndex()\r
199     {\r
200         return begin;\r
201     }\r
202 \r
203     /**\r
204      * Implements CharacterIterator.getEndIndex() for String.\r
205      * @see CharacterIterator#getEndIndex \r
206      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
207      */\r
208     public int getEndIndex()\r
209     {\r
210         return end;\r
211     }\r
212 \r
213     /**\r
214      * Implements CharacterIterator.getIndex() for String.\r
215      * @see CharacterIterator#getIndex \r
216      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
217      */\r
218     public int getIndex()\r
219     {\r
220         return pos;\r
221     }\r
222 \r
223     /**\r
224      * Compares the equality of two StringCharacterIterator objects.\r
225      * @param obj the StringCharacterIterator object to be compared with.\r
226      * @return true if the given obj is the same as this\r
227      * StringCharacterIterator object; false otherwise. \r
228      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
229      */\r
230     public boolean equals(Object obj)\r
231     {\r
232         if (this == obj) {\r
233             return true;\r
234         }\r
235         if (!(obj instanceof StringCharacterIterator)) {\r
236             return false;\r
237         }\r
238 \r
239         StringCharacterIterator that = (StringCharacterIterator) obj;\r
240 \r
241         if (hashCode() != that.hashCode()) {\r
242             return false;\r
243         }\r
244         if (!text.equals(that.text)) {\r
245             return false;\r
246         }\r
247         if (pos != that.pos || begin != that.begin || end != that.end) {\r
248             return false;\r
249         }\r
250         return true;\r
251     }\r
252 \r
253     /**\r
254      * Computes a hashcode for this iterator.\r
255      * @return A hash code \r
256      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
257      */\r
258     public int hashCode()\r
259     {\r
260         return text.hashCode() ^ pos ^ begin ^ end;\r
261     }\r
262 \r
263     /**\r
264      * Creates a copy of this iterator.\r
265      * @return A copy of this \r
266      * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.\r
267      */\r
268     public Object clone()\r
269     {\r
270         try {\r
271             StringCharacterIterator other\r
272             = (StringCharacterIterator) super.clone();\r
273             return other;\r
274         }\r
275         catch (CloneNotSupportedException e) {\r
276             throw new IllegalStateException();\r
277         }\r
278     }\r
279 \r
280 }\r
281 ///CLOVER:ON\r