📄 buffer.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Buffer.java
package cisco.dsbu.cms.boot.internal.xmllite;
import java.io.*;
// Referenced classes of package cisco.dsbu.cms.boot.internal.xmllite:
// CharString
class Buffer
{
private static final int LOAD_SUCCESS = 0;
private static final int LOAD_BUFFER_FULL = 1;
private static final int LOAD_SOURCE_END = 2;
private Reader source;
private char buffer[];
private int bufferSize;
private int bufferStart;
private int bufferEnd;
private int bufferLength;
Buffer(int i)
{
bufferStart = 0;
bufferEnd = 0;
bufferLength = 0;
buffer = new char[i];
bufferSize = i;
}
void setSource(Reader reader)
{
source = reader;
bufferStart = 0;
bufferEnd = 0;
bufferLength = 0;
}
char peek()
throws IOException
{
if(bufferLength == 0)
loadBuffer();
if(bufferLength == 0)
{
throw new EOFException();
} else
{
char c = buffer[bufferStart];
return c;
}
}
char readCharacter()
throws IOException
{
char c = peek();
charactersRemoved(1);
return c;
}
CharString readCharacters()
throws IOException
{
return readCharacters(bufferLength);
}
CharString readCharacters(int i)
throws IOException
{
if(bufferLength < i)
loadBuffer();
if(bufferLength == 0)
{
throw new EOFException();
} else
{
int j = bufferLength >= i ? i : bufferLength;
CharString charstring = new CharString(buffer, bufferStart, j);
charactersRemoved(j);
return charstring;
}
}
int find(char c)
throws IOException
{
boolean flag = false;
int i = bufferStart;
int j = 0;
do
{
if(j == bufferLength)
{
int k = loadBuffer();
if(k == 1 || k == 2)
break;
}
j++;
if(buffer[i] == c)
{
flag = true;
break;
}
if(++i == bufferSize)
i = 0;
} while(true);
return flag ? j : -1;
}
int findNonWhiteSpace()
throws IOException
{
boolean flag = false;
int i = bufferStart;
int j = 0;
do
{
if(j == bufferLength)
{
int k = loadBuffer();
if(k == 1 || k == 2)
break;
}
j++;
if(!Character.isWhitespace(buffer[i]))
{
flag = true;
break;
}
if(++i == bufferSize)
i = 0;
} while(true);
return flag ? j : -1;
}
private int loadBuffer()
throws IOException
{
if(bufferLength == bufferSize)
return 1;
int i = bufferSize - bufferLength;
int j = bufferSize - bufferEnd;
int k;
if(j < i)
{
k = i - j;
} else
{
j = i;
k = 0;
}
int l = source.read(buffer, bufferEnd, j);
if(l == -1)
return 2;
charactersAdded(l);
if(l == j && k != 0)
{
int i1 = source.read(buffer, bufferEnd, k);
if(i1 != -1)
charactersAdded(i1);
}
return 0;
}
private void charactersAdded(int i)
{
bufferEnd += i;
if(bufferEnd >= bufferSize)
bufferEnd -= bufferSize;
bufferLength += i;
}
private void charactersRemoved(int i)
{
bufferStart += i;
if(bufferStart >= bufferSize)
bufferStart -= bufferSize;
bufferLength -= i;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -