add memory_view_istream
This commit is contained in:
parent
5b26c7d85a
commit
1c92a7c9e7
@ -32,3 +32,33 @@ public:
|
||||
private:
|
||||
memory_streambuf buf;
|
||||
};
|
||||
|
||||
class memory_view_streambuf : public std::streambuf {
|
||||
public:
|
||||
explicit memory_view_streambuf(const util::Buffer<char>& buffer)
|
||||
: buffer(std::move(buffer)) {
|
||||
char* base = const_cast<char*>(this->buffer.data());
|
||||
char* end = base + this->buffer.size();
|
||||
setg(base, base, end);
|
||||
}
|
||||
|
||||
memory_view_streambuf(const memory_view_streambuf&) = delete;
|
||||
memory_view_streambuf& operator=(const memory_view_streambuf&) = delete;
|
||||
|
||||
protected:
|
||||
int_type underflow() override {
|
||||
return traits_type::eof();
|
||||
}
|
||||
|
||||
private:
|
||||
const util::Buffer<char>& buffer;
|
||||
};
|
||||
|
||||
class memory_view_istream : public std::istream {
|
||||
public:
|
||||
explicit memory_view_istream(const util::Buffer<char>& buffer)
|
||||
: std::istream(&buf), buf(buffer) {}
|
||||
|
||||
private:
|
||||
memory_view_streambuf buf;
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user