annotate src/zlib-1.2.7/contrib/iostream/zfstream.h @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 8a15ff55d9af
children
rev   line source
cannam@89 1
cannam@89 2 #ifndef zfstream_h
cannam@89 3 #define zfstream_h
cannam@89 4
cannam@89 5 #include <fstream.h>
cannam@89 6 #include "zlib.h"
cannam@89 7
cannam@89 8 class gzfilebuf : public streambuf {
cannam@89 9
cannam@89 10 public:
cannam@89 11
cannam@89 12 gzfilebuf( );
cannam@89 13 virtual ~gzfilebuf();
cannam@89 14
cannam@89 15 gzfilebuf *open( const char *name, int io_mode );
cannam@89 16 gzfilebuf *attach( int file_descriptor, int io_mode );
cannam@89 17 gzfilebuf *close();
cannam@89 18
cannam@89 19 int setcompressionlevel( int comp_level );
cannam@89 20 int setcompressionstrategy( int comp_strategy );
cannam@89 21
cannam@89 22 inline int is_open() const { return (file !=NULL); }
cannam@89 23
cannam@89 24 virtual streampos seekoff( streamoff, ios::seek_dir, int );
cannam@89 25
cannam@89 26 virtual int sync();
cannam@89 27
cannam@89 28 protected:
cannam@89 29
cannam@89 30 virtual int underflow();
cannam@89 31 virtual int overflow( int = EOF );
cannam@89 32
cannam@89 33 private:
cannam@89 34
cannam@89 35 gzFile file;
cannam@89 36 short mode;
cannam@89 37 short own_file_descriptor;
cannam@89 38
cannam@89 39 int flushbuf();
cannam@89 40 int fillbuf();
cannam@89 41
cannam@89 42 };
cannam@89 43
cannam@89 44 class gzfilestream_common : virtual public ios {
cannam@89 45
cannam@89 46 friend class gzifstream;
cannam@89 47 friend class gzofstream;
cannam@89 48 friend gzofstream &setcompressionlevel( gzofstream &, int );
cannam@89 49 friend gzofstream &setcompressionstrategy( gzofstream &, int );
cannam@89 50
cannam@89 51 public:
cannam@89 52 virtual ~gzfilestream_common();
cannam@89 53
cannam@89 54 void attach( int fd, int io_mode );
cannam@89 55 void open( const char *name, int io_mode );
cannam@89 56 void close();
cannam@89 57
cannam@89 58 protected:
cannam@89 59 gzfilestream_common();
cannam@89 60
cannam@89 61 private:
cannam@89 62 gzfilebuf *rdbuf();
cannam@89 63
cannam@89 64 gzfilebuf buffer;
cannam@89 65
cannam@89 66 };
cannam@89 67
cannam@89 68 class gzifstream : public gzfilestream_common, public istream {
cannam@89 69
cannam@89 70 public:
cannam@89 71
cannam@89 72 gzifstream();
cannam@89 73 gzifstream( const char *name, int io_mode = ios::in );
cannam@89 74 gzifstream( int fd, int io_mode = ios::in );
cannam@89 75
cannam@89 76 virtual ~gzifstream();
cannam@89 77
cannam@89 78 };
cannam@89 79
cannam@89 80 class gzofstream : public gzfilestream_common, public ostream {
cannam@89 81
cannam@89 82 public:
cannam@89 83
cannam@89 84 gzofstream();
cannam@89 85 gzofstream( const char *name, int io_mode = ios::out );
cannam@89 86 gzofstream( int fd, int io_mode = ios::out );
cannam@89 87
cannam@89 88 virtual ~gzofstream();
cannam@89 89
cannam@89 90 };
cannam@89 91
cannam@89 92 template<class T> class gzomanip {
cannam@89 93 friend gzofstream &operator<<(gzofstream &, const gzomanip<T> &);
cannam@89 94 public:
cannam@89 95 gzomanip(gzofstream &(*f)(gzofstream &, T), T v) : func(f), val(v) { }
cannam@89 96 private:
cannam@89 97 gzofstream &(*func)(gzofstream &, T);
cannam@89 98 T val;
cannam@89 99 };
cannam@89 100
cannam@89 101 template<class T> gzofstream &operator<<(gzofstream &s, const gzomanip<T> &m)
cannam@89 102 {
cannam@89 103 return (*m.func)(s, m.val);
cannam@89 104 }
cannam@89 105
cannam@89 106 inline gzofstream &setcompressionlevel( gzofstream &s, int l )
cannam@89 107 {
cannam@89 108 (s.rdbuf())->setcompressionlevel(l);
cannam@89 109 return s;
cannam@89 110 }
cannam@89 111
cannam@89 112 inline gzofstream &setcompressionstrategy( gzofstream &s, int l )
cannam@89 113 {
cannam@89 114 (s.rdbuf())->setcompressionstrategy(l);
cannam@89 115 return s;
cannam@89 116 }
cannam@89 117
cannam@89 118 inline gzomanip<int> setcompressionlevel(int l)
cannam@89 119 {
cannam@89 120 return gzomanip<int>(&setcompressionlevel,l);
cannam@89 121 }
cannam@89 122
cannam@89 123 inline gzomanip<int> setcompressionstrategy(int l)
cannam@89 124 {
cannam@89 125 return gzomanip<int>(&setcompressionstrategy,l);
cannam@89 126 }
cannam@89 127
cannam@89 128 #endif