source: other-projects/rsyntax-textarea/devel-packages/jflex-1.4.3/src/JFlex/CharSetEnumerator.java@ 25584

Last change on this file since 25584 was 25584, checked in by davidb, 12 years ago

Initial cut an a text edit area for GLI that supports color syntax highlighting

File size: 2.8 KB
Line 
1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * JFlex 1.4.3 *
3 * Copyright (C) 1998-2009 Gerwin Klein <[email protected]> *
4 * All rights reserved. *
5 * *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License. See the file *
8 * COPYRIGHT for more information. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License along *
16 * with this program; if not, write to the Free Software Foundation, Inc., *
17 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
18 * *
19 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
20
21package JFlex;
22
23
24/**
25 * Enumerator for the elements of a CharSet.
26 *
27 * Does not implement java.util.Enumeration, but supports the same protocol.
28 *
29 * @author Gerwin Klein
30 * @version JFlex 1.4.3, $Revision: 433 $, $Date: 2009-01-31 19:52:34 +1100 (Sat, 31 Jan 2009) $
31 */
32final public class CharSetEnumerator {
33
34 private int index;
35 private int offset;
36 private long mask = 1;
37
38 private CharSet set;
39
40 public CharSetEnumerator(CharSet characters) {
41 set = characters;
42
43 while (index < set.bits.length && set.bits[index] == 0)
44 index++;
45
46 if (index >= set.bits.length) return;
47
48 while (offset <= CharSet.MOD && ((set.bits[index] & mask) == 0)) {
49 mask<<= 1;
50 offset++;
51 }
52 }
53
54 private void advance() {
55 do {
56 offset++;
57 mask<<= 1;
58 } while (offset <= CharSet.MOD && ((set.bits[index] & mask) == 0));
59
60 if (offset > CharSet.MOD) {
61 do
62 index++;
63 while (index < set.bits.length && set.bits[index] == 0);
64
65 if (index >= set.bits.length) return;
66
67 offset = 0;
68 mask = 1;
69
70 while (offset <= CharSet.MOD && ((set.bits[index] & mask) == 0)) {
71 mask<<= 1;
72 offset++;
73 }
74 }
75 }
76
77 public boolean hasMoreElements() {
78 return index < set.bits.length;
79 }
80
81 public int nextElement() {
82 int x = (index << CharSet.BITS) + offset;
83 advance();
84 return x;
85 }
86
87}
88
Note: See TracBrowser for help on using the repository browser.