Coverage Report - org.apache.commons.configuration.plist.SimpleCharStream
 
Classes in this File Line Coverage Branch Coverage Complexity
SimpleCharStream
49%
68/139
61%
11/18
2,381
 
 1  
 /* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 3.0 */
 2  
 package org.apache.commons.configuration.plist;
 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  
 class SimpleCharStream
 10  
 {
 11  
   public static final boolean staticFlag = false;
 12  
   int bufsize;
 13  
   int available;
 14  
   int tokenBegin;
 15  18
   public int bufpos = -1;
 16  
   protected int bufline[];
 17  
   protected int bufcolumn[];
 18  
 
 19  18
   protected int column = 0;
 20  18
   protected int line = 1;
 21  
 
 22  18
   protected boolean prevCharIsCR = false;
 23  18
   protected boolean prevCharIsLF = false;
 24  
 
 25  
   protected java.io.Reader inputStream;
 26  
 
 27  
   protected char[] buffer;
 28  18
   protected int maxNextCharInd = 0;
 29  18
   protected int inBuf = 0;
 30  
 
 31  
   protected 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  
      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  0
      }
 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  0
   }
 80  
 
 81  
   protected void FillBuff() throws java.io.IOException
 82  
   {
 83  42
      if (maxNextCharInd == available)
 84  
      {
 85  0
         if (available == bufsize)
 86  
         {
 87  0
            if (tokenBegin > 2048)
 88  
            {
 89  0
               bufpos = maxNextCharInd = 0;
 90  0
               available = tokenBegin;
 91  
            }
 92  0
            else if (tokenBegin < 0)
 93  0
               bufpos = maxNextCharInd = 0;
 94  
            else
 95  0
               ExpandBuff(false);
 96  
         }
 97  0
         else if (available > tokenBegin)
 98  0
            available = bufsize;
 99  0
         else if ((tokenBegin - available) < 2048)
 100  0
            ExpandBuff(true);
 101  
         else
 102  0
            available = tokenBegin;
 103  
      }
 104  
 
 105  
      int i;
 106  
      try {
 107  42
         if ((i = inputStream.read(buffer, maxNextCharInd,
 108  
                                     available - maxNextCharInd)) == -1)
 109  
         {
 110  15
            inputStream.close();
 111  15
            throw new java.io.IOException();
 112  
         }
 113  
         else
 114  14
            maxNextCharInd += i;
 115  14
         return;
 116  
      }
 117  
      catch(java.io.IOException e) {
 118  28
         --bufpos;
 119  28
         backup(0);
 120  28
         if (tokenBegin == -1)
 121  28
            tokenBegin = bufpos;
 122  28
         throw e;
 123  
      }
 124  
   }
 125  
 
 126  
   public char BeginToken() throws java.io.IOException
 127  
   {
 128  5961
      tokenBegin = -1;
 129  5961
      char c = readChar();
 130  5933
      tokenBegin = bufpos;
 131  
 
 132  5933
      return c;
 133  
   }
 134  
 
 135  
   protected void UpdateLineColumn(char c)
 136  
   {
 137  9975
      column++;
 138  
 
 139  9975
      if (prevCharIsLF)
 140  
      {
 141  558
         prevCharIsLF = false;
 142  558
         line += (column = 1);
 143  
      }
 144  9417
      else if (prevCharIsCR)
 145  
      {
 146  571
         prevCharIsCR = false;
 147  571
         if (c == '\n')
 148  
         {
 149  571
            prevCharIsLF = true;
 150  
         }
 151  
         else
 152  0
            line += (column = 1);
 153  
      }
 154  
 
 155  9975
      switch (c)
 156  
      {
 157  
         case '\r' :
 158  571
            prevCharIsCR = true;
 159  571
            break;
 160  
         case '\n' :
 161  571
            prevCharIsLF = true;
 162  571
            break;
 163  
         case '\t' :
 164  0
            column--;
 165  0
            column += (8 - (column & 07));
 166  0
            break;
 167  
         default :
 168  
            break;
 169  
      }
 170  
 
 171  9975
      bufline[bufpos] = line;
 172  9975
      bufcolumn[bufpos] = column;
 173  9975
   }
 174  
 
 175  
   public char readChar() throws java.io.IOException
 176  
   {
 177  10389
      if (inBuf > 0)
 178  
      {
 179  386
         --inBuf;
 180  
 
 181  386
         if (++bufpos == bufsize)
 182  0
            bufpos = 0;
 183  
 
 184  386
         return buffer[bufpos];
 185  
      }
 186  
 
 187  10003
      if (++bufpos >= maxNextCharInd)
 188  42
         FillBuff();
 189  
 
 190  9975
      char c = buffer[bufpos];
 191  
 
 192  9975
      UpdateLineColumn(c);
 193  9975
      return (c);
 194  
   }
 195  
 
 196  
   /**
 197  
    * @deprecated 
 198  
    * @see #getEndColumn
 199  
    */
 200  
 
 201  
   public int getColumn() {
 202  0
      return bufcolumn[bufpos];
 203  
   }
 204  
 
 205  
   /**
 206  
    * @deprecated 
 207  
    * @see #getEndLine
 208  
    */
 209  
 
 210  
   public int getLine() {
 211  0
      return bufline[bufpos];
 212  
   }
 213  
 
 214  
   public int getEndColumn() {
 215  1483
      return bufcolumn[bufpos];
 216  
   }
 217  
 
 218  
   public int getEndLine() {
 219  1483
      return bufline[bufpos];
 220  
   }
 221  
 
 222  
   public int getBeginColumn() {
 223  1483
      return bufcolumn[tokenBegin];
 224  
   }
 225  
 
 226  
   public int getBeginLine() {
 227  1483
      return bufline[tokenBegin];
 228  
   }
 229  
 
 230  
   public void backup(int amount) {
 231  
 
 232  1895
     inBuf += amount;
 233  1895
     if ((bufpos -= amount) < 0)
 234  1
        bufpos += bufsize;
 235  1895
   }
 236  
 
 237  
   public SimpleCharStream(java.io.Reader dstream, int startline,
 238  
   int startcolumn, int buffersize)
 239  18
   {
 240  18
     inputStream = dstream;
 241  18
     line = startline;
 242  18
     column = startcolumn - 1;
 243  
 
 244  18
     available = bufsize = buffersize;
 245  18
     buffer = new char[buffersize];
 246  18
     bufline = new int[buffersize];
 247  18
     bufcolumn = new int[buffersize];
 248  18
   }
 249  
 
 250  
   public SimpleCharStream(java.io.Reader dstream, int startline,
 251  
                                                            int startcolumn)
 252  
   {
 253  18
      this(dstream, startline, startcolumn, 4096);
 254  18
   }
 255  
 
 256  
   public SimpleCharStream(java.io.Reader dstream)
 257  
   {
 258  0
      this(dstream, 1, 1, 4096);
 259  0
   }
 260  
   public void ReInit(java.io.Reader dstream, int startline,
 261  
   int startcolumn, int buffersize)
 262  
   {
 263  0
     inputStream = dstream;
 264  0
     line = startline;
 265  0
     column = startcolumn - 1;
 266  
 
 267  0
     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  0
     prevCharIsLF = prevCharIsCR = false;
 275  0
     tokenBegin = inBuf = maxNextCharInd = 0;
 276  0
     bufpos = -1;
 277  0
   }
 278  
 
 279  
   public SimpleCharStream(java.io.InputStream dstream, int startline,
 280  
   int startcolumn, int buffersize)
 281  
   {
 282  0
      this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
 283  0
   }
 284  
 
 285  
   public SimpleCharStream(java.io.InputStream dstream, int startline,
 286  
                                                            int startcolumn)
 287  
   {
 288  0
      this(dstream, startline, startcolumn, 4096);
 289  0
   }
 290  
 
 291  
   public SimpleCharStream(java.io.InputStream dstream)
 292  
   {
 293  0
      this(dstream, 1, 1, 4096);
 294  0
   }
 295  
 
 296  
   public String GetImage()
 297  
   {
 298  531
      if (bufpos >= tokenBegin)
 299  531
         return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
 300  
      else
 301  0
         return new String(buffer, tokenBegin, bufsize - tokenBegin) +
 302  
                               new String(buffer, 0, bufpos + 1);
 303  
   }
 304  
 
 305  
   public void Done()
 306  
   {
 307  0
      buffer = null;
 308  0
      bufline = null;
 309  0
      bufcolumn = null;
 310  0
   }
 311  
 
 312  
 }