diff options
Diffstat (limited to 'src/common/io/Stream.cpp')
-rw-r--r-- | src/common/io/Stream.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/common/io/Stream.cpp b/src/common/io/Stream.cpp index 97669944..b2a67a18 100644 --- a/src/common/io/Stream.cpp +++ b/src/common/io/Stream.cpp @@ -58,17 +58,23 @@ Index Stream::Write(const char* buffer, Index size) { return Write(reinterpret_cast<const std::byte*>(buffer), size); } -std::vector<std::byte> Stream::ReadAll() { - std::vector<std::byte> buffer; - buffer.resize(GetSize()); - Read(buffer.data(), 0, buffer.size()); +Buffer Stream::ReadToEnd(Index grow_size) { + Buffer buffer(grow_size); + while (true) { + auto read = Read(buffer.GetUsedEndPtr(), buffer.GetBackFree()); + if (read == 0) { + break; + } + if (buffer.IsUsedReachEnd()) { + buffer.ResizeBuffer(buffer.GetBufferSize() + grow_size, true); + } + } return buffer; } -String Stream::ReadAllAsString() { - auto buffer = ReadAll(); - return String::FromUtf8(reinterpret_cast<const char*>(buffer.data()), - buffer.size()); +String Stream::ReadToEndAsUtf8String() { + auto buffer = ReadToEnd(); + return String::FromUtf8(buffer); } void Stream::Flush() {} |