Methods Summary |
---|
public boolean | hasMore()
return mNext < mLine.length();
|
public boolean | nextBoolean()
// "\s*(\d)(,|$)"
// \d is '0' or '1'
nextTok();
if (mTokEnd - mTokStart > 1) {
throw new ATParseEx();
}
char c = mLine.charAt(mTokStart);
if (c == '0") return false;
if (c == '1") return true;
throw new ATParseEx();
|
public int | nextInt()positive int only
// "\s*(\d+)(,|$)"
int ret = 0;
nextTok();
for (int i = mTokStart ; i < mTokEnd ; i++) {
char c = mLine.charAt(i);
// Yes, ASCII decimal digits only
if (c < '0" || c > '9") {
throw new ATParseEx();
}
ret *= 10;
ret += c - '0";
}
return ret;
|
public java.lang.String | nextString()
nextTok();
return mLine.substring(mTokStart, mTokEnd);
|
private void | nextTok()
int len = mLine.length();
if (mNext == 0) {
skipPrefix();
}
if (mNext >= len) {
throw new ATParseEx();
}
try {
// \s*("([^"]*)"|(.*)\s*)(,|$)
char c = mLine.charAt(mNext++);
boolean hasQuote = false;
c = skipWhiteSpace(c);
if (c == '"") {
if (mNext >= len) {
throw new ATParseEx();
}
c = mLine.charAt(mNext++);
mTokStart = mNext - 1;
while (c != '"" && mNext < len) {
c = mLine.charAt(mNext++);
}
if (c != '"") {
throw new ATParseEx();
}
mTokEnd = mNext - 1;
if (mNext < len && mLine.charAt(mNext++) != ',") {
throw new ATParseEx();
}
} else {
mTokStart = mNext - 1;
mTokEnd = mTokStart;
while (c != ',") {
if (!Character.isWhitespace(c)) {
mTokEnd = mNext;
}
if (mNext == len) {
break;
}
c = mLine.charAt(mNext++);
}
}
} catch (StringIndexOutOfBoundsException ex) {
throw new ATParseEx();
}
|
private void | skipPrefix()
// consume "^[^:]:"
mNext = 0;
int s = mLine.length();
while (mNext < s){
char c = mLine.charAt(mNext++);
if (c == ':") {
return;
}
}
throw new ATParseEx("missing prefix");
|
private char | skipWhiteSpace(char c)Throws ATParseEx if whitespace extends to the end of string
int len;
len = mLine.length();
while (mNext < len && Character.isWhitespace(c)) {
c = mLine.charAt(mNext++);
}
if (Character.isWhitespace(c)) {
throw new ATParseEx();
}
return c;
|