10 std::streambuf &streambuf,
18 throw Exception(
"Stream_File does not support shared_write");
32 pos = streambuf.pubseekoff
43 void Stream_File::seek(int64_t offset)
const
46 if (int64_t(pos) == offset)
51 pos = streambuf.pubseekoff(offset, std::ios_base::beg);
52 if (int64_t(pos) == offset)
56 throw Exception(
"seek error");
64 const std::streamsize n = streambuf.sgetn(data, std::streamsize(size));
77 while (written < size)
79 const std::streamsize n = streambuf.sputn
82 std::streamsize(size - written)
86 throw Exception(
"Could not write to stream");
92 if (streambuf.pubsync() < 0)
bool is_shared() const noexcept
void destructor_flush() noexcept
int64_t get_size() const override
Get the size of the file, or -1 if it is unknown.
size_t pread(char *data, size_t size, int64_t offset) const override
Read a range of bytes.
void pwrite(const char *data, size_t size, int64_t offset) override
Write a range of bytes. Extend file size if necessary.
Stream_File(std::streambuf &streambuf, Open_Mode mode)