summaryrefslogtreecommitdiff
path: root/src/core/common/CharReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/common/CharReader.cpp')
-rw-r--r--src/core/common/CharReader.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/core/common/CharReader.cpp b/src/core/common/CharReader.cpp
index 4d3638c..3e95280 100644
--- a/src/core/common/CharReader.cpp
+++ b/src/core/common/CharReader.cpp
@@ -468,15 +468,27 @@ bool CharReader::read(char &c)
return res;
}
+bool CharReader::fetch(char &c)
+{
+ return buffer->fetch(readCursor, c);
+}
+
+bool CharReader::fetchPeek(char &c)
+{
+ if (coherent) {
+ return fetch(c);
+ }
+ return buffer->fetch(peekCursor, c);
+}
+
bool CharReader::expect(char c)
{
- char actual = 0;
- peek(actual);
- if (c == actual) {
+ char actual;
+ if (fetch(actual) && (actual == c)) {
+ peek(actual);
consumePeek();
return true;
}
- resetPeek();
return false;
}