From d710bf02517225662e80eeeaf93149cfe50c872d Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sun, 8 Feb 2015 21:13:12 +0100 Subject: Added "expect" function to CharReader --- src/core/common/CharReader.cpp | 12 ++++++++++++ src/core/common/CharReader.hpp | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/src/core/common/CharReader.cpp b/src/core/common/CharReader.cpp index 5b9b1d4..4d3638c 100644 --- a/src/core/common/CharReader.cpp +++ b/src/core/common/CharReader.cpp @@ -468,6 +468,18 @@ bool CharReader::read(char &c) return res; } +bool CharReader::expect(char c) +{ + char actual = 0; + peek(actual); + if (c == actual) { + consumePeek(); + return true; + } + resetPeek(); + return false; +} + void CharReader::resetPeek() { if (!coherent) { diff --git a/src/core/common/CharReader.hpp b/src/core/common/CharReader.hpp index cbfeaf2..64c80af 100644 --- a/src/core/common/CharReader.hpp +++ b/src/core/common/CharReader.hpp @@ -489,6 +489,15 @@ public: */ bool read(char &c); + /** + * Peeks a character, checks whether this character equals the given + * character -- and if yes -- consumes the peek, otherwise resets it. + * + * @param c is the character that is expected. + * @return true if this character is actually next. + */ + bool expect(char c); + /** * Resets the peek pointer to the "read" pointer. */ -- cgit v1.2.3