Zipios++
deflateoutputstreambuf.h
Go to the documentation of this file.
1 #ifndef DEFLATEOUTPUTSTREAMBUF_H
2 #define DEFLATEOUTPUTSTREAMBUF_H
3 
4 #include "zipios++/zipios-config.h"
5 
6 #include "zipios++/meta-iostreams.h"
7 #include <vector>
8 
9 #include <zlib.h>
10 
12 #include "zipios++/ziphead.h"
13 #include "zipios++/zipios_defs.h"
14 
15 namespace zipios {
16 
17 using std::vector ;
18 
26 public:
27 
34  explicit DeflateOutputStreambuf( streambuf *outbuf, bool user_init = false,
35  bool del_outbuf = false ) ;
36 
38  virtual ~DeflateOutputStreambuf() ;
39 
40  bool init( int comp_level = 6 ) ;
41  bool closeStream() ;
42 
49  uint32 getCrc32() const { return _crc32 ; }
50 
55  uint32 getCount() const { return _overflown_bytes ; }
56 
57 protected:
58  virtual int overflow( int c = EOF ) ;
59  virtual int sync() ;
60 
62  bool flushOutvec() ;
63 
66  void endDeflation() ;
67 
68 private:
69  z_stream _zs ;
70  bool _zs_initialized ;
71 protected: // FIXME: reconsider design?
72  const int _invecsize ;
73  vector< char > _invec ;
74  const int _outvecsize ;
75  vector< char > _outvec ;
76 
77  uint32 _crc32 ;
78  uint32 _overflown_bytes ;
79 };
80 
81 
82 } // namespace
83 
84 
85 
86 #endif
87 
92 /*
93  Zipios++ - a small C++ library that provides easy access to .zip files.
94  Copyright (C) 2000 Thomas Søndergaard
95 
96  This library is free software; you can redistribute it and/or
97  modify it under the terms of the GNU Lesser General Public
98  License as published by the Free Software Foundation; either
99  version 2 of the License, or (at your option) any later version.
100 
101  This library is distributed in the hope that it will be useful,
102  but WITHOUT ANY WARRANTY; without even the implied warranty of
103  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
104  Lesser General Public License for more details.
105 
106  You should have received a copy of the GNU Lesser General Public
107  License along with this library; if not, write to the Free Software
108  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
109 */
DeflateOutputStreambuf(streambuf *outbuf, bool user_init=false, bool del_outbuf=false)
DeflateOutputStreambuf constructor.
bool flushOutvec()
Flushes _outvec and updates _zs.next_out and _zs.avail_out.
Header file that defines some simple data types.
Header file containing classes and functions for reading the central directory and local header field...
DeflateOutputStreambuf is an output stream filter, that deflates the data that is written to it befor...
uint32 getCount() const
Returns the number of bytes written to the streambuf, that has been processed from the input buffer b...
Header file that defines FilterOutputStreambuf.
uint32 getCrc32() const
Returns the CRC32 for the current stream.
virtual ~DeflateOutputStreambuf()
Destructor.
A FilterOutputStreambuf is a streambuf that filters the data that is written to it before it passes i...
void endDeflation()
Flushes the remaining data in the zlib buffers, after which the only possible operations are deflateE...