diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-05 16:09:59 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-05 16:09:59 +0100 |
commit | 03b90ef542844febe6a9f99b830d67ff1c8dfb9c (patch) | |
tree | a1211d631c12bfae94bc46785fbe1cc326267976 /src/core/BufferedCharReader.cpp | |
parent | 30711f43a6cad9889ee1af8539658c4ca1f59854 (diff) | |
parent | e06e7ae19851acf5e397f579d6c8459e87086d30 (diff) |
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'src/core/BufferedCharReader.cpp')
-rw-r--r-- | src/core/BufferedCharReader.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/BufferedCharReader.cpp b/src/core/BufferedCharReader.cpp index f3792ec..aeedf12 100644 --- a/src/core/BufferedCharReader.cpp +++ b/src/core/BufferedCharReader.cpp @@ -18,6 +18,8 @@ #include <array> +#include "Utils.hpp" + #include "BufferedCharReader.hpp" namespace ousia { @@ -73,6 +75,15 @@ BufferedCharReader::BufferedCharReader(const std::string &str, int line, buffer.push_back(str); } +BufferedCharReader::BufferedCharReader(const std::string &str) + : inputStream(nullptr), + readCursor(1, 1, true), + peekCursor(1, 1, false), + depleted(true) +{ + buffer.push_back(str); +} + BufferedCharReader::BufferedCharReader(std::istream &inputStream, int line, int column) : inputStream(&inputStream), @@ -218,6 +229,19 @@ void BufferedCharReader::consumePeek() readCursor.assign(peekCursor); } +bool BufferedCharReader::consumeWhitespace() +{ + char c; + while (peek(&c)) { + if (!Utils::isWhitespace(c)) { + resetPeek(); + return true; + } + consumePeek(); + } + return false; +} + void BufferedCharReader::resetPeek() { // Reset the peek cursor to the read cursor |