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

This page was automatically generated by Maven