mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-10 21:41:50 +00:00
add output versions of deflate and memory streams
This commit is contained in:
parent
57d05bde57
commit
226ee40b5a
4 changed files with 320 additions and 99 deletions
|
|
@ -3,32 +3,32 @@
|
|||
#include <istream>
|
||||
#include "util/Buffer.hpp"
|
||||
|
||||
class memory_streambuf : public std::streambuf {
|
||||
public:
|
||||
explicit memory_streambuf(util::Buffer<char> buffer)
|
||||
: buffer(std::move(buffer)) {
|
||||
char* base = this->buffer.data();
|
||||
char* end = base + this->buffer.size();
|
||||
setg(base, base, end);
|
||||
}
|
||||
|
||||
memory_streambuf(const memory_streambuf&) = delete;
|
||||
memory_streambuf& operator=(const memory_streambuf&) = delete;
|
||||
|
||||
protected:
|
||||
int_type underflow() override {
|
||||
return traits_type::eof();
|
||||
}
|
||||
|
||||
private:
|
||||
util::Buffer<char> buffer;
|
||||
};
|
||||
|
||||
class memory_istream : public std::istream {
|
||||
public:
|
||||
explicit memory_istream(util::Buffer<char> buffer)
|
||||
: std::istream(&buf), buf(std::move(buffer)) {}
|
||||
|
||||
private:
|
||||
class memory_streambuf : public std::streambuf {
|
||||
public:
|
||||
explicit memory_streambuf(util::Buffer<char> buffer)
|
||||
: buffer(std::move(buffer)) {
|
||||
char* base = this->buffer.data();
|
||||
char* end = base + this->buffer.size();
|
||||
setg(base, base, end);
|
||||
}
|
||||
|
||||
memory_streambuf(const memory_streambuf&) = delete;
|
||||
memory_streambuf& operator=(const memory_streambuf&) = delete;
|
||||
|
||||
protected:
|
||||
int_type underflow() override {
|
||||
return traits_type::eof();
|
||||
}
|
||||
|
||||
private:
|
||||
util::Buffer<char> buffer;
|
||||
};
|
||||
|
||||
memory_streambuf buf;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue