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
11package android.icu.impl;
12
13import android.icu.text.UCharacterIterator;
14
15
16/**
17 * @author Doug Felt
18 * @hide Only a subset of ICU is exposed in Android
19 *
20 */
21
22public final class UCharArrayIterator extends UCharacterIterator {
23    private final char[] text;
24    private final int start;
25    private final int limit;
26    private int pos;
27
28    public UCharArrayIterator(char[] text, int start, int limit) {
29        if (start < 0 || limit > text.length || start > limit) {
30            throw new IllegalArgumentException("start: " + start + " or limit: "
31                                               + limit + " out of range [0, "
32                                               + text.length + ")");
33        }
34        this.text = text;
35        this.start = start;
36        this.limit = limit;
37
38        this.pos = start;
39    }
40
41    @Override
42    public int current() {
43        return pos < limit ? text[pos] : DONE;
44    }
45
46    @Override
47    public int getLength() {
48        return limit - start;
49    }
50
51    @Override
52    public int getIndex() {
53        return pos - start;
54    }
55
56    @Override
57    public int next() {
58        return pos < limit ? text[pos++] : DONE;
59    }
60
61    @Override
62    public int previous() {
63        return pos > start ? text[--pos] : DONE;
64    }
65
66    @Override
67    public void setIndex(int index) {
68        if (index < 0 || index > limit - start) {
69            throw new IndexOutOfBoundsException("index: " + index +
70                                                " out of range [0, "
71                                                + (limit - start) + ")");
72        }
73        pos = start + index;
74    }
75
76    @Override
77    public int getText(char[] fillIn, int offset) {
78        int len = limit - start;
79        System.arraycopy(text, start, fillIn, offset, len);
80        return len;
81    }
82
83    /**
84     * Creates a copy of this iterator, does not clone the underlying
85     * <code>Replaceable</code>object
86     * @return copy of this iterator
87     */
88    @Override
89    public Object clone(){
90        try {
91          return super.clone();
92        } catch (CloneNotSupportedException e) {
93            return null; // never invoked
94        }
95    }
96}