KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > oro > text > regex > CharStringPointer


1 package org.apache.oro.text.regex;
2
3 /* ====================================================================
4  * The Apache Software License, Version 1.1
5  *
6  * Copyright (c) 2000 The Apache Software Foundation. All rights
7  * reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution,
22  * if any, must include the following acknowledgment:
23  * "This product includes software developed by the
24  * Apache Software Foundation (http://www.apache.org/)."
25  * Alternately, this acknowledgment may appear in the software itself,
26  * if and wherever such third-party acknowledgments normally appear.
27  *
28  * 4. The names "Apache" and "Apache Software Foundation", "Jakarta-Oro"
29  * must not be used to endorse or promote products derived from this
30  * software without prior written permission. For written
31  * permission, please contact apache@apache.org.
32  *
33  * 5. Products derived from this software may not be called "Apache"
34  * or "Jakarta-Oro", nor may "Apache" or "Jakarta-Oro" appear in their
35  * name, without prior written permission of the Apache Software Foundation.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals on behalf of the Apache Software Foundation. For more
53  * information on the Apache Software Foundation, please see
54  * <http://www.apache.org/>.
55  *
56  * Portions of this software are based upon software originally written
57  * by Daniel F. Savarese. We appreciate his contributions.
58  */

59
60 /**
61  * The CharStringPointer class is used to facilitate traversal of a char[]
62  * in the manner pointer traversals of strings are performed in C/C++.
63  * It is expected that the compiler will inline all the functions.
64
65  @author <a HREF="dfs@savarese.org">Daniel F. Savarese</a>
66  @version $Id: CharStringPointer.java,v 1.1.1.1 2000/07/23 23:08:51 jon Exp $
67
68  */

69 final class CharStringPointer {
70   static final char _END_OF_STRING = Character.MAX_VALUE;
71   int _offset;
72   char[] _array;
73
74   CharStringPointer(char[] charArray, int offset) {
75     _array = charArray;
76     _offset = offset;
77   }
78
79   CharStringPointer(char[] charArray) {
80     this(charArray, 0);
81   }
82
83   char _getValue() {
84     return _getValue(_offset);
85   }
86
87   char _getValue(int offset) {
88     if(offset < _array.length && offset >= 0)
89       return _array[offset];
90     return _END_OF_STRING;
91   }
92
93   char _getValueRelative(int offset) {
94     return _getValue(_offset + offset);
95   }
96
97   int _getLength() { return _array.length; }
98
99   int _getOffset() { return _offset; }
100
101   void _setOffset(int offset) { _offset = offset; }
102
103   boolean _isAtEnd() {
104     return (_offset >= _array.length);
105   }
106
107   char _increment(int inc) {
108     _offset+=inc;
109     if(_isAtEnd()) {
110       _offset = _array.length;
111       return _END_OF_STRING;
112     }
113
114     return _array[_offset];
115   }
116
117   char _increment() { return _increment(1); }
118
119   char _decrement(int inc) {
120     _offset-=inc;
121     if(_offset < 0)
122       _offset = 0;
123
124     return _array[_offset];
125   }
126
127   char _decrement() { return _decrement(1); }
128
129   char _postIncrement() {
130     char ret;
131     ret = _getValue();
132     _increment();
133     return ret;
134   }
135
136   char _postDecrement() {
137     char ret;
138     ret = _getValue();
139     _decrement();
140     return ret;
141   }
142
143
144   String JavaDoc _toString(int offset) {
145     return new String JavaDoc(_array, offset, _array.length - offset);
146   }
147
148   public String JavaDoc toString() {
149     return _toString(0);
150   }
151 }
152
Popular Tags