196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */ 296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/* 396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Copyright 2004 the mime4j project 496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License. 796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at 896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and 1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License. 1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage org.apache.james.mime4j.field.datetime.parser; 1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/** 2096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * An implementation of interface CharStream, where the stream is assumed to 2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * contain only ASCII characters (without unicode processing). 2296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 2396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 2496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class SimpleCharStream 2596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project{ 2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public static final boolean staticFlag = false; 2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int bufsize; 2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int available; 2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int tokenBegin; 3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int bufpos = -1; 3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int bufline[]; 3296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int bufcolumn[]; 3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 3496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int column = 0; 3596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int line = 1; 3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected boolean prevCharIsCR = false; 3896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected boolean prevCharIsLF = false; 3996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected java.io.Reader inputStream; 4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 4296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected char[] buffer; 4396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int maxNextCharInd = 0; 4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int inBuf = 0; 4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int tabSize = 8; 4696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 4796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected void setTabSize(int i) { tabSize = i; } 4896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected int getTabSize(int i) { return tabSize; } 4996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected void ExpandBuff(boolean wrapAround) 5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project char[] newbuffer = new char[bufsize + 2048]; 5496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int newbufline[] = new int[bufsize + 2048]; 5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int newbufcolumn[] = new int[bufsize + 2048]; 5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project try 5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (wrapAround) 6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 6196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); 6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(buffer, 0, newbuffer, 6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufsize - tokenBegin, bufpos); 6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project buffer = newbuffer; 6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); 6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); 6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline = newbufline; 6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); 7196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); 7296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn = newbufcolumn; 7396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 7496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project maxNextCharInd = (bufpos += (bufsize - tokenBegin)); 7596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 7696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 7796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 7896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); 7996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project buffer = newbuffer; 8096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 8196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); 8296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline = newbufline; 8396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 8496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); 8596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn = newbufcolumn; 8696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 8796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project maxNextCharInd = (bufpos -= tokenBegin); 8896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 8996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 9096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project catch (Throwable t) 9196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 9296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project throw new Error(t.getMessage()); 9396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 9496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 9596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 9696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufsize += 2048; 9796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available = bufsize; 9896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project tokenBegin = 0; 9996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 10096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 10196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected void FillBuff() throws java.io.IOException 10296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (maxNextCharInd == available) 10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (available == bufsize) 10696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 10796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (tokenBegin > 2048) 10896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 10996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufpos = maxNextCharInd = 0; 11096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available = tokenBegin; 11196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 11296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else if (tokenBegin < 0) 11396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufpos = maxNextCharInd = 0; 11496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 11596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ExpandBuff(false); 11696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 11796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else if (available > tokenBegin) 11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available = bufsize; 11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else if ((tokenBegin - available) < 2048) 12096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ExpandBuff(true); 12196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available = tokenBegin; 12396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 12496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 12596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int i; 12696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project try { 12796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if ((i = inputStream.read(buffer, maxNextCharInd, 12896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available - maxNextCharInd)) == -1) 12996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 13096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project inputStream.close(); 13196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project throw new java.io.IOException(); 13296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 13396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 13496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project maxNextCharInd += i; 13596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return; 13696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 13796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project catch(java.io.IOException e) { 13896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project --bufpos; 13996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project backup(0); 14096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (tokenBegin == -1) 14196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project tokenBegin = bufpos; 14296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project throw e; 14396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 14496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 14596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 14696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public char BeginToken() throws java.io.IOException 14796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 14896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project tokenBegin = -1; 14996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project char c = readChar(); 15096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project tokenBegin = bufpos; 15196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 15296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return c; 15396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 15496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 15596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected void UpdateLineColumn(char c) 15696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 15796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project column++; 15896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 15996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (prevCharIsLF) 16096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 16196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project prevCharIsLF = false; 16296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project line += (column = 1); 16396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 16496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else if (prevCharIsCR) 16596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 16696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project prevCharIsCR = false; 16796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (c == '\n') 16896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 16996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project prevCharIsLF = true; 17096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 17196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 17296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project line += (column = 1); 17396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 17496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 17596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project switch (c) 17696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 17796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project case '\r' : 17896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project prevCharIsCR = true; 17996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project break; 18096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project case '\n' : 18196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project prevCharIsLF = true; 18296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project break; 18396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project case '\t' : 18496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project column--; 18596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project column += (tabSize - (column % tabSize)); 18696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project break; 18796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project default : 18896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project break; 18996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 19096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 19196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline[bufpos] = line; 19296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn[bufpos] = column; 19396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 19496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 19596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public char readChar() throws java.io.IOException 19696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 19796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (inBuf > 0) 19896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 19996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project --inBuf; 20096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 20196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (++bufpos == bufsize) 20296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufpos = 0; 20396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 20496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return buffer[bufpos]; 20596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 20696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 20796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (++bufpos >= maxNextCharInd) 20896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project FillBuff(); 20996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 21096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project char c = buffer[bufpos]; 21196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 21296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project UpdateLineColumn(c); 21396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return (c); 21496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 21596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 21696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 21796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * @deprecated 21896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * @see #getEndColumn 21996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 22096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 22196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int getColumn() { 22296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return bufcolumn[bufpos]; 22396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 22496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 22596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 22696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * @deprecated 22796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * @see #getEndLine 22896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 22996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 23096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int getLine() { 23196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return bufline[bufpos]; 23296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 23396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 23496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int getEndColumn() { 23596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return bufcolumn[bufpos]; 23696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 23796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 23896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int getEndLine() { 23996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return bufline[bufpos]; 24096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 24196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 24296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int getBeginColumn() { 24396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return bufcolumn[tokenBegin]; 24496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 24596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 24696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public int getBeginLine() { 24796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return bufline[tokenBegin]; 24896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 24996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 25096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void backup(int amount) { 25196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 25296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project inBuf += amount; 25396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if ((bufpos -= amount) < 0) 25496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufpos += bufsize; 25596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 25696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 25796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.Reader dstream, int startline, 25896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn, int buffersize) 25996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 26096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project inputStream = dstream; 26196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project line = startline; 26296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project column = startcolumn - 1; 26396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 26496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available = bufsize = buffersize; 26596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project buffer = new char[buffersize]; 26696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline = new int[buffersize]; 26796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn = new int[buffersize]; 26896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 26996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 27096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.Reader dstream, int startline, 27196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn) 27296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 27396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(dstream, startline, startcolumn, 4096); 27496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 27596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 27696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.Reader dstream) 27796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 27896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(dstream, 1, 1, 4096); 27996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 28096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.Reader dstream, int startline, 28196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn, int buffersize) 28296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 28396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project inputStream = dstream; 28496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project line = startline; 28596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project column = startcolumn - 1; 28696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 28796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (buffer == null || buffersize != buffer.length) 28896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 28996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project available = bufsize = buffersize; 29096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project buffer = new char[buffersize]; 29196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline = new int[buffersize]; 29296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn = new int[buffersize]; 29396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 29496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project prevCharIsLF = prevCharIsCR = false; 29596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project tokenBegin = inBuf = maxNextCharInd = 0; 29696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufpos = -1; 29796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 29896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 29996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.Reader dstream, int startline, 30096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn) 30196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 30296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(dstream, startline, startcolumn, 4096); 30396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 30496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 30596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.Reader dstream) 30696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 30796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(dstream, 1, 1, 4096); 30896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 30996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, 31096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException 31196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 31296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); 31396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 31496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 31596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.InputStream dstream, int startline, 31696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn, int buffersize) 31796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 31896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); 31996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 32096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 32196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, 32296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn) throws java.io.UnsupportedEncodingException 32396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 32496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(dstream, encoding, startline, startcolumn, 4096); 32596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 32696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 32796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.InputStream dstream, int startline, 32896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn) 32996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 33096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(dstream, startline, startcolumn, 4096); 33196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 33296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 33396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException 33496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 33596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(dstream, encoding, 1, 1, 4096); 33696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 33796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 33896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public SimpleCharStream(java.io.InputStream dstream) 33996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 34096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project this(dstream, 1, 1, 4096); 34196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 34296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 34396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.InputStream dstream, String encoding, int startline, 34496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException 34596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 34696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); 34796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 34896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 34996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.InputStream dstream, int startline, 35096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn, int buffersize) 35196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 35296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); 35396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 35496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 35596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException 35696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 35796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(dstream, encoding, 1, 1, 4096); 35896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 35996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 36096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.InputStream dstream) 36196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 36296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(dstream, 1, 1, 4096); 36396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 36496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.InputStream dstream, String encoding, int startline, 36596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn) throws java.io.UnsupportedEncodingException 36696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 36796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(dstream, encoding, startline, startcolumn, 4096); 36896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 36996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void ReInit(java.io.InputStream dstream, int startline, 37096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int startcolumn) 37196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 37296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ReInit(dstream, startline, startcolumn, 4096); 37396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 37496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public String GetImage() 37596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 37696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (bufpos >= tokenBegin) 37796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); 37896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 37996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return new String(buffer, tokenBegin, bufsize - tokenBegin) + 38096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project new String(buffer, 0, bufpos + 1); 38196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 38296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 38396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public char[] GetSuffix(int len) 38496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 38596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project char[] ret = new char[len]; 38696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 38796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if ((bufpos + 1) >= len) 38896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); 38996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 39096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 39196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, 39296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project len - bufpos - 1); 39396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); 39496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 39596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 39696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project return ret; 39796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 39896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 39996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void Done() 40096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 40196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project buffer = null; 40296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline = null; 40396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn = null; 40496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 40596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 40696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 40796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Method to adjust line and column numbers for the start of a token. 40896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 40996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void adjustBeginLineColumn(int newLine, int newCol) 41096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 41196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int start = tokenBegin; 41296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int len; 41396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 41496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (bufpos >= tokenBegin) 41596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 41696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project len = bufpos - tokenBegin + inBuf + 1; 41796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 41896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 41996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 42096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project len = bufsize - tokenBegin + bufpos + 1 + inBuf; 42196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 42296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 42396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int i = 0, j = 0, k = 0; 42496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project int nextColDiff = 0, columnDiff = 0; 42596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 42696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project while (i < len && 42796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) 42896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 42996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline[j] = newLine; 43096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; 43196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn[j] = newCol + columnDiff; 43296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project columnDiff = nextColDiff; 43396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project i++; 43496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 43596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 43696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (i < len) 43796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 43896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline[j] = newLine++; 43996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufcolumn[j] = newCol + columnDiff; 44096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 44196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project while (i++ < len) 44296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project { 44396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project if (bufline[j = start % bufsize] != bufline[++start % bufsize]) 44496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline[j] = newLine++; 44596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project else 44696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project bufline[j] = newLine; 44796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 44896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 44996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 45096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project line = bufline[j]; 45196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project column = bufcolumn[j]; 45296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 45396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 45496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project} 455