zipoutputstreambuf.h
Go to the documentation of this file.
#ifndef ZIPOUTPUTSTREAMBUF_H
#define ZIPOUTPUTSTREAMBUF_H
#include "zipios++/zipios-config.h"
#include <vector>
#include <zlib.h>
#include "zipios++/fcoll.h"
#include "zipios++/deflateoutputstreambuf.h"
#include "zipios++/ziphead.h"
namespace zipios {
class ZipOutputStreambuf : public DeflateOutputStreambuf {
public:
enum CompressionLevels { NO_COMPRESSION = Z_NO_COMPRESSION,
BEST_SPEED = Z_BEST_SPEED,
BEST_COMPRESSION = Z_BEST_COMPRESSION,
DEFAULT_COMPRESSION = Z_DEFAULT_COMPRESSION } ;
explicit ZipOutputStreambuf( streambuf *outbuf, bool del_outbuf = false ) ;
void closeEntry() ;
void close() ;
void finish() ;
void putNextEntry( const ZipCDirEntry &entry ) ;
void setComment( const string &comment ) ;
void setLevel( int level ) ;
void setMethod( StorageMethod method ) ;
virtual ~ZipOutputStreambuf() ;
protected:
virtual int overflow( int c = EOF ) ;
virtual int sync() ;
void setEntryClosedState() ;
void updateEntryHeaderInfo() ;
// Should/could be moved to zipheadio.h ?!
static void writeCentralDirectory( const vector< ZipCDirEntry > &entries,
EndOfCentralDirectory eocd,
ostream &os ) ;
private:
string _zip_comment ;
vector< ZipCDirEntry > _entries ;
bool _open_entry ;
bool _open ;
StorageMethod _method ;
int _level ;
};
} // namespace
#endif
/*
Zipios++ - a small C++ library that provides easy access to .zip files.
Copyright (C) 2000 Thomas Søndergaard
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
zipios::DeflateOutputStreambuf::DeflateOutputStreambuf
DeflateOutputStreambuf(streambuf *outbuf, bool user_init=false, bool del_outbuf=false)
DeflateOutputStreambuf constructor.
Definition deflateoutputstreambuf.cpp:18
zipios::EndOfCentralDirectory
The end of the Central directory structure.
Definition ziphead.h:159
zipios::ZipCDirEntry
Specialization of ZipLocalEntry, that add fields for storing the extra information,...
Definition ziphead.h:102
zipios::ZipOutputStreambuf::ZipOutputStreambuf
ZipOutputStreambuf(streambuf *outbuf, bool del_outbuf=false)
ZipOutputStreambuf constructor.
Definition zipoutputstreambuf.cpp:20
zipios::ZipOutputStreambuf::setMethod
void setMethod(StorageMethod method)
Sets the compression method to be used.
Definition zipoutputstreambuf.cpp:93
zipios::ZipOutputStreambuf::~ZipOutputStreambuf
virtual ~ZipOutputStreambuf()
Destructor.
Definition zipoutputstreambuf.cpp:56
zipios::ZipOutputStreambuf::close
void close()
Calls finish.
Definition zipoutputstreambuf.cpp:41
zipios::ZipOutputStreambuf::closeEntry
void closeEntry()
Closes the current entry, and positions the stream read pointer at the beginning of the next entry (i...
Definition zipoutputstreambuf.cpp:30
zipios::ZipOutputStreambuf::setLevel
void setLevel(int level)
Sets the compression level to be used for subsequent entries.
Definition zipoutputstreambuf.cpp:88
zipios::ZipOutputStreambuf::finish
void finish()
Closes the current entry (if one is open), then writes the Zip Central Directory Structure closing th...
Definition zipoutputstreambuf.cpp:46
zipios::ZipOutputStreambuf::putNextEntry
void putNextEntry(const ZipCDirEntry &entry)
Begins writing the next entry.
Definition zipoutputstreambuf.cpp:61
zipios::ZipOutputStreambuf::setComment
void setComment(const string &comment)
Sets the global comment for the Zip archive.
Definition zipoutputstreambuf.cpp:83
deflateoutputstreambuf.h
Header file that defines DeflateOutputStreambuf.
fcoll.h
Header file that defines FileCollection.
zipios::StorageMethod
StorageMethod
The types used with FileEntry::setMethod and FileEntry::getMethod.
Definition fileentry.h:25
ziphead.h
Header file containing classes and functions for reading the central directory and local header field...