A massive organize imports and formatting of the sources using default Eclipse code...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / util / MementoTokenizer.java
1 /*******************************************************************************
2  * Copyright (c) 2004 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials 
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/cpl-v10.html
7  * 
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  *******************************************************************************/
11 package net.sourceforge.phpdt.internal.core.util;
12
13 import net.sourceforge.phpdt.core.compiler.CharOperation;
14 import net.sourceforge.phpdt.internal.core.JavaElement;
15
16 public class MementoTokenizer {
17         private static final String COUNT = Character
18                         .toString(JavaElement.JEM_COUNT);
19
20         private static final String JAVAPROJECT = Character
21                         .toString(JavaElement.JEM_JAVAPROJECT);
22
23         private static final String PACKAGEFRAGMENTROOT = Character
24                         .toString(JavaElement.JEM_PACKAGEFRAGMENTROOT);
25
26         private static final String PACKAGEFRAGMENT = Character
27                         .toString(JavaElement.JEM_PACKAGEFRAGMENT);
28
29         private static final String FIELD = Character
30                         .toString(JavaElement.JEM_FIELD);
31
32         private static final String METHOD = Character
33                         .toString(JavaElement.JEM_METHOD);
34
35         private static final String INITIALIZER = Character
36                         .toString(JavaElement.JEM_INITIALIZER);
37
38         private static final String COMPILATIONUNIT = Character
39                         .toString(JavaElement.JEM_COMPILATIONUNIT);
40
41         // private static final String CLASSFILE =
42         // Character.toString(JavaElement.JEM_CLASSFILE);
43         private static final String TYPE = Character.toString(JavaElement.JEM_TYPE);
44
45         private static final String PACKAGEDECLARATION = Character
46                         .toString(JavaElement.JEM_PACKAGEDECLARATION);
47
48         private static final String IMPORTDECLARATION = Character
49                         .toString(JavaElement.JEM_IMPORTDECLARATION);
50
51         private static final String LOCALVARIABLE = Character
52                         .toString(JavaElement.JEM_LOCALVARIABLE);
53
54         private final char[] memento;
55
56         private final int length;
57
58         private int index = 0;
59
60         public MementoTokenizer(String memento) {
61                 this.memento = memento.toCharArray();
62                 this.length = this.memento.length;
63         }
64
65         public boolean hasMoreTokens() {
66                 return this.index < this.length;
67         }
68
69         public String nextToken() {
70                 int start = this.index;
71                 StringBuffer buffer = null;
72                 switch (this.memento[this.index++]) {
73                 case JavaElement.JEM_ESCAPE:
74                         buffer = new StringBuffer();
75                         buffer.append(this.memento[this.index]);
76                         start = ++this.index;
77                         break;
78                 case JavaElement.JEM_COUNT:
79                         return COUNT;
80                 case JavaElement.JEM_JAVAPROJECT:
81                         return JAVAPROJECT;
82                 case JavaElement.JEM_PACKAGEFRAGMENTROOT:
83                         return PACKAGEFRAGMENTROOT;
84                 case JavaElement.JEM_PACKAGEFRAGMENT:
85                         return PACKAGEFRAGMENT;
86                 case JavaElement.JEM_FIELD:
87                         return FIELD;
88                 case JavaElement.JEM_METHOD:
89                         return METHOD;
90                 case JavaElement.JEM_INITIALIZER:
91                         return INITIALIZER;
92                 case JavaElement.JEM_COMPILATIONUNIT:
93                         return COMPILATIONUNIT;
94                         // case JavaElement.JEM_CLASSFILE:
95                         // return CLASSFILE;
96                 case JavaElement.JEM_TYPE:
97                         return TYPE;
98                 case JavaElement.JEM_PACKAGEDECLARATION:
99                         return PACKAGEDECLARATION;
100                 case JavaElement.JEM_IMPORTDECLARATION:
101                         return IMPORTDECLARATION;
102                 case JavaElement.JEM_LOCALVARIABLE:
103                         return LOCALVARIABLE;
104                 }
105                 loop: while (this.index < this.length) {
106                         switch (this.memento[this.index]) {
107                         case JavaElement.JEM_ESCAPE:
108                                 if (buffer == null)
109                                         buffer = new StringBuffer();
110                                 buffer.append(CharOperation.subarray(this.memento, start,
111                                                 this.index));
112                                 start = ++this.index;
113                                 break;
114                         case JavaElement.JEM_COUNT:
115                         case JavaElement.JEM_JAVAPROJECT:
116                         case JavaElement.JEM_PACKAGEFRAGMENTROOT:
117                         case JavaElement.JEM_PACKAGEFRAGMENT:
118                         case JavaElement.JEM_FIELD:
119                         case JavaElement.JEM_METHOD:
120                         case JavaElement.JEM_INITIALIZER:
121                         case JavaElement.JEM_COMPILATIONUNIT:
122                                 // case JavaElement.JEM_CLASSFILE:
123                         case JavaElement.JEM_TYPE:
124                         case JavaElement.JEM_PACKAGEDECLARATION:
125                         case JavaElement.JEM_IMPORTDECLARATION:
126                         case JavaElement.JEM_LOCALVARIABLE:
127                                 break loop;
128                         }
129                         this.index++;
130                 }
131                 if (buffer != null) {
132                         buffer.append(CharOperation.subarray(this.memento, start,
133                                         this.index));
134                         return buffer.toString();
135                 } else {
136                         return new String(CharOperation.subarray(this.memento, start,
137                                         this.index));
138                 }
139         }
140
141 }