From f88221a0c6dbac09f5a32b4b20b06feaeb4af485 Mon Sep 17 00:00:00 2001 From: Sebastian Messmer Date: Sun, 25 Oct 2015 11:32:40 +0100 Subject: [PATCH] Add Data::LoadFromStream(stream, size) --- data/Data.cpp | 4 +--- data/Data.h | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/data/Data.cpp b/data/Data.cpp index 90c8da20..cd37683c 100644 --- a/data/Data.cpp +++ b/data/Data.cpp @@ -31,9 +31,7 @@ std::streampos Data::_getStreamSize(istream &stream) { return endpos - current_pos; } -Data Data::LoadFromStream(istream &stream) { - size_t size = _getStreamSize(stream); - +Data Data::LoadFromStream(istream &stream, size_t size) { Data result(size); stream.read(static_cast(result.data()), result.size()); return std::move(result); diff --git a/data/Data.h b/data/Data.h index 42626463..37a6375a 100644 --- a/data/Data.h +++ b/data/Data.h @@ -37,6 +37,7 @@ public: //TODO Test LoadFromStream/StoreToStream static Data LoadFromStream(std::istream &stream); + static Data LoadFromStream(std::istream &stream, size_t size); void StoreToStream(std::ostream &stream) const; private: @@ -122,11 +123,14 @@ inline void Data::StoreToFile(const boost::filesystem::path &filepath) const { StoreToStream(file); } - inline void Data::StoreToStream(std::ostream &stream) const { stream.write(static_cast(_data), _size); } +inline Data Data::LoadFromStream(std::istream &stream) { + return LoadFromStream(stream, _getStreamSize(stream)); +} + inline bool operator==(const Data &lhs, const Data &rhs) { return lhs.size() == rhs.size() && 0 == memcmp(lhs.data(), rhs.data(), lhs.size()); }