17#include "gzip_streambuf.h"
19util::gzip_streambuf::gzip_streambuf(
const std::string& path)
20: gz_(gzopen(path.c_str(),
"rb"))
23 throw std::runtime_error(
"gzopen failed");
25 setg(buffer_.data(), buffer_.data(), buffer_.data());
28util::gzip_streambuf::~gzip_streambuf() {
33auto util::gzip_streambuf::underflow() -> int_type {
34 int n = gzread(gz_, buffer_.data(), buffer_.size());
36 return traits_type::eof();
38 setg(buffer_.data(), buffer_.data(), buffer_.data() + n);
39 return traits_type::to_int_type(*gptr());