00001 #ifndef MERT_GZFILEBUF_H_
00002 #define MERT_GZFILEBUF_H_
00003
00004 #include <streambuf>
00005 #include <zlib.h>
00006
00007 class GzFileBuf : public std::streambuf
00008 {
00009 public:
00010 explicit GzFileBuf(const char* filename);
00011 virtual ~GzFileBuf();
00012
00013 protected:
00014 virtual int_type overflow(int_type c);
00015
00016
00017 virtual int_type underflow();
00018
00019 virtual std::streampos seekpos(
00020 std::streampos sp,
00021 std::ios_base::openmode which = std::ios_base::in | std::ios_base::out);
00022
00023 virtual std::streamsize xsgetn(char* s, std::streamsize num);
00024
00025
00026 virtual std::streamsize xsputn(const char* s, std::streamsize num);
00027
00028 private:
00029 gzFile m_gz_file;
00030 static const unsigned int kBufSize = 1024;
00031 char m_buf[kBufSize];
00032 };
00033
00034 #endif // MERT_GZFILEBUF_H_