Clover coverage report - Replica - 1.0-Alpha
Coverage timestamp: Dom Fev 1 2004 17:00:58 WET
file stats: LOC: 552   Methods: 31
NCLOC: 451   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
JavaCharStream.java 0% 0% 0% 0%
coverage
 1   
 /* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 2.1 */
 2   
 package mobisnap.mobile_trx;
 3   
 
 4   
 /**
 5   
  * An implementation of interface CharStream, where the stream is assumed to
 6   
  * contain only ASCII characters (with java-like unicode escape processing).
 7   
  */
 8   
 
 9   
 public final class JavaCharStream
 10   
 {
 11   
   public static final boolean staticFlag = true;
 12  0
   static final int hexval(char c) throws java.io.IOException {
 13  0
     switch(c)
 14   
     {
 15   
        case '0' :
 16  0
           return 0;
 17   
        case '1' :
 18  0
           return 1;
 19   
        case '2' :
 20  0
           return 2;
 21   
        case '3' :
 22  0
           return 3;
 23   
        case '4' :
 24  0
           return 4;
 25   
        case '5' :
 26  0
           return 5;
 27   
        case '6' :
 28  0
           return 6;
 29   
        case '7' :
 30  0
           return 7;
 31   
        case '8' :
 32  0
           return 8;
 33   
        case '9' :
 34  0
           return 9;
 35   
 
 36   
        case 'a' :
 37   
        case 'A' :
 38  0
           return 10;
 39   
        case 'b' :
 40   
        case 'B' :
 41  0
           return 11;
 42   
        case 'c' :
 43   
        case 'C' :
 44  0
           return 12;
 45   
        case 'd' :
 46   
        case 'D' :
 47  0
           return 13;
 48   
        case 'e' :
 49   
        case 'E' :
 50  0
           return 14;
 51   
        case 'f' :
 52   
        case 'F' :
 53  0
           return 15;
 54   
     }
 55   
 
 56  0
     throw new java.io.IOException(); // Should never come here
 57   
   }
 58   
 
 59   
   static public int bufpos = -1;
 60   
   static int bufsize;
 61   
   static int available;
 62   
   static int tokenBegin;
 63   
   static private int bufline[];
 64   
   static private int bufcolumn[];
 65   
 
 66   
   static private int column = 0;
 67   
   static private int line = 1;
 68   
 
 69   
   static private boolean prevCharIsCR = false;
 70   
   static private boolean prevCharIsLF = false;
 71   
 
 72   
   static private java.io.Reader inputStream;
 73   
 
 74   
   static private char[] nextCharBuf;
 75   
   static private char[] buffer;
 76   
   static private int maxNextCharInd = 0;
 77   
   static private int nextCharInd = -1;
 78   
   static private int inBuf = 0;
 79   
 
 80  0
   static private final void ExpandBuff(boolean wrapAround)
 81   
   {
 82  0
      char[] newbuffer = new char[bufsize + 2048];
 83  0
      int newbufline[] = new int[bufsize + 2048];
 84  0
      int newbufcolumn[] = new int[bufsize + 2048];
 85   
 
 86  0
      try
 87   
      {
 88  0
         if (wrapAround)
 89   
         {
 90  0
            System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
 91  0
            System.arraycopy(buffer, 0, newbuffer,
 92   
                                              bufsize - tokenBegin, bufpos);
 93  0
            buffer = newbuffer;
 94   
 
 95  0
            System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
 96  0
            System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
 97  0
            bufline = newbufline;
 98   
 
 99  0
            System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
 100  0
            System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
 101  0
            bufcolumn = newbufcolumn;
 102   
 
 103  0
            bufpos += (bufsize - tokenBegin);
 104   
         }
 105   
         else
 106   
         {
 107  0
            System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
 108  0
            buffer = newbuffer;
 109   
 
 110  0
            System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
 111  0
            bufline = newbufline;
 112   
 
 113  0
            System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
 114  0
            bufcolumn = newbufcolumn;
 115   
 
 116  0
            bufpos -= tokenBegin;
 117   
         }
 118   
      }
 119   
      catch (Throwable t)
 120   
      {
 121  0
         throw new Error(t.getMessage());
 122   
      }
 123   
 
 124  0
      available = (bufsize += 2048);
 125  0
      tokenBegin = 0;
 126   
   }
 127   
 
 128  0
   static private final void FillBuff() throws java.io.IOException
 129   
   {
 130  0
      int i;
 131  0
      if (maxNextCharInd == 4096)
 132  0
         maxNextCharInd = nextCharInd = 0;
 133   
 
 134  0
      try {
 135  0
         if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
 136   
                                             4096 - maxNextCharInd)) == -1)
 137   
         {
 138  0
            inputStream.close();
 139  0
            throw new java.io.IOException();
 140   
         }
 141   
         else
 142  0
            maxNextCharInd += i;
 143  0
         return;
 144   
      }
 145   
      catch(java.io.IOException e) {
 146  0
         if (bufpos != 0)
 147   
         {
 148  0
            --bufpos;
 149  0
            backup(0);
 150   
         }
 151   
         else
 152   
         {
 153  0
            bufline[bufpos] = line;
 154  0
            bufcolumn[bufpos] = column;
 155   
         }
 156  0
         throw e;
 157   
      }
 158   
   }
 159   
 
 160  0
   static private final char ReadByte() throws java.io.IOException
 161   
   {
 162  0
      if (++nextCharInd >= maxNextCharInd)
 163  0
         FillBuff();
 164   
 
 165  0
      return nextCharBuf[nextCharInd];
 166   
   }
 167   
 
 168  0
   static public final char BeginToken() throws java.io.IOException
 169   
   {     
 170  0
      if (inBuf > 0)
 171   
      {
 172  0
         --inBuf;
 173   
 
 174  0
         if (++bufpos == bufsize)
 175  0
            bufpos = 0;
 176   
 
 177  0
         tokenBegin = bufpos;
 178  0
         return buffer[bufpos];
 179   
      }
 180   
 
 181  0
      tokenBegin = 0;
 182  0
      bufpos = -1;
 183   
 
 184  0
      return readChar();
 185   
   }     
 186   
 
 187  0
   static private final void AdjustBuffSize()
 188   
   {
 189  0
      if (available == bufsize)
 190   
      {
 191  0
         if (tokenBegin > 2048)
 192   
         {
 193  0
            bufpos = 0;
 194  0
            available = tokenBegin;
 195   
         }
 196   
         else
 197  0
            ExpandBuff(false);
 198   
      }
 199  0
      else if (available > tokenBegin)
 200  0
         available = bufsize;
 201  0
      else if ((tokenBegin - available) < 2048)
 202  0
         ExpandBuff(true);
 203   
      else
 204  0
         available = tokenBegin;
 205   
   }
 206   
 
 207  0
   static private final void UpdateLineColumn(char c)
 208   
   {
 209  0
      column++;
 210   
 
 211  0
      if (prevCharIsLF)
 212   
      {
 213  0
         prevCharIsLF = false;
 214  0
         line += (column = 1);
 215   
      }
 216  0
      else if (prevCharIsCR)
 217   
      {
 218  0
         prevCharIsCR = false;
 219  0
         if (c == '\n')
 220   
         {
 221  0
            prevCharIsLF = true;
 222   
         }
 223   
         else
 224  0
            line += (column = 1);
 225   
      }
 226   
 
 227  0
      switch (c)
 228   
      {
 229   
         case '\r' :
 230  0
            prevCharIsCR = true;
 231  0
            break;
 232   
         case '\n' :
 233  0
            prevCharIsLF = true;
 234  0
            break;
 235   
         case '\t' :
 236  0
            column--;
 237  0
            column += (8 - (column & 07));
 238  0
            break;
 239   
         default :
 240  0
            break;
 241   
      }
 242   
 
 243  0
      bufline[bufpos] = line;
 244  0
      bufcolumn[bufpos] = column;
 245   
   }
 246   
 
 247  0
   static public final char readChar() throws java.io.IOException
 248   
   {
 249  0
      if (inBuf > 0)
 250   
      {
 251  0
         --inBuf;
 252   
 
 253  0
         if (++bufpos == bufsize)
 254  0
            bufpos = 0;
 255   
 
 256  0
         return buffer[bufpos];
 257   
      }
 258   
 
 259  0
      char c;
 260   
 
 261  0
      if (++bufpos == available)
 262  0
         AdjustBuffSize();
 263   
 
 264  0
      if ((buffer[bufpos] = c = ReadByte()) == '\\')
 265   
      {
 266  0
         UpdateLineColumn(c);
 267   
 
 268  0
         int backSlashCnt = 1;
 269   
 
 270  0
         for (;;) // Read all the backslashes
 271   
         {
 272  0
            if (++bufpos == available)
 273  0
               AdjustBuffSize();
 274   
 
 275  0
            try
 276   
            {
 277  0
               if ((buffer[bufpos] = c = ReadByte()) != '\\')
 278   
               {
 279  0
                  UpdateLineColumn(c);
 280   
                  // found a non-backslash char.
 281  0
                  if ((c == 'u') && ((backSlashCnt & 1) == 1))
 282   
                  {
 283  0
                     if (--bufpos < 0)
 284  0
                        bufpos = bufsize - 1;
 285   
 
 286  0
                     break;
 287   
                  }
 288   
 
 289  0
                  backup(backSlashCnt);
 290  0
                  return '\\';
 291   
               }
 292   
            }
 293   
            catch(java.io.IOException e)
 294   
            {
 295  0
               if (backSlashCnt > 1)
 296  0
                  backup(backSlashCnt);
 297   
 
 298  0
               return '\\';
 299   
            }
 300   
 
 301  0
            UpdateLineColumn(c);
 302  0
            backSlashCnt++;
 303   
         }
 304   
 
 305   
         // Here, we have seen an odd number of backslash's followed by a 'u'
 306  0
         try
 307   
         {
 308  0
            while ((c = ReadByte()) == 'u')
 309  0
               ++column;
 310   
 
 311  0
            buffer[bufpos] = c = (char)(hexval(c) << 12 |
 312   
                                        hexval(ReadByte()) << 8 |
 313   
                                        hexval(ReadByte()) << 4 |
 314   
                                        hexval(ReadByte()));
 315   
 
 316  0
            column += 4;
 317   
         }
 318   
         catch(java.io.IOException e)
 319   
         {
 320  0
            throw new Error("Invalid escape character at line " + line +
 321   
                                          " column " + column + ".");
 322   
         }
 323   
 
 324  0
         if (backSlashCnt == 1)
 325  0
            return c;
 326   
         else
 327   
         {
 328  0
            backup(backSlashCnt - 1);
 329  0
            return '\\';
 330   
         }
 331   
      }
 332   
      else
 333   
      {
 334  0
         UpdateLineColumn(c);
 335  0
         return (c);
 336   
      }
 337   
   }
 338   
 
 339   
   /**
 340   
    * @deprecated 
 341   
    * @see #getEndColumn
 342   
    */
 343   
 
 344  0
   static public final int getColumn() {
 345  0
      return bufcolumn[bufpos];
 346   
   }
 347   
 
 348   
   /**
 349   
    * @deprecated 
 350   
    * @see #getEndLine
 351   
    */
 352   
 
 353  0
   static public final int getLine() {
 354  0
      return bufline[bufpos];
 355   
   }
 356   
 
 357  0
   static public final int getEndColumn() {
 358  0
      return bufcolumn[bufpos];
 359   
   }
 360   
 
 361  0
   static public final int getEndLine() {
 362  0
      return bufline[bufpos];
 363   
   }
 364   
 
 365  0
   static public final int getBeginColumn() {
 366  0
      return bufcolumn[tokenBegin];
 367   
   }
 368   
 
 369  0
   static public final int getBeginLine() {
 370  0
      return bufline[tokenBegin];
 371   
   }
 372   
 
 373  0
   static public final void backup(int amount) {
 374   
 
 375  0
     inBuf += amount;
 376  0
     if ((bufpos -= amount) < 0)
 377  0
        bufpos += bufsize;
 378   
   }
 379   
 
 380  0
   public JavaCharStream(java.io.Reader dstream,
 381   
                  int startline, int startcolumn, int buffersize)
 382   
   {
 383  0
     if (inputStream != null)
 384  0
        throw new Error("\n   ERROR: Second call to the constructor of a static JavaCharStream.  You must\n" +
 385   
        "       either use ReInit() or set the JavaCC option STATIC to false\n" +
 386   
        "       during the generation of this class.");
 387  0
     inputStream = dstream;
 388  0
     line = startline;
 389  0
     column = startcolumn - 1;
 390   
 
 391  0
     available = bufsize = buffersize;
 392  0
     buffer = new char[buffersize];
 393  0
     bufline = new int[buffersize];
 394  0
     bufcolumn = new int[buffersize];
 395  0
     nextCharBuf = new char[4096];
 396   
   }
 397   
 
 398  0
   public JavaCharStream(java.io.Reader dstream,
 399   
                                         int startline, int startcolumn)
 400   
   {
 401  0
      this(dstream, startline, startcolumn, 4096);
 402   
   }
 403   
 
 404  0
   public JavaCharStream(java.io.Reader dstream)
 405   
   {
 406  0
      this(dstream, 1, 1, 4096);
 407   
   }
 408  0
   public void ReInit(java.io.Reader dstream,
 409   
                  int startline, int startcolumn, int buffersize)
 410   
   {
 411  0
     inputStream = dstream;
 412  0
     line = startline;
 413  0
     column = startcolumn - 1;
 414   
 
 415  0
     if (buffer == null || buffersize != buffer.length)
 416   
     {
 417  0
       available = bufsize = buffersize;
 418  0
       buffer = new char[buffersize];
 419  0
       bufline = new int[buffersize];
 420  0
       bufcolumn = new int[buffersize];
 421  0
       nextCharBuf = new char[4096];
 422   
     }
 423  0
     prevCharIsLF = prevCharIsCR = false;
 424  0
     tokenBegin = inBuf = maxNextCharInd = 0;
 425  0
     nextCharInd = bufpos = -1;
 426   
   }
 427   
 
 428  0
   public void ReInit(java.io.Reader dstream,
 429   
                                         int startline, int startcolumn)
 430   
   {
 431  0
      ReInit(dstream, startline, startcolumn, 4096);
 432   
   }
 433   
 
 434  0
   public void ReInit(java.io.Reader dstream)
 435   
   {
 436  0
      ReInit(dstream, 1, 1, 4096);
 437   
   }
 438  0
   public JavaCharStream(java.io.InputStream dstream, int startline,
 439   
   int startcolumn, int buffersize)
 440   
   {
 441  0
      this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
 442   
   }
 443   
 
 444  0
   public JavaCharStream(java.io.InputStream dstream, int startline,
 445   
                                                            int startcolumn)
 446   
   {
 447  0
      this(dstream, startline, startcolumn, 4096);
 448   
   }
 449   
 
 450  0
   public JavaCharStream(java.io.InputStream dstream)
 451   
   {
 452  0
      this(dstream, 1, 1, 4096);
 453   
   }
 454   
 
 455  0
   public void ReInit(java.io.InputStream dstream, int startline,
 456   
   int startcolumn, int buffersize)
 457   
   {
 458  0
      ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
 459   
   }
 460  0
   public void ReInit(java.io.InputStream dstream, int startline,
 461   
                                                            int startcolumn)
 462   
   {
 463  0
      ReInit(dstream, startline, startcolumn, 4096);
 464   
   }
 465  0
   public void ReInit(java.io.InputStream dstream)
 466   
   {
 467  0
      ReInit(dstream, 1, 1, 4096);
 468   
   }
 469   
 
 470  0
   static public final String GetImage()
 471   
   {
 472  0
      if (bufpos >= tokenBegin)
 473  0
         return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
 474   
      else
 475  0
         return new String(buffer, tokenBegin, bufsize - tokenBegin) +
 476   
                               new String(buffer, 0, bufpos + 1);
 477   
   }
 478   
 
 479  0
   static public final char[] GetSuffix(int len)
 480   
   {
 481  0
      char[] ret = new char[len];
 482   
 
 483  0
      if ((bufpos + 1) >= len)
 484  0
         System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
 485   
      else
 486   
      {
 487  0
         System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
 488   
                                                           len - bufpos - 1);
 489  0
         System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
 490   
      }
 491   
 
 492  0
      return ret;
 493   
   }
 494   
 
 495  0
   static public void Done()
 496   
   {
 497  0
      nextCharBuf = null;
 498  0
      buffer = null;
 499  0
      bufline = null;
 500  0
      bufcolumn = null;
 501   
   }
 502   
 
 503   
   /**
 504   
    * Method to adjust line and column numbers for the start of a token.<BR>
 505   
    */
 506  0
   static public void adjustBeginLineColumn(int newLine, int newCol)
 507   
   {
 508  0
      int start = tokenBegin;
 509  0
      int len;
 510   
 
 511  0
      if (bufpos >= tokenBegin)
 512   
      {
 513  0
         len = bufpos - tokenBegin + inBuf + 1;
 514   
      }
 515   
      else
 516   
      {
 517  0
         len = bufsize - tokenBegin + bufpos + 1 + inBuf;
 518   
      }
 519   
 
 520  0
      int i = 0, j = 0, k = 0;
 521  0
      int nextColDiff = 0, columnDiff = 0;
 522   
 
 523  0
      while (i < len &&
 524   
             bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
 525   
      {
 526  0
         bufline[j] = newLine;
 527  0
         nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
 528  0
         bufcolumn[j] = newCol + columnDiff;
 529  0
         columnDiff = nextColDiff;
 530  0
         i++;
 531   
      } 
 532   
 
 533  0
      if (i < len)
 534   
      {
 535  0
         bufline[j] = newLine++;
 536  0
         bufcolumn[j] = newCol + columnDiff;
 537   
 
 538  0
         while (i++ < len)
 539   
         {
 540  0
            if (bufline[j = start % bufsize] != bufline[++start % bufsize])
 541  0
               bufline[j] = newLine++;
 542   
            else
 543  0
               bufline[j] = newLine;
 544   
         }
 545   
      }
 546   
 
 547  0
      line = bufline[j];
 548  0
      column = bufcolumn[j];
 549   
   }
 550   
 
 551   
 }
 552