1bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */ 2bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/* 3bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Copyright 2004 the mime4j project 4bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 5bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Licensed under the Apache License, Version 2.0 (the "License"); 6bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * you may not use this file except in compliance with the License. 7bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * You may obtain a copy of the License at 8bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 9bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 10bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 11bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Unless required by applicable law or agreed to in writing, software 12bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 13bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * See the License for the specific language governing permissions and 15bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * limitations under the License. 16bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 17bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpackage org.apache.james.mime4j.field.address.parser; 18bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 19bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/** 20bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * An implementation of interface CharStream, where the stream is assumed to 21bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * contain only ASCII characters (without unicode processing). 22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 23bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic class SimpleCharStream 25bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook{ 26bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public static final boolean staticFlag = false; 27bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int bufsize; 28bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int available; 29bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int tokenBegin; 30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int bufpos = -1; 31bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int bufline[]; 32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int bufcolumn[]; 33bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int column = 0; 35bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int line = 1; 36bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 37bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected boolean prevCharIsCR = false; 38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected boolean prevCharIsLF = false; 39bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 40bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected java.io.Reader inputStream; 41bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 42bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected char[] buffer; 43bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int maxNextCharInd = 0; 44bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int inBuf = 0; 45bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int tabSize = 8; 46bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 47bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void setTabSize(int i) { tabSize = i; } 48bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected int getTabSize(int i) { return tabSize; } 49bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 50bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 51bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void ExpandBuff(boolean wrapAround) 52bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 53bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook char[] newbuffer = new char[bufsize + 2048]; 54bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int newbufline[] = new int[bufsize + 2048]; 55bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int newbufcolumn[] = new int[bufsize + 2048]; 56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook try 58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (wrapAround) 60bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 61bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); 62bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(buffer, 0, newbuffer, 63bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufsize - tokenBegin, bufpos); 64bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook buffer = newbuffer; 65bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 66bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); 67bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); 68bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline = newbufline; 69bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 70bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); 71bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); 72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn = newbufcolumn; 73bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 74bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook maxNextCharInd = (bufpos += (bufsize - tokenBegin)); 75bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 76bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 77bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 78bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); 79bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook buffer = newbuffer; 80bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 81bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); 82bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline = newbufline; 83bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 84bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); 85bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn = newbufcolumn; 86bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 87bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook maxNextCharInd = (bufpos -= tokenBegin); 88bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 89bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 90bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook catch (Throwable t) 91bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 92bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw new Error(t.getMessage()); 93bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 94bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 95bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 96bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufsize += 2048; 97bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available = bufsize; 98bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook tokenBegin = 0; 99bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 100bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 101bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void FillBuff() throws java.io.IOException 102bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 103bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (maxNextCharInd == available) 104bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 105bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (available == bufsize) 106bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 107bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (tokenBegin > 2048) 108bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 109bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufpos = maxNextCharInd = 0; 110bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available = tokenBegin; 111bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 112bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else if (tokenBegin < 0) 113bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufpos = maxNextCharInd = 0; 114bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 115bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ExpandBuff(false); 116bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 117bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else if (available > tokenBegin) 118bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available = bufsize; 119bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else if ((tokenBegin - available) < 2048) 120bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ExpandBuff(true); 121bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 122bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available = tokenBegin; 123bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 124bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 125bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int i; 126bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook try { 127bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if ((i = inputStream.read(buffer, maxNextCharInd, 128bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available - maxNextCharInd)) == -1) 129bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 130bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook inputStream.close(); 131bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw new java.io.IOException(); 132bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 133bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 134bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook maxNextCharInd += i; 135bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return; 136bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 137bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook catch(java.io.IOException e) { 138bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook --bufpos; 139bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook backup(0); 140bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (tokenBegin == -1) 141bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook tokenBegin = bufpos; 142bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw e; 143bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 144bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 145bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 146bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public char BeginToken() throws java.io.IOException 147bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 148bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook tokenBegin = -1; 149bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook char c = readChar(); 150bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook tokenBegin = bufpos; 151bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 152bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return c; 153bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 154bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 155bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void UpdateLineColumn(char c) 156bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 157bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook column++; 158bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 159bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (prevCharIsLF) 160bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 161bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook prevCharIsLF = false; 162bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook line += (column = 1); 163bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 164bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else if (prevCharIsCR) 165bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 166bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook prevCharIsCR = false; 167bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (c == '\n') 168bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 169bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook prevCharIsLF = true; 170bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 171bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 172bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook line += (column = 1); 173bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 174bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 175bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook switch (c) 176bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 177bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook case '\r' : 178bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook prevCharIsCR = true; 179bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook break; 180bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook case '\n' : 181bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook prevCharIsLF = true; 182bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook break; 183bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook case '\t' : 184bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook column--; 185bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook column += (tabSize - (column % tabSize)); 186bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook break; 187bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook default : 188bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook break; 189bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 190bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 191bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline[bufpos] = line; 192bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn[bufpos] = column; 193bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 194bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 195bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public char readChar() throws java.io.IOException 196bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 197bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (inBuf > 0) 198bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 199bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook --inBuf; 200bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 201bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (++bufpos == bufsize) 202bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufpos = 0; 203bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 204bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return buffer[bufpos]; 205bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 206bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 207bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (++bufpos >= maxNextCharInd) 208bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook FillBuff(); 209bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 210bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook char c = buffer[bufpos]; 211bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 212bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook UpdateLineColumn(c); 213bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return (c); 214bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 215bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 216bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 217bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @deprecated 218bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @see #getEndColumn 219bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 220bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 221bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int getColumn() { 222bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return bufcolumn[bufpos]; 223bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 224bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 225bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 226bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @deprecated 227bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @see #getEndLine 228bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 229bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 230bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int getLine() { 231bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return bufline[bufpos]; 232bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 233bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 234bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int getEndColumn() { 235bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return bufcolumn[bufpos]; 236bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 237bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 238bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int getEndLine() { 239bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return bufline[bufpos]; 240bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 241bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 242bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int getBeginColumn() { 243bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return bufcolumn[tokenBegin]; 244bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 245bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 246bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int getBeginLine() { 247bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return bufline[tokenBegin]; 248bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 249bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 250bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void backup(int amount) { 251bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 252bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook inBuf += amount; 253bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if ((bufpos -= amount) < 0) 254bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufpos += bufsize; 255bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 256bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 257bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.Reader dstream, int startline, 258bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn, int buffersize) 259bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 260bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook inputStream = dstream; 261bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook line = startline; 262bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook column = startcolumn - 1; 263bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 264bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available = bufsize = buffersize; 265bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook buffer = new char[buffersize]; 266bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline = new int[buffersize]; 267bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn = new int[buffersize]; 268bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 269bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 270bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.Reader dstream, int startline, 271bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn) 272bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 273bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(dstream, startline, startcolumn, 4096); 274bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 275bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 276bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.Reader dstream) 277bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 278bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(dstream, 1, 1, 4096); 279bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 280bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.Reader dstream, int startline, 281bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn, int buffersize) 282bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 283bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook inputStream = dstream; 284bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook line = startline; 285bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook column = startcolumn - 1; 286bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 287bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (buffer == null || buffersize != buffer.length) 288bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 289bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook available = bufsize = buffersize; 290bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook buffer = new char[buffersize]; 291bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline = new int[buffersize]; 292bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn = new int[buffersize]; 293bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 294bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook prevCharIsLF = prevCharIsCR = false; 295bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook tokenBegin = inBuf = maxNextCharInd = 0; 296bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufpos = -1; 297bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 298bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 299bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.Reader dstream, int startline, 300bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn) 301bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 302bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(dstream, startline, startcolumn, 4096); 303bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 304bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 305bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.Reader dstream) 306bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 307bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(dstream, 1, 1, 4096); 308bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 309bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, 310bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException 311bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 312bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); 313bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 314bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 315bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.InputStream dstream, int startline, 316bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn, int buffersize) 317bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 318bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); 319bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 320bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 321bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, 322bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn) throws java.io.UnsupportedEncodingException 323bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 324bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(dstream, encoding, startline, startcolumn, 4096); 325bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 326bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 327bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.InputStream dstream, int startline, 328bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn) 329bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 330bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(dstream, startline, startcolumn, 4096); 331bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 332bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 333bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException 334bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 335bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(dstream, encoding, 1, 1, 4096); 336bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 337bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 338bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public SimpleCharStream(java.io.InputStream dstream) 339bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 340bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this(dstream, 1, 1, 4096); 341bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 342bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 343bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.InputStream dstream, String encoding, int startline, 344bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException 345bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 346bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); 347bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 348bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 349bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.InputStream dstream, int startline, 350bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn, int buffersize) 351bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 352bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); 353bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 354bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 355bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException 356bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 357bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(dstream, encoding, 1, 1, 4096); 358bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 359bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 360bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.InputStream dstream) 361bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 362bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(dstream, 1, 1, 4096); 363bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 364bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.InputStream dstream, String encoding, int startline, 365bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn) throws java.io.UnsupportedEncodingException 366bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 367bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(dstream, encoding, startline, startcolumn, 4096); 368bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 369bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void ReInit(java.io.InputStream dstream, int startline, 370bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int startcolumn) 371bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 372bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ReInit(dstream, startline, startcolumn, 4096); 373bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 374bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public String GetImage() 375bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 376bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (bufpos >= tokenBegin) 377bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); 378bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 379bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return new String(buffer, tokenBegin, bufsize - tokenBegin) + 380bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook new String(buffer, 0, bufpos + 1); 381bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 382bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 383bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public char[] GetSuffix(int len) 384bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 385bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook char[] ret = new char[len]; 386bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 387bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if ((bufpos + 1) >= len) 388bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); 389bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 390bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 391bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, 392bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook len - bufpos - 1); 393bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); 394bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 395bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 396bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return ret; 397bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 398bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 399bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void Done() 400bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 401bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook buffer = null; 402bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline = null; 403bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn = null; 404bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 405bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 406bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 407bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Method to adjust line and column numbers for the start of a token. 408bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 409bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public void adjustBeginLineColumn(int newLine, int newCol) 410bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 411bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int start = tokenBegin; 412bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int len; 413bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 414bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (bufpos >= tokenBegin) 415bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 416bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook len = bufpos - tokenBegin + inBuf + 1; 417bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 418bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 419bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 420bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook len = bufsize - tokenBegin + bufpos + 1 + inBuf; 421bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 422bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 423bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int i = 0, j = 0, k = 0; 424bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int nextColDiff = 0, columnDiff = 0; 425bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 426bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook while (i < len && 427bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) 428bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 429bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline[j] = newLine; 430bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; 431bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn[j] = newCol + columnDiff; 432bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook columnDiff = nextColDiff; 433bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook i++; 434bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 435bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 436bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (i < len) 437bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 438bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline[j] = newLine++; 439bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufcolumn[j] = newCol + columnDiff; 440bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 441bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook while (i++ < len) 442bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook { 443bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (bufline[j = start % bufsize] != bufline[++start % bufsize]) 444bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline[j] = newLine++; 445bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook else 446bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook bufline[j] = newLine; 447bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 448bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 449bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 450bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook line = bufline[j]; 451bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook column = bufcolumn[j]; 452bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 453bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 454bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook} 455