Clover coverage report - JBind Project
Coverage timestamp: Fr Mai 28 2004 11:17:36 CEST
file stats: LOC: 402   Methods: 28
NCLOC: 322   Classes: 1
This license of Clover is provided to support the development of JBind only. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover.
 
 Source file Conditionals Statements Methods TOTAL
SimpleCharStream.java 54,2% 51,3% 50% 51,7%
 1   
 /* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 2.1 */
 2   
 package org.jbind.xml.parser;
 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 final 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   
   private int bufline[];
 17   
   private int bufcolumn[];
 18   
 
 19   
   private int column = 0;
 20   
   private int line = 1;
 21   
 
 22   
   private boolean prevCharIsCR = false;
 23   
   private boolean prevCharIsLF = false;
 24   
 
 25   
   private java.io.Reader inputStream;
 26   
 
 27   
   private char[] buffer;
 28   
   private int maxNextCharInd = 0;
 29   
   private int inBuf = 0;
 30   
 
 31  0
   private final void ExpandBuff(boolean wrapAround)
 32   
   {
 33  0
      char[] newbuffer = new char[bufsize + 2048];
 34  0
      int newbufline[] = new int[bufsize + 2048];
 35  0
      int newbufcolumn[] = new int[bufsize + 2048];
 36   
 
 37  0
      try
 38   
      {
 39  0
         if (wrapAround)
 40   
         {
 41  0
            System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
 42  0
            System.arraycopy(buffer, 0, newbuffer,
 43   
                                              bufsize - tokenBegin, bufpos);
 44  0
            buffer = newbuffer;
 45   
 
 46  0
            System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
 47  0
            System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
 48  0
            bufline = newbufline;
 49   
 
 50  0
            System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
 51  0
            System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
 52  0
            bufcolumn = newbufcolumn;
 53   
 
 54  0
            maxNextCharInd = (bufpos += (bufsize - tokenBegin));
 55   
         }
 56   
         else
 57   
         {
 58  0
            System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
 59  0
            buffer = newbuffer;
 60   
 
 61  0
            System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
 62  0
            bufline = newbufline;
 63   
 
 64  0
            System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
 65  0
            bufcolumn = newbufcolumn;
 66   
 
 67  0
            maxNextCharInd = (bufpos -= tokenBegin);
 68   
         }
 69   
      }
 70   
      catch (Throwable t)
 71   
      {
 72  0
         throw new Error(t.getMessage());
 73   
      }
 74   
 
 75   
 
 76  0
      bufsize += 2048;
 77  0
      available = bufsize;
 78  0
      tokenBegin = 0;
 79   
   }
 80   
 
 81  1063
   private final void FillBuff() throws java.io.IOException
 82   
   {
 83  1063
      if (maxNextCharInd == available)
 84   
      {
 85  129
         if (available == bufsize)
 86   
         {
 87  69
            if (tokenBegin > 2048)
 88   
            {
 89  63
               bufpos = maxNextCharInd = 0;
 90  63
               available = tokenBegin;
 91   
            }
 92  6
            else if (tokenBegin < 0)
 93  6
               bufpos = maxNextCharInd = 0;
 94   
            else
 95  0
               ExpandBuff(false);
 96   
         }
 97  60
         else if (available > tokenBegin)
 98  60
            available = bufsize;
 99  0
         else if ((tokenBegin - available) < 2048)
 100  0
            ExpandBuff(true);
 101   
         else
 102  0
            available = tokenBegin;
 103   
      }
 104   
 
 105  1063
      int i;
 106  1063
      try {
 107  ?
         if ((i = inputStream.read(buffer, maxNextCharInd,
 108   
                                     available - maxNextCharInd)) == -1)
 109   
         {
 110  467
            inputStream.close();
 111  467
            throw new java.io.IOException();
 112   
         }
 113   
         else
 114  596
            maxNextCharInd += i;
 115  596
         return;
 116   
      }
 117   
      catch(java.io.IOException e) {
 118  467
         --bufpos;
 119  467
         backup(0);
 120  467
         if (tokenBegin == -1)
 121  31
            tokenBegin = bufpos;
 122  467
         throw e;
 123   
      }
 124   
   }
 125   
 
 126  135994
   public final char BeginToken() throws java.io.IOException
 127   
   {
 128  135994
      tokenBegin = -1;
 129  135994
      char c = readChar();
 130  135963
      tokenBegin = bufpos;
 131   
 
 132  135963
      return c;
 133   
   }
 134   
 
 135  541514
   private final void UpdateLineColumn(char c)
 136   
   {
 137  541514
      column++;
 138   
 
 139  541514
      if (prevCharIsLF)
 140   
      {
 141  15987
         prevCharIsLF = false;
 142  15987
         line += (column = 1);
 143   
      }
 144  525527
      else if (prevCharIsCR)
 145   
      {
 146  14439
         prevCharIsCR = false;
 147  14439
         if (c == '\n')
 148   
         {
 149  14439
            prevCharIsLF = true;
 150   
         }
 151   
         else
 152  0
            line += (column = 1);
 153   
      }
 154   
 
 155  541514
      switch (c)
 156   
      {
 157   
         case '\r' :
 158  14439
            prevCharIsCR = true;
 159  14439
            break;
 160   
         case '\n' :
 161  16423
            prevCharIsLF = true;
 162  16423
            break;
 163   
         case '\t' :
 164  16091
            column--;
 165  16091
            column += (8 - (column & 07));
 166  16091
            break;
 167   
         default :
 168  494561
            break;
 169   
      }
 170   
 
 171  541514
      bufline[bufpos] = line;
 172  541514
      bufcolumn[bufpos] = column;
 173   
   }
 174   
 
 175  618234
   public final char readChar() throws java.io.IOException
 176   
   {
 177  618234
      if (inBuf > 0)
 178   
      {
 179  76253
         --inBuf;
 180   
 
 181  76253
         if (++bufpos == bufsize)
 182  16
            bufpos = 0;
 183   
 
 184  76253
         return buffer[bufpos];
 185   
      }
 186   
 
 187  541981
      if (++bufpos >= maxNextCharInd)
 188  1063
         FillBuff();
 189   
 
 190  541514
      char c = buffer[bufpos];
 191   
 
 192  541514
      UpdateLineColumn(c);
 193  541514
      return (c);
 194   
   }
 195   
 
 196   
   /**
 197   
    * @deprecated 
 198   
    * @see #getEndColumn
 199   
    */
 200   
 
 201  0
   public final int getColumn() {
 202  0
      return bufcolumn[bufpos];
 203   
   }
 204   
 
 205   
   /**
 206   
    * @deprecated 
 207   
    * @see #getEndLine
 208   
    */
 209   
 
 210  0
   public final int getLine() {
 211  0
      return bufline[bufpos];
 212   
   }
 213   
 
 214  125187
   public final int getEndColumn() {
 215  125187
      return bufcolumn[bufpos];
 216   
   }
 217   
 
 218  125187
   public final int getEndLine() {
 219  125187
      return bufline[bufpos];
 220   
   }
 221   
 
 222  125187
   public final int getBeginColumn() {
 223  125187
      return bufcolumn[tokenBegin];
 224   
   }
 225   
 
 226  125187
   public final int getBeginLine() {
 227  125187
      return bufline[tokenBegin];
 228   
   }
 229   
 
 230  76704
   public final void backup(int amount) {
 231   
 
 232  76704
     inBuf += amount;
 233  76704
     if ((bufpos -= amount) < 0)
 234  16
        bufpos += bufsize;
 235   
   }
 236   
 
 237  398
   public SimpleCharStream(java.io.Reader dstream, int startline,
 238   
   int startcolumn, int buffersize)
 239   
   {
 240  398
     inputStream = dstream;
 241  398
     line = startline;
 242  398
     column = startcolumn - 1;
 243   
 
 244  398
     available = bufsize = buffersize;
 245  398
     buffer = new char[buffersize];
 246  398
     bufline = new int[buffersize];
 247  398
     bufcolumn = new int[buffersize];
 248   
   }
 249   
 
 250  398
   public SimpleCharStream(java.io.Reader dstream, int startline,
 251   
                                                            int startcolumn)
 252   
   {
 253  398
      this(dstream, startline, startcolumn, 4096);
 254   
   }
 255   
 
 256  0
   public SimpleCharStream(java.io.Reader dstream)
 257   
   {
 258  0
      this(dstream, 1, 1, 4096);
 259   
   }
 260  69
   public void ReInit(java.io.Reader dstream, int startline,
 261   
   int startcolumn, int buffersize)
 262   
   {
 263  69
     inputStream = dstream;
 264  69
     line = startline;
 265  69
     column = startcolumn - 1;
 266   
 
 267  69
     if (buffer == null || buffersize != buffer.length)
 268   
     {
 269  0
       available = bufsize = buffersize;
 270  0
       buffer = new char[buffersize];
 271  0
       bufline = new int[buffersize];
 272  0
       bufcolumn = new int[buffersize];
 273   
     }
 274  69
     prevCharIsLF = prevCharIsCR = false;
 275  69
     tokenBegin = inBuf = maxNextCharInd = 0;
 276  69
     bufpos = -1;
 277   
   }
 278   
 
 279  69
   public void ReInit(java.io.Reader dstream, int startline,
 280   
                                                            int startcolumn)
 281   
   {
 282  69
      ReInit(dstream, startline, startcolumn, 4096);
 283   
   }
 284   
 
 285  0
   public void ReInit(java.io.Reader dstream)
 286   
   {
 287  0
      ReInit(dstream, 1, 1, 4096);
 288   
   }
 289  0
   public SimpleCharStream(java.io.InputStream dstream, int startline,
 290   
   int startcolumn, int buffersize)
 291   
   {
 292  0
      this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
 293   
   }
 294   
 
 295  0
   public SimpleCharStream(java.io.InputStream dstream, int startline,
 296   
                                                            int startcolumn)
 297   
   {
 298  0
      this(dstream, startline, startcolumn, 4096);
 299   
   }
 300   
 
 301  0
   public SimpleCharStream(java.io.InputStream dstream)
 302   
   {
 303  0
      this(dstream, 1, 1, 4096);
 304   
   }
 305   
 
 306  0
   public void ReInit(java.io.InputStream dstream, int startline,
 307   
                           int startcolumn, int buffersize)
 308   
   {
 309  0
      ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
 310   
   }
 311   
 
 312  0
   public void ReInit(java.io.InputStream dstream)
 313   
   {
 314  0
      ReInit(dstream, 1, 1, 4096);
 315   
   }
 316  0
   public void ReInit(java.io.InputStream dstream, int startline,
 317   
                                                            int startcolumn)
 318   
   {
 319  0
      ReInit(dstream, startline, startcolumn, 4096);
 320   
   }
 321  57943
   public final String GetImage()
 322   
   {
 323  57943
      if (bufpos >= tokenBegin)
 324  57896
         return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
 325   
      else
 326  47
         return new String(buffer, tokenBegin, bufsize - tokenBegin) +
 327   
                               new String(buffer, 0, bufpos + 1);
 328   
   }
 329   
 
 330  0
   public final char[] GetSuffix(int len)
 331   
   {
 332  0
      char[] ret = new char[len];
 333   
 
 334  0
      if ((bufpos + 1) >= len)
 335  0
         System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
 336   
      else
 337   
      {
 338  0
         System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
 339   
                                                           len - bufpos - 1);
 340  0
         System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
 341   
      }
 342   
 
 343  0
      return ret;
 344   
   }
 345   
 
 346  0
   public void Done()
 347   
   {
 348  0
      buffer = null;
 349  0
      bufline = null;
 350  0
      bufcolumn = null;
 351   
   }
 352   
 
 353   
   /**
 354   
    * Method to adjust line and column numbers for the start of a token.<BR>
 355   
    */
 356  0
   public void adjustBeginLineColumn(int newLine, int newCol)
 357   
   {
 358  0
      int start = tokenBegin;
 359  0
      int len;
 360   
 
 361  0
      if (bufpos >= tokenBegin)
 362   
      {
 363  0
         len = bufpos - tokenBegin + inBuf + 1;
 364   
      }
 365   
      else
 366   
      {
 367  0
         len = bufsize - tokenBegin + bufpos + 1 + inBuf;
 368   
      }
 369   
 
 370  0
      int i = 0, j = 0, k = 0;
 371  0
      int nextColDiff = 0, columnDiff = 0;
 372   
 
 373  0
      while (i < len &&
 374   
             bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
 375   
      {
 376  0
         bufline[j] = newLine;
 377  0
         nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
 378  0
         bufcolumn[j] = newCol + columnDiff;
 379  0
         columnDiff = nextColDiff;
 380  0
         i++;
 381   
      } 
 382   
 
 383  0
      if (i < len)
 384   
      {
 385  0
         bufline[j] = newLine++;
 386  0
         bufcolumn[j] = newCol + columnDiff;
 387   
 
 388  0
         while (i++ < len)
 389   
         {
 390  0
            if (bufline[j = start % bufsize] != bufline[++start % bufsize])
 391  0
               bufline[j] = newLine++;
 392   
            else
 393  0
               bufline[j] = newLine;
 394   
         }
 395   
      }
 396   
 
 397  0
      line = bufline[j];
 398  0
      column = bufcolumn[j];
 399   
   }
 400   
 
 401   
 }
 402