summaryrefslogtreecommitdiff
path: root/src/core/common/CharReader.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-15 00:27:11 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-15 00:27:11 +0100
commit253492406f04657fe71e6c0c6603496241280478 (patch)
tree5a9c1b785a5559025ff7d26bf9ed880ce98ff0ce /src/core/common/CharReader.cpp
parent551b7be64f207845cb05b8ec593f9bf2d7f0c940 (diff)
parentb708dd4cce828c1089a18fefcc22804f7cdad908 (diff)
Merge branch 'master' into astoecke_parser_stack_new
Conflicts: application/CMakeLists.txt application/src/core/parser/stack/DocumentHandler.hpp application/src/core/parser/stack/DomainHandler.hpp application/src/core/parser/stack/ImportIncludeHandler.hpp
Diffstat (limited to 'src/core/common/CharReader.cpp')
-rw-r--r--src/core/common/CharReader.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/core/common/CharReader.cpp b/src/core/common/CharReader.cpp
index 3e95280..2a4383f 100644
--- a/src/core/common/CharReader.cpp
+++ b/src/core/common/CharReader.cpp
@@ -336,7 +336,7 @@ size_t Buffer::seekCursor(CursorId cursor, size_t offs)
const ssize_t relativeOffs = offs - currentOffs;
// Perform the actual seeking, move the peek cursor to the read cursor
- const ssize_t reachedOffs = currentOffs + moveCursor(cursor, relativeOffs);
+ const ssize_t reachedOffs = currentOffs + moveCursor(cursor, relativeOffs);
// Clamp to values larger or equal to zero
return reachedOffs < 0 ? 0 : reachedOffs;
@@ -402,6 +402,18 @@ CharReader::CharReader(std::shared_ptr<Buffer> buffer, SourceId sourceId,
{
}
+CharReader::CharReader(CharReader &&other) noexcept
+ : buffer(std::move(other.buffer)),
+ readCursor(other.readCursor),
+ peekCursor(other.peekCursor),
+ coherent(other.coherent),
+ sourceId(other.sourceId),
+ offs(other.offs)
+{
+ other.readCursor = 0;
+ other.peekCursor = 0;
+}
+
CharReader::CharReader(const std::string &str, SourceId sourceId, size_t offs)
: CharReader(std::shared_ptr<Buffer>{new Buffer{str}}, sourceId, offs)
{
@@ -468,10 +480,7 @@ bool CharReader::read(char &c)
return res;
}
-bool CharReader::fetch(char &c)
-{
- return buffer->fetch(readCursor, c);
-}
+bool CharReader::fetch(char &c) { return buffer->fetch(readCursor, c); }
bool CharReader::fetchPeek(char &c)
{
@@ -541,7 +550,7 @@ size_t CharReader::readRaw(char *buf, size_t size)
size_t CharReader::seek(size_t requestedOffset)
{
- const size_t res = buffer->seekCursor(readCursor, requestedOffset);
+ const size_t res = buffer->seekCursor(readCursor, requestedOffset);
buffer->copyCursor(readCursor, peekCursor);
coherent = true;
return res;
@@ -549,7 +558,7 @@ size_t CharReader::seek(size_t requestedOffset)
size_t CharReader::seekPeekCursor(size_t requestedOffset)
{
- const size_t res = buffer->seekCursor(peekCursor, requestedOffset);
+ const size_t res = buffer->seekCursor(peekCursor, requestedOffset);
coherent = (res == getOffset());
return res;
}