jaxp/src/com/sun/org/apache/regexp/internal/CharacterArrayCharacterIterator.java
changeset 12457 c348e06f0e82
parent 6 7f561c08de6b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/src/com/sun/org/apache/regexp/internal/CharacterArrayCharacterIterator.java	Thu Apr 12 08:38:26 2012 -0700
@@ -0,0 +1,76 @@
+/*
+ * reserved comment block
+ * DO NOT REMOVE OR ALTER!
+ */
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.org.apache.regexp.internal;
+
+/**
+ * Encapsulates char[] as CharacterIterator
+ *
+ * @author <a href="mailto:ales.novak@netbeans.com">Ales Novak</a>
+ */
+public final class CharacterArrayCharacterIterator implements CharacterIterator
+{
+    /** encapsulated */
+    private final char[] src;
+    /** offset in the char array */
+    private final int off;
+    /** used portion of the array */
+    private final int len;
+
+    /** @param src - encapsulated String */
+    public CharacterArrayCharacterIterator(char[] src, int off, int len)
+    {
+        this.src = src;
+        this.off = off;
+        this.len = len;
+    }
+
+    /** @return a substring */
+    public String substring(int beginIndex, int endIndex)
+    {
+        if (endIndex > len) {
+            throw new IndexOutOfBoundsException("endIndex=" + endIndex
+                                                + "; sequence size=" + len);
+        }
+        if (beginIndex < 0 || beginIndex > endIndex) {
+            throw new IndexOutOfBoundsException("beginIndex=" + beginIndex
+                                                + "; endIndex=" + endIndex);
+        }
+        return new String(src, off + beginIndex, endIndex - beginIndex);
+    }
+
+    /** @return a substring */
+    public String substring(int beginIndex)
+    {
+        return substring(beginIndex, len);
+    }
+
+    /** @return a character at the specified position. */
+    public char charAt(int pos)
+    {
+        return src[off + pos];
+    }
+
+    /** @return <tt>true</tt> iff if the specified index is after the end of the character stream */
+    public boolean isEnd(int pos)
+    {
+        return (pos >= len);
+    }
+}