10  in_pos += gptr() - eback();
 
   11  setg(buffer.data(), buffer.data(), buffer.data());
 
   18  const ptrdiff_t n = pptr() - pbase();
 
   21   file.
pwrite(buffer.data(), n, out_pos);
 
   23   setp(buffer.data(), buffer.data() + buffer_size);
 
   32  std::ios_base::seekdir dir,
 
   33  std::ios_base::openmode which
 
   38  if (dir == std::ios_base::beg)
 
   40  else if (dir == std::ios_base::cur)
 
   42   base = bool(which & std::ios_base::in)
 
   43    ? in_pos + gptr() - eback()
 
   44    : out_pos + pptr() - pbase();
 
   46  else if (dir == std::ios_base::end)
 
   47   base = file.get_size();
 
   50   return pos_type(off_type(-1));
 
   52   return seekpos(base + off, which);
 
 
   60  std::ios_base::openmode which
 
   65  if (which & std::ios_base::in)
 
   68  if (which & std::ios_base::out)
 
 
   87  const int64_t size = file.
get_size();
 
   90  return size - (in_pos + gptr() - eback());
 
 
   97  if (gptr() == egptr())
 
   99   in_pos += gptr() - eback();
 
  100   const size_t size = file.
pread(buffer.data(), buffer.size(), in_pos);
 
  101   setg(buffer.data(), buffer.data(), buffer.data() + size);
 
  103    return traits_type::eof();
 
  106  return traits_type::to_int_type(*gptr());
 
 
  113  std::streamsize result = 0;
 
  116   const std::streamsize available = egptr() - gptr();
 
  117   const std::streamsize n = std::min(available, count);
 
  118   std::memcpy(s, gptr(), n);
 
  131    const std::streamsize n = std::streamsize(file.
pread(s, count, in_pos));
 
 
  152  const ptrdiff_t available = epptr() - pptr();
 
  154  if (available >= count)
 
  156   std::memcpy(pptr(), s, count);
 
  162   file.
pwrite(s, count, out_pos);
 
 
  173  if (pptr() >= epptr())
 
  176  if (!traits_type::eq_int_type(ch, traits_type::eof()))
 
  178   *pptr() = traits_type::to_char_type(ch);
 
  182  return traits_type::not_eof(ch);
 
 
  189  if (gptr() == eback() && in_pos > 0)
 
  192   setg(buffer.data(), buffer.data() + 1, buffer.data() + 1);
 
  193   file.
pread(buffer.data(), 1, in_pos);
 
  196  if (gptr() > eback())
 
  199   if (!traits_type::eq_int_type(c, traits_type::eof()))
 
  201    const char cc = traits_type::to_char_type(c);
 
  205     file.
pwrite(gptr(), 1, in_pos + gptr() - eback());
 
  211  return traits_type::eof();
 
 
  219  setg(buffer.data(), buffer.data(), buffer.data());
 
  222  setp(buffer.data(), buffer.data() + buffer_size);
 
 
  229  if (pptr() > pbase())
 
  232   try {syncp();} 
catch (...) {}
 
 
virtual int64_t get_size() const
Get the size of the file, or -1 if it is unknown.
 
virtual void pwrite(const char *data, size_t size, int64_t offset)
Write a range of bytes. Extend file size if necessary.
 
virtual size_t pread(char *data, size_t size, int64_t offset) const
Read a range of bytes.
 
static void warning(const std::string &message) noexcept
 
pos_type seekpos(pos_type pos, std::ios_base::openmode which) override
 
pos_type seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which) override
 
std::streamsize showmanyc() override
 
filebuf(Abstract_File &file)
 
int_type pbackfail(int_type c) override
 
int_type overflow(int_type ch) override
 
std::streamsize xsputn(const char_type *s, std::streamsize count) override
 
int_type underflow() override
 
std::streamsize xsgetn(char_type *s, std::streamsize count) override