• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* GENERATED SOURCE. DO NOT MODIFY. */
2 // © 2016 and later: Unicode, Inc. and others.
3 // License & terms of use: http://www.unicode.org/copyright.html#License
4 /*
5  *******************************************************************************
6  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
7  * others. All Rights Reserved.                                                *
8  *******************************************************************************
9  */
10 
11 package ohos.global.icu.impl;
12 
13 import java.text.CharacterIterator;
14 
15 import ohos.global.icu.text.UCharacterIterator;
16 
17 /**
18  * This class is a wrapper around UCharacterIterator and implements the
19  * CharacterIterator protocol
20  * @author ram
21  * @hide exposed on OHOS
22  */
23 public class UCharacterIteratorWrapper implements CharacterIterator{
24 
UCharacterIteratorWrapper(UCharacterIterator iter)25     public UCharacterIteratorWrapper(UCharacterIterator iter){
26         this.iterator = iter;
27     }
28 
29     private UCharacterIterator iterator;
30 
31 
32     /**
33      * Sets the position to getBeginIndex() and returns the character at that
34      * position.
35      * @return the first character in the text, or DONE if the text is empty
36      * @see #getBeginIndex()
37      */
38     @Override
first()39     public char first(){
40         //UCharacterIterator always iterates from 0 to length
41         iterator.setToStart();
42         return (char)iterator.current();
43     }
44 
45     /**
46      * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
47      * and returns the character at that position.
48      * @return the last character in the text, or DONE if the text is empty
49      * @see #getEndIndex()
50      */
51     @Override
last()52     public char last(){
53         iterator.setToLimit();
54         return (char)iterator.previous();
55     }
56 
57     /**
58      * Gets the character at the current position (as returned by getIndex()).
59      * @return the character at the current position or DONE if the current
60      * position is off the end of the text.
61      * @see #getIndex()
62      */
63     @Override
current()64     public char current(){
65         return (char) iterator.current();
66     }
67 
68     /**
69      * Increments the iterator's index by one and returns the character
70      * at the new index.  If the resulting index is greater or equal
71      * to getEndIndex(), the current index is reset to getEndIndex() and
72      * a value of DONE is returned.
73      * @return the character at the new position or DONE if the new
74      * position is off the end of the text range.
75      */
76     @Override
next()77     public char next(){
78         //pre-increment
79         iterator.next();
80         return (char) iterator.current();
81     }
82 
83     /**
84      * Decrements the iterator's index by one and returns the character
85      * at the new index. If the current index is getBeginIndex(), the index
86      * remains at getBeginIndex() and a value of DONE is returned.
87      * @return the character at the new position or DONE if the current
88      * position is equal to getBeginIndex().
89      */
90     @Override
previous()91     public char previous(){
92         //pre-decrement
93         return (char) iterator.previous();
94     }
95 
96     /**
97      * Sets the position to the specified position in the text and returns that
98      * character.
99      * @param position the position within the text.  Valid values range from
100      * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
101      * if an invalid value is supplied.
102      * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
103      */
104     @Override
setIndex(int position)105     public char setIndex(int position){
106         iterator.setIndex(position);
107         return (char) iterator.current();
108     }
109 
110     /**
111      * Returns the start index of the text.
112      * @return the index at which the text begins.
113      */
114     @Override
getBeginIndex()115     public int getBeginIndex(){
116         //UCharacterIterator always starts from 0
117         return 0;
118     }
119 
120     /**
121      * Returns the end index of the text.  This index is the index of the first
122      * character following the end of the text.
123      * @return the index after the last character in the text
124      */
125     @Override
getEndIndex()126     public int getEndIndex(){
127         return iterator.getLength();
128     }
129 
130     /**
131      * Returns the current index.
132      * @return the current index.
133      */
134     @Override
getIndex()135     public int getIndex(){
136         return iterator.getIndex();
137     }
138 
139     /**
140      * Create a copy of this iterator
141      * @return A copy of this
142      */
143     @Override
clone()144     public Object clone(){
145         try {
146             UCharacterIteratorWrapper result = (UCharacterIteratorWrapper) super.clone();
147             result.iterator = (UCharacterIterator)this.iterator.clone();
148             return result;
149         } catch (CloneNotSupportedException e) {
150             return null; // only invoked if bad underlying character iterator
151         }
152     }
153 
154 }
155 
156