public void AdjustBeginLineColumn(int newLine, int newCol)
{
int start = tokenBegin;
int len;
if (bufferPosition >= tokenBegin)
{
len = bufferPosition - tokenBegin + inBuf + 1;
}
else
{
len = bufferSize - tokenBegin + bufferPosition + 1 + inBuf;
}
int i = 0;
int j = 0;
int k;
int columnDiff = 0;
while(i < len && bufferLine[j = start % bufferSize] == bufferLine[k = ++start % bufferSize])
{
bufferLine[j] = newLine;
int nextColDiff = columnDiff + bufferColumn[k] - bufferColumn[j];
bufferColumn[j] = newCol + columnDiff;
columnDiff = nextColDiff;
i++;
}
if (i < len)
{
bufferLine[j] = newLine++;
bufferColumn[j] = newCol + columnDiff;
while(i++ < len)
{
if (bufferLine[j = start % bufferSize] != bufferLine[++start % bufferSize])
bufferLine[j] = newLine++;
else
bufferLine[j] = newLine;
}
}
line = bufferLine[j];
column = bufferColumn[j];
}