10 std::streambuf &streambuf,
29 pos = streambuf.pubseekoff
40 void Stream_File::seek(int64_t offset)
const
43 if (int64_t(pos) == offset)
48 pos = streambuf.pubseekoff(offset, std::ios_base::beg);
49 if (int64_t(pos) == offset)
53 throw Exception(
"seek error");
61 const std::streamsize n = streambuf.sgetn(data, std::streamsize(size));
74 while (written < size)
76 const std::streamsize n = streambuf.sputn
79 std::streamsize(size - written)
83 throw Exception(
"Could not write to stream");
89 if (streambuf.pubsync() < 0)
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)