Source code: com/virtuosotechnologies/asaph/notationmanager/StringScanner.java
1 /*
2 ================================================================================
3
4 FILE: StringScanner.java
5
6 PROJECT:
7
8 Asaph
9
10 CONTENTS:
11
12 A string scanner helper
13
14 PROGRAMMERS:
15
16 Daniel Azuma (DA) <dazuma@kagi.com>
17
18 COPYRIGHT:
19
20 Copyright (C) 2003 Daniel Azuma (dazuma@kagi.com)
21
22 This program is free software; you can redistribute it and/or
23 modify it under the terms of the GNU General Public License as
24 published by the Free Software Foundation; either version 2
25 of the License, or (at your option) any later version.
26
27 This program is distributed in the hope that it will be useful,
28 but WITHOUT ANY WARRANTY; without even the implied warranty of
29 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 GNU General Public License for more details.
31
32 You should have received a copy of the GNU General Public
33 License along with this program; if not, write to
34 Free Software Foundation, Inc.
35 59 Temple Place, Suite 330
36 Boston, MA 02111-1307 USA
37
38 ================================================================================
39 */
40
41
42 package com.virtuosotechnologies.asaph.notationmanager;
43
44
45 /**
46 * A string scanner helper.
47 */
48 /*package*/ class StringScanner
49 {
50 private char[] chars_;
51 private int pos_;
52
53
54 /**
55 * Constructor
56 *
57 * @param str string to scan
58 */
59 /*package*/ StringScanner(
60 String str)
61 {
62 chars_ = str.toCharArray();
63 pos_ = 0;
64 }
65
66
67 /**
68 * Returns the next character
69 *
70 * @return next character, or 0 for end of string
71 */
72 /*package*/ char nextChar()
73 {
74 if (pos_ == chars_.length)
75 {
76 return 0;
77 }
78 return chars_[pos_++];
79 }
80
81
82 /**
83 * Returns true if there is more
84 *
85 * @return true if has more
86 */
87 /*package*/ boolean hasMore()
88 {
89 return pos_ != chars_.length;
90 }
91
92
93 /**
94 * Pushes last character back onto the string.
95 */
96 /*package*/ void pushBack()
97 {
98 if (pos_ > 0)
99 {
100 --pos_;
101 }
102 }
103 }