History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/text/normalizer/ReplaceableUCharacterIterator.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/text/normalizer/ReplaceableUCharacterIterator.java+190−0
@@ -0,0 +1,190 @@
1+/*
2+ * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+/*
27+ *******************************************************************************
28+ * (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
29+ * *
30+ * The original version of this source code and documentation is copyrighted *
31+ * and owned by IBM, These materials are provided under terms of a License *
32+ * Agreement between IBM and Sun. This technology is protected by multiple *
33+ * US and International patents. This notice and attribution to IBM may not *
34+ * to removed. *
35+ *******************************************************************************
36+ */
37+
38+package sun.text.normalizer;
39+
40+/**
41+ * DLF docs must define behavior when Replaceable is mutated underneath
42+ * the iterator.
43+ *
44+ * This and ICUCharacterIterator share some code, maybe they should share
45+ * an implementation, or the common state and implementation should be
46+ * moved up into UCharacterIterator.
47+ *
48+ * What are first, last, and getBeginIndex doing here?!?!?!
49+ */
50+public class ReplaceableUCharacterIterator extends UCharacterIterator {
51+
52+ // public constructor ------------------------------------------------------
53+
54+ /**
55+ * Public constructor
56+ * @param str text which the iterator will be based on
57+ */
58+ public ReplaceableUCharacterIterator(String str){
59+ if(str==null){
60+ throw new IllegalArgumentException();
61+ }
62+ this.replaceable = new ReplaceableString(str);
63+ this.currentIndex = 0;
64+ }
65+
66+ //// for StringPrep
67+ /**
68+ * Public constructor
69+ * @param buf buffer of text on which the iterator will be based
70+ */
71+ public ReplaceableUCharacterIterator(StringBuffer buf){
72+ if(buf==null){
73+ throw new IllegalArgumentException();
74+ }
75+ this.replaceable = new ReplaceableString(buf);
76+ this.currentIndex = 0;
77+ }
78+
79+ // public methods ----------------------------------------------------------
80+
81+ /**
82+ * Creates a copy of this iterator, does not clone the underlying
83+ * <code>Replaceable</code>object
84+ * @return copy of this iterator
85+ */
86+ public Object clone(){
87+ try {
88+ return super.clone();
89+ } catch (CloneNotSupportedException e) {
90+ return null; // never invoked
91+ }
92+ }
93+
94+ /**
95+ * Returns the current UTF16 character.
96+ * @return current UTF16 character
97+ */
98+ public int current(){
99+ if (currentIndex < replaceable.length()) {
100+ return replaceable.charAt(currentIndex);
101+ }
102+ return DONE;
103+ }
104+
105+ /**
106+ * Returns the length of the text
107+ * @return length of the text
108+ */
109+ public int getLength(){
110+ return replaceable.length();
111+ }
112+
113+ /**
114+ * Gets the current currentIndex in text.
115+ * @return current currentIndex in text.
116+ */
117+ public int getIndex(){
118+ return currentIndex;
119+ }
120+
121+ /**
122+ * Returns next UTF16 character and increments the iterator's currentIndex by 1.
123+ * If the resulting currentIndex is greater or equal to the text length, the
124+ * currentIndex is reset to the text length and a value of DONECODEPOINT is
125+ * returned.
126+ * @return next UTF16 character in text or DONE if the new currentIndex is off the
127+ * end of the text range.
128+ */
129+ public int next(){
130+ if (currentIndex < replaceable.length()) {
131+ return replaceable.charAt(currentIndex++);
132+ }
133+ return DONE;
134+ }
135+
136+
137+ /**
138+ * Returns previous UTF16 character and decrements the iterator's currentIndex by
139+ * 1.
140+ * If the resulting currentIndex is less than 0, the currentIndex is reset to 0 and a
141+ * value of DONECODEPOINT is returned.
142+ * @return next UTF16 character in text or DONE if the new currentIndex is off the
143+ * start of the text range.
144+ */
145+ public int previous(){
146+ if (currentIndex > 0) {
147+ return replaceable.charAt(--currentIndex);
148+ }
149+ return DONE;
150+ }
151+
152+ /**
153+ * <p>Sets the currentIndex to the specified currentIndex in the text and returns that
154+ * single UTF16 character at currentIndex.
155+ * This assumes the text is stored as 16-bit code units.</p>
156+ * @param currentIndex the currentIndex within the text.
157+ * @exception IllegalArgumentException is thrown if an invalid currentIndex is
158+ * supplied. i.e. currentIndex is out of bounds.
159+ * @return the character at the specified currentIndex or DONE if the specified
160+ * currentIndex is equal to the end of the text.
161+ */
162+ public void setIndex(int currentIndex) {
163+ if (currentIndex < 0 || currentIndex > replaceable.length()) {
164+ throw new IllegalArgumentException();
165+ }
166+ this.currentIndex = currentIndex;
167+ }
168+
169+ //// for StringPrep
170+ public int getText(char[] fillIn, int offset){
171+ int length = replaceable.length();
172+ if(offset < 0 || offset + length > fillIn.length){
173+ throw new IndexOutOfBoundsException(Integer.toString(length));
174+ }
175+ replaceable.getChars(0,length,fillIn,offset);
176+ return length;
177+ }
178+
179+ // private data members ----------------------------------------------------
180+
181+ /**
182+ * Replacable object
183+ */
184+ private Replaceable replaceable;
185+ /**
186+ * Current currentIndex
187+ */
188+ private int currentIndex;
189+
190+}