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%
coverage coverage
 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    }