"Fossies" - the Fresh Open Source Software Archive

Member "cvs-1.11.23/zlib/contrib/iostream/zfstream.h" (4 Apr 2005, 2497 Bytes) of package /linux/misc/old/cvs-1.11.23.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "zfstream.h" see the Fossies "Dox" file reference documentation.

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