From 377b7b0213733307927bec9e39c8ccb063e6ba50 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Thu, 1 Jan 2015 18:05:29 +0100 Subject: Added readRaw function to CharReader --- src/core/common/CharReader.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/core/common/CharReader.cpp') diff --git a/src/core/common/CharReader.cpp b/src/core/common/CharReader.cpp index db9bb2e..6966b97 100644 --- a/src/core/common/CharReader.cpp +++ b/src/core/common/CharReader.cpp @@ -516,6 +516,18 @@ CharReaderFork CharReader::fork() return CharReaderFork(buffer, readCursor, peekCursor, coherent); } +size_t CharReader::readRaw(char *buf, size_t size) +{ + // TODO: This is inefficient, implement ranged read in the Buffer class and + // use it + size_t res = 0; + while (res < size && read(*buf)) { + buf++; + res++; + } + return res; +} + SourceContext CharReader::getContextAt(ssize_t maxSize, Buffer::CursorId referenceCursor) { @@ -622,7 +634,7 @@ SourceContext CharReader::getContextAtOffs(ssize_t maxSize, size_t offs) // Create a new cursor and calculate how far it has to be moved to reach // the position specified in the location instance Buffer::CursorId cur = buffer->createCursor(); - ssize_t moveOffs = buffer->offset(cur) - offs; + ssize_t moveOffs = offs - buffer->offset(cur); // Try to move the cursor to the specified position and read the context SourceContext res; -- cgit v1.2.3