summaryrefslogtreecommitdiff
path: root/src/core/BufferedCharReader.cpp
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-05 16:09:59 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-05 16:09:59 +0100
commit03b90ef542844febe6a9f99b830d67ff1c8dfb9c (patch)
treea1211d631c12bfae94bc46785fbe1cc326267976 /src/core/BufferedCharReader.cpp
parent30711f43a6cad9889ee1af8539658c4ca1f59854 (diff)
parente06e7ae19851acf5e397f579d6c8459e87086d30 (diff)
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'src/core/BufferedCharReader.cpp')
-rw-r--r--src/core/BufferedCharReader.cpp24
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