diff options
Diffstat (limited to 'src/core/common/CharReader.cpp')
-rw-r--r-- | src/core/common/CharReader.cpp | 20 |
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; } |