From 3136c3b239041c0b7ddc9ec54bc8bb5eb2d27a49 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 30 Aug 2020 21:27:10 +0300 Subject: [PATCH] Add an istream class that wraps raw data buffer --- .../include/psemek/util/memory_stream.hpp | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 libs/util/include/psemek/util/memory_stream.hpp diff --git a/libs/util/include/psemek/util/memory_stream.hpp b/libs/util/include/psemek/util/memory_stream.hpp new file mode 100644 index 00000000..03f05385 --- /dev/null +++ b/libs/util/include/psemek/util/memory_stream.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include + +namespace psemek::util +{ + + struct memory_istream + : std::istream + { + memory_istream(std::string_view data) + : b_(data) + { + rdbuf(&b_); + } + + private: + struct buf + : std::streambuf + { + buf(std::string_view data) + { + char * p = const_cast(data.data()); + setg(p, p, p + data.size()); + } + }; + + buf b_; + }; + +}