diff --git a/libs/io/include/psemek/io/memory_stream.hpp b/libs/io/include/psemek/io/memory_stream.hpp index 5bb98f02..e90102cc 100644 --- a/libs/io/include/psemek/io/memory_stream.hpp +++ b/libs/io/include/psemek/io/memory_stream.hpp @@ -55,6 +55,15 @@ namespace psemek::io std::size_t read(char * p, std::size_t size) override; + void advance(std::size_t n) + { + if (end_ - begin_ < n) + throw io::istream_end{}; + begin_ += n; + } + + char const * data() const { return begin_; } + private: char const * begin_ = nullptr; char const * end_ = nullptr; @@ -101,6 +110,15 @@ namespace psemek::io std::swap(end_, s.end_); } + void advance(std::size_t n) + { + if (end_ - begin_ < n) + throw io::istream_end{}; + begin_ += n; + } + + char * data() const { return begin_; } + std::size_t write(char const * p, std::size_t size) override; private: