Javolution 6.0.0 java
Cursor.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.text;
10 
44 public class Cursor {
45 
49  private int index;
50 
54  public Cursor() {}
55 
61  public final int getIndex() {
62  return index;
63  }
64 
70  public final void setIndex(int i) {
71  index = i;
72  }
73 
81  public final boolean atEnd(CharSequence csq) {
82  return index >= csq.length();
83  }
84 
93  public final boolean at(char c, CharSequence csq) {
94  return index < csq.length() ? csq.charAt(index) == c : false;
95  }
96 
105  public final boolean at(CharSet charSet, CharSequence csq) {
106  return index < csq.length() ? charSet.contains(csq.charAt(index))
107  : false;
108  }
109 
119  public final boolean at(String str, CharSequence csq) {
120  int i = index;
121  int length = csq.length();
122  for (int j = 0; j < str.length();) {
123  if ((i >= length) || (str.charAt(j++) != csq.charAt(i++)))
124  return false;
125  }
126  return true;
127  }
128 
136  public final char currentChar(CharSequence csq) {
137  return csq.charAt(index);
138  }
139 
148  public final char nextChar(CharSequence csq) {
149  return csq.charAt(index++);
150  }
151 
162  public final boolean skipAny(char c, CharSequence csq) {
163  int i = index;
164  int n = csq.length();
165  for (; (i < n) && (csq.charAt(i) == c); i++) {}
166  if (i == index)
167  return false; // Cursor did not moved.
168  index = i;
169  return true;
170  }
171 
188  public final boolean skipAny(CharSet charSet, CharSequence csq) {
189  int i = index;
190  int n = csq.length();
191  for (; (i < n) && charSet.contains(csq.charAt(i)); i++) {}
192  if (i == index)
193  return false; // Cursor did not moved.
194  index = i;
195  return true;
196  }
197 
211  public final boolean skip(char c, CharSequence csq) {
212  if (this.at(c, csq)) {
213  index++;
214  return true;
215  } else {
216  return false;
217  }
218  }
219 
233  public final boolean skip(CharSet charSet, CharSequence csq) {
234  if (this.at(charSet, csq)) {
235  index++;
236  return true;
237  } else {
238  return false;
239  }
240  }
241 
256  public final boolean skip(String str, CharSequence csq) {
257  if (this.at(str, csq)) {
258  index += str.length();
259  return true;
260  } else {
261  return false;
262  }
263  }
264 
278  public final CharSequence nextToken(CharSequence csq, char c) {
279  int n = csq.length();
280  for (int i = index; i < n; i++) {
281  if (csq.charAt(i) != c) {
282  int j = i;
283  for (; (++j < n) && (csq.charAt(j) != c);) {
284  // Loop until j at the end of sequence or at specified character.
285  }
286  index = j;
287  return csq.subSequence(i, j);
288  }
289  }
290  index = n;
291  return null;
292  }
293 
307  public final CharSequence nextToken(CharSequence csq, CharSet charSet) {
308  int n = csq.length();
309  for (int i = index; i < n; i++) {
310  if (!charSet.contains(csq.charAt(i))) {
311  int j = i;
312  for (; (++j < n) && !charSet.contains(csq.charAt(j));) {
313  // Loop until j at the end of sequence or at specified characters.
314  }
315  index = j;
316  return csq.subSequence(i, j);
317  }
318  }
319  index = n;
320  return null;
321  }
322 
329  public final CharSequence head(CharSequence csq) {
330  return csq.subSequence(0, index);
331  }
332 
339  public final CharSequence tail(CharSequence csq) {
340  return csq.subSequence(index, csq.length());
341  }
342 
348  public final Cursor increment() {
349  return increment(1);
350  }
351 
358  public final Cursor increment(int i) {
359  index += i;
360  return this;
361  }
362 
368  @Override
369  public String toString() {
370  return "Cursor: " + index;
371  }
372 
379  @Override
380  public boolean equals(Object obj) {
381  if (obj == null)
382  return false;
383  if (!(obj instanceof Cursor))
384  return false;
385  return index == ((Cursor) obj).index;
386  }
387 
393  @Override
394  public int hashCode() {
395  return index;
396  }
397 }
javolution.text.Cursor.skipAny
final boolean skipAny(char c, CharSequence csq)
Definition: Cursor.java:162
javolution.text.Cursor.at
final boolean at(char c, CharSequence csq)
Definition: Cursor.java:93
javolution.text.Cursor.nextToken
final CharSequence nextToken(CharSequence csq, CharSet charSet)
Definition: Cursor.java:307
javolution.text.Cursor.setIndex
final void setIndex(int i)
Definition: Cursor.java:70
javolution.text.Cursor.at
final boolean at(CharSet charSet, CharSequence csq)
Definition: Cursor.java:105
javolution.text.Cursor.index
int index
Definition: Cursor.java:49
javolution.text.Cursor.nextToken
final CharSequence nextToken(CharSequence csq, char c)
Definition: Cursor.java:278
javolution.text.Cursor.getIndex
final int getIndex()
Definition: Cursor.java:61
javolution.text.Cursor
Definition: Cursor.java:44
javolution.text.CharSet.contains
boolean contains(char c)
Definition: CharSet.java:135
javolution.text.Cursor.skip
final boolean skip(char c, CharSequence csq)
Definition: Cursor.java:211
javolution.text.Cursor.head
final CharSequence head(CharSequence csq)
Definition: Cursor.java:329
javolution.text.Cursor.skip
final boolean skip(CharSet charSet, CharSequence csq)
Definition: Cursor.java:233
javolution.text.Cursor.Cursor
Cursor()
Definition: Cursor.java:54
javolution.text.CharSet
Definition: CharSet.java:35
javolution.text.Cursor.skip
final boolean skip(String str, CharSequence csq)
Definition: Cursor.java:256
javolution.text.Cursor.tail
final CharSequence tail(CharSequence csq)
Definition: Cursor.java:339
javolution.text.Cursor.currentChar
final char currentChar(CharSequence csq)
Definition: Cursor.java:136
javolution.text.Cursor.increment
final Cursor increment()
Definition: Cursor.java:348
javolution.text.Cursor.toString
String toString()
Definition: Cursor.java:369
javolution.text.Cursor.increment
final Cursor increment(int i)
Definition: Cursor.java:358
javolution.text.Cursor.hashCode
int hashCode()
Definition: Cursor.java:394
javolution.text.Cursor.equals
boolean equals(Object obj)
Definition: Cursor.java:380
javolution.text.Cursor.atEnd
final boolean atEnd(CharSequence csq)
Definition: Cursor.java:81
javolution.text.Cursor.skipAny
final boolean skipAny(CharSet charSet, CharSequence csq)
Definition: Cursor.java:188
javolution.text.Cursor.at
final boolean at(String str, CharSequence csq)
Definition: Cursor.java:119
javolution.text.Cursor.nextChar
final char nextChar(CharSequence csq)
Definition: Cursor.java:148