Clover coverage report - PMD - 3.7
Coverage timestamp: Wed May 31 2006 09:25:59 EDT

file stats: | LOC: | 439 |  | Methods: | 36
| NCLOC: | 353 |  | Classes: | 1

Source file | Conditionals | Statements | Methods | TOTAL

SimpleCharStream.java

23.1%

32.7%

33.3%

30.9%

1 |  | /* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
2 |  | package net.sourceforge.pmd.cpd.cppast;
3 |  |
4 |  | /**
5 |  | * An implementation of interface CharStream, where the stream is assumed to
6 |  | * contain only ASCII characters (without unicode processing).
7 |  | */
8 |  |
9 |  | public class SimpleCharStream
10 |  | {
11 |  | public static final boolean staticFlag = false;
12 |  | int bufsize;
13 |  | int available;
14 |  | int tokenBegin;
15 |  | public int bufpos = -1;
16 |  | protected int bufline[];
17 |  | protected int bufcolumn[];
18 |  |
19 |  | protected int column = 0;
20 |  | protected int line = 1;
21 |  |
22 |  | protected boolean prevCharIsCR = false;
23 |  | protected boolean prevCharIsLF = false;
24 |  |
25 |  | protected java.io.Reader inputStream;
26 |  |
27 |  | protected char[] buffer;
28 |  | protected int maxNextCharInd = 0;
29 |  | protected int inBuf = 0;
30 |  | protected int tabSize = 8;
31 |  |
32 | 0 | protected void setTabSize(int i) { tabSize = i; }
33 | 0 | protected int getTabSize(int i) { return tabSize; }
34 |  |
35 |  |
36 | 0 | protected void ExpandBuff(boolean wrapAround)
37 |  | {
38 | 0 | char[] newbuffer = new char[bufsize + 2048];
39 | 0 | int newbufline[] = new int[bufsize + 2048];
40 | 0 | int newbufcolumn[] = new int[bufsize + 2048];
41 |  |
42 | 0 | try
43 |  | {
44 | 0 | if (wrapAround)
45 |  | {
46 | 0 | System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
47 | 0 | System.arraycopy(buffer, 0, newbuffer,
48 |  | bufsize - tokenBegin, bufpos);
49 | 0 | buffer = newbuffer;
50 |  |
51 | 0 | System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
52 | 0 | System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
53 | 0 | bufline = newbufline;
54 |  |
55 | 0 | System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
56 | 0 | System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
57 | 0 | bufcolumn = newbufcolumn;
58 |  |
59 | 0 | maxNextCharInd = (bufpos += (bufsize - tokenBegin));
60 |  | }
61 |  | else
62 |  | {
63 | 0 | System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
64 | 0 | buffer = newbuffer;
65 |  |
66 | 0 | System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
67 | 0 | bufline = newbufline;
68 |  |
69 | 0 | System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
70 | 0 | bufcolumn = newbufcolumn;
71 |  |
72 | 0 | maxNextCharInd = (bufpos -= tokenBegin);
73 |  | }
74 |  | }
75 |  | catch (Throwable t)
76 |  | {
77 | 0 | throw new Error(t.getMessage());
78 |  | }
79 |  |
80 |  |
81 | 0 | bufsize += 2048;
82 | 0 | available = bufsize;
83 | 0 | tokenBegin = 0;
84 |  | }
85 |  |
86 | 12 | protected void FillBuff() throws java.io.IOException
87 |  | {
88 | 12 | if (maxNextCharInd == available)
89 |  | {
90 | 0 | if (available == bufsize)
91 |  | {
92 | 0 | if (tokenBegin > 2048)
93 |  | {
94 | 0 | bufpos = maxNextCharInd = 0;
95 | 0 | available = tokenBegin;
96 |  | }
97 | 0 | else if (tokenBegin < 0)
98 | 0 | bufpos = maxNextCharInd = 0;
99 |  | else
100 | 0 | ExpandBuff(false);
101 |  | }
102 | 0 | else if (available > tokenBegin)
103 | 0 | available = bufsize;
104 | 0 | else if ((tokenBegin - available) < 2048)
105 | 0 | ExpandBuff(true);
106 |  | else
107 | 0 | available = tokenBegin;
108 |  | }
109 |  |
110 | 12 | int i;
111 | 12 | try {
112 | ? | if ((i = inputStream.read(buffer, maxNextCharInd,
113 |  | available - maxNextCharInd)) == -1)
114 |  | {
115 | 4 | inputStream.close();
116 | 4 | throw new java.io.IOException();
117 |  | }
118 |  | else
119 | 4 | maxNextCharInd += i;
120 | 4 | return;
121 |  | }
122 |  | catch(java.io.IOException e) {
123 | 8 | --bufpos;
124 | 8 | backup(0);
125 | 8 | if (tokenBegin == -1)
126 | 8 | tokenBegin = bufpos;
127 | 8 | throw e;
128 |  | }
129 |  | }
130 |  |
131 | 80 | public char BeginToken() throws java.io.IOException
132 |  | {
133 | 80 | tokenBegin = -1;
134 | 80 | char c = readChar();
135 | 72 | tokenBegin = bufpos;
136 |  |
137 | 72 | return c;
138 |  | }
139 |  |
140 | 225 | protected void UpdateLineColumn(char c)
141 |  | {
142 | 225 | column++;
143 |  |
144 | 225 | if (prevCharIsLF)
145 |  | {
146 | 7 | prevCharIsLF = false;
147 | 7 | line += (column = 1);
148 |  | }
149 | 218 | else if (prevCharIsCR)
150 |  | {
151 | 0 | prevCharIsCR = false;
152 | 0 | if (c == '\n')
153 |  | {
154 | 0 | prevCharIsLF = true;
155 |  | }
156 |  | else
157 | 0 | line += (column = 1);
158 |  | }
159 |  |
160 | 225 | switch (c)
161 |  | {
162 | 0 | case '\r' :
163 | 0 | prevCharIsCR = true;
164 | 0 | break;
165 | 11 | case '\n' :
166 | 11 | prevCharIsLF = true;
167 | 11 | break;
168 | 0 | case '\t' :
169 | 0 | column--;
170 | 0 | column += (tabSize - (column % tabSize));
171 | 0 | break;
172 | 214 | default :
173 | 214 | break;
174 |  | }
175 |  |
176 | 225 | bufline[bufpos] = line;
177 | 225 | bufcolumn[bufpos] = column;
178 |  | }
179 |  |
180 | 252 | public char readChar() throws java.io.IOException
181 |  | {
182 | 252 | if (inBuf > 0)
183 |  | {
184 | 19 | --inBuf;
185 |  |
186 | 19 | if (++bufpos == bufsize)
187 | 0 | bufpos = 0;
188 |  |
189 | 19 | return buffer[bufpos];
190 |  | }
191 |  |
192 | 233 | if (++bufpos >= maxNextCharInd)
193 | 12 | FillBuff();
194 |  |
195 | 225 | char c = buffer[bufpos];
196 |  |
197 | 225 | UpdateLineColumn(c);
198 | 225 | return (c);
199 |  | }
200 |  |
201 |  | /**
202 |  | * @deprecated
203 |  | * @see #getEndColumn
204 |  | */
205 |  |
206 | 0 | public int getColumn() {
207 | 0 | return bufcolumn[bufpos];
208 |  | }
209 |  |
210 |  | /**
211 |  | * @deprecated
212 |  | * @see #getEndLine
213 |  | */
214 |  |
215 | 0 | public int getLine() {
216 | 0 | return bufline[bufpos];
217 |  | }
218 |  |
219 | 43 | public int getEndColumn() {
220 | 43 | return bufcolumn[bufpos];
221 |  | }
222 |  |
223 | 43 | public int getEndLine() {
224 | 43 | return bufline[bufpos];
225 |  | }
226 |  |
227 | 43 | public int getBeginColumn() {
228 | 43 | return bufcolumn[tokenBegin];
229 |  | }
230 |  |
231 | 43 | public int getBeginLine() {
232 | 43 | return bufline[tokenBegin];
233 |  | }
234 |  |
235 | 71 | public void backup(int amount) {
236 |  |
237 | 71 | inBuf += amount;
238 | 71 | if ((bufpos -= amount) < 0)
239 | 0 | bufpos += bufsize;
240 |  | }
241 |  |
242 | 4 | public SimpleCharStream(java.io.Reader dstream, int startline,
243 |  | int startcolumn, int buffersize)
244 |  | {
245 | 4 | inputStream = dstream;
246 | 4 | line = startline;
247 | 4 | column = startcolumn - 1;
248 |  |
249 | 4 | available = bufsize = buffersize;
250 | 4 | buffer = new char[buffersize];
251 | 4 | bufline = new int[buffersize];
252 | 4 | bufcolumn = new int[buffersize];
253 |  | }
254 |  |
255 | 0 | public SimpleCharStream(java.io.Reader dstream, int startline,
256 |  | int startcolumn)
257 |  | {
258 | 0 | this(dstream, startline, startcolumn, 4096);
259 |  | }
260 |  |
261 | 4 | public SimpleCharStream(java.io.Reader dstream)
262 |  | {
263 | 4 | this(dstream, 1, 1, 4096);
264 |  | }
265 | 0 | public void ReInit(java.io.Reader dstream, int startline,
266 |  | int startcolumn, int buffersize)
267 |  | {
268 | 0 | inputStream = dstream;
269 | 0 | line = startline;
270 | 0 | column = startcolumn - 1;
271 |  |
272 | 0 | if (buffer == null || buffersize != buffer.length)
273 |  | {
274 | 0 | available = bufsize = buffersize;
275 | 0 | buffer = new char[buffersize];
276 | 0 | bufline = new int[buffersize];
277 | 0 | bufcolumn = new int[buffersize];
278 |  | }
279 | 0 | prevCharIsLF = prevCharIsCR = false;
280 | 0 | tokenBegin = inBuf = maxNextCharInd = 0;
281 | 0 | bufpos = -1;
282 |  | }
283 |  |
284 | 0 | public void ReInit(java.io.Reader dstream, int startline,
285 |  | int startcolumn)
286 |  | {
287 | 0 | ReInit(dstream, startline, startcolumn, 4096);
288 |  | }
289 |  |
290 | 0 | public void ReInit(java.io.Reader dstream)
291 |  | {
292 | 0 | ReInit(dstream, 1, 1, 4096);
293 |  | }
294 | 0 | public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
295 |  | int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
296 |  | {
297 | 0 | this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
298 |  | }
299 |  |
300 | 0 | public SimpleCharStream(java.io.InputStream dstream, int startline,
301 |  | int startcolumn, int buffersize)
302 |  | {
303 | 0 | this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
304 |  | }
305 |  |
306 | 0 | public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
307 |  | int startcolumn) throws java.io.UnsupportedEncodingException
308 |  | {
309 | 0 | this(dstream, encoding, startline, startcolumn, 4096);
310 |  | }
311 |  |
312 | 0 | public SimpleCharStream(java.io.InputStream dstream, int startline,
313 |  | int startcolumn)
314 |  | {
315 | 0 | this(dstream, startline, startcolumn, 4096);
316 |  | }
317 |  |
318 | 0 | public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
319 |  | {
320 | 0 | this(dstream, encoding, 1, 1, 4096);
321 |  | }
322 |  |
323 | 0 | public SimpleCharStream(java.io.InputStream dstream)
324 |  | {
325 | 0 | this(dstream, 1, 1, 4096);
326 |  | }
327 |  |
328 | 0 | public void ReInit(java.io.InputStream dstream, String encoding, int startline,
329 |  | int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
330 |  | {
331 | 0 | ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
332 |  | }
333 |  |
334 | 0 | public void ReInit(java.io.InputStream dstream, int startline,
335 |  | int startcolumn, int buffersize)
336 |  | {
337 | 0 | ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
338 |  | }
339 |  |
340 | 0 | public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
341 |  | {
342 | 0 | ReInit(dstream, encoding, 1, 1, 4096);
343 |  | }
344 |  |
345 | 0 | public void ReInit(java.io.InputStream dstream)
346 |  | {
347 | 0 | ReInit(dstream, 1, 1, 4096);
348 |  | }
349 | 0 | public void ReInit(java.io.InputStream dstream, String encoding, int startline,
350 |  | int startcolumn) throws java.io.UnsupportedEncodingException
351 |  | {
352 | 0 | ReInit(dstream, encoding, startline, startcolumn, 4096);
353 |  | }
354 | 0 | public void ReInit(java.io.InputStream dstream, int startline,
355 |  | int startcolumn)
356 |  | {
357 | 0 | ReInit(dstream, startline, startcolumn, 4096);
358 |  | }
359 | 10 | public String GetImage()
360 |  | {
361 | 10 | if (bufpos >= tokenBegin)
362 | 10 | return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
363 |  | else
364 | 0 | return new String(buffer, tokenBegin, bufsize - tokenBegin) +
365 |  | new String(buffer, 0, bufpos + 1);
366 |  | }
367 |  |
368 | 0 | public char[] GetSuffix(int len)
369 |  | {
370 | 0 | char[] ret = new char[len];
371 |  |
372 | 0 | if ((bufpos + 1) >= len)
373 | 0 | System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
374 |  | else
375 |  | {
376 | 0 | System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
377 |  | len - bufpos - 1);
378 | 0 | System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
379 |  | }
380 |  |
381 | 0 | return ret;
382 |  | }
383 |  |
384 | 0 | public void Done()
385 |  | {
386 | 0 | buffer = null;
387 | 0 | bufline = null;
388 | 0 | bufcolumn = null;
389 |  | }
390 |  |
391 |  | /**
392 |  | * Method to adjust line and column numbers for the start of a token.
393 |  | */
394 | 0 | public void adjustBeginLineColumn(int newLine, int newCol)
395 |  | {
396 | 0 | int start = tokenBegin;
397 | 0 | int len;
398 |  |
399 | 0 | if (bufpos >= tokenBegin)
400 |  | {
401 | 0 | len = bufpos - tokenBegin + inBuf + 1;
402 |  | }
403 |  | else
404 |  | {
405 | 0 | len = bufsize - tokenBegin + bufpos + 1 + inBuf;
406 |  | }
407 |  |
408 | 0 | int i = 0, j = 0, k = 0;
409 | 0 | int nextColDiff = 0, columnDiff = 0;
410 |  |
411 | 0 | while (i < len &&
412 |  | bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
413 |  | {
414 | 0 | bufline[j] = newLine;
415 | 0 | nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
416 | 0 | bufcolumn[j] = newCol + columnDiff;
417 | 0 | columnDiff = nextColDiff;
418 | 0 | i++;
419 |  | }
420 |  |
421 | 0 | if (i < len)
422 |  | {
423 | 0 | bufline[j] = newLine++;
424 | 0 | bufcolumn[j] = newCol + columnDiff;
425 |  |
426 | 0 | while (i++ < len)
427 |  | {
428 | 0 | if (bufline[j = start % bufsize] != bufline[++start % bufsize])
429 | 0 | bufline[j] = newLine++;
430 |  | else
431 | 0 | bufline[j] = newLine;
432 |  | }
433 |  | }
434 |  |
435 | 0 | line = bufline[j];
436 | 0 | column = bufcolumn[j];
437 |  | }
438 |  |
439 |  | }