zipios++  2.0.2
Zipios++ – a small C++ library that provides easy access to .zip files.
zipoutputstreambuf.hpp
Go to the documentation of this file.
1 #pragma once
2 #ifndef ZIPOUTPUTSTREAMBUF_HPP
3 #define ZIPOUTPUTSTREAMBUF_HPP
4 
5 /*
6  Zipios++ - a small C++ library that provides easy access to .zip files.
7 
8  Copyright (C) 2000-2007 Thomas Sondergaard
9  Copyright (C) 2015 Made to Order Software Corporation
10 
11  This library is free software; you can redistribute it and/or
12  modify it under the terms of the GNU Lesser General Public
13  License as published by the Free Software Foundation; either
14  version 2 of the License, or (at your option) any later version.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  Lesser General Public License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with this library; if not, write to the Free Software
23  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */
25 
33 
34 #include "zipios++/fileentry.hpp"
35 
36 
37 namespace zipios
38 {
39 
40 
42 {
43 public:
44  ZipOutputStreambuf(std::streambuf *outbuf);
45  ZipOutputStreambuf(ZipOutputStreambuf const & src) = delete;
46  ZipOutputStreambuf & operator = (ZipOutputStreambuf const & rhs) = delete;
47  virtual ~ZipOutputStreambuf();
48 
49  void closeEntry();
50  void close();
51  void finish();
53  void setComment(std::string const& comment);
54 
55 protected:
56  virtual int overflow(int c = EOF) override;
57  virtual int sync() override;
58 
59 private:
60  void setEntryClosedState();
61  void updateEntryHeaderInfo();
62 
63  std::string m_zip_comment;
66  bool m_open_entry = false;
67  bool m_open = true;
68 };
69 
70 
71 } // zipios namespace
72 
73 // Local Variables:
74 // mode: cpp
75 // indent-tabs-mode: nil
76 // c-basic-offset: 4
77 // tab-width: 4
78 // End:
79 
80 // vim: ts=4 sw=4 et
81 #endif
FileEntry::CompressionLevel m_compression_level
virtual ~ZipOutputStreambuf()
Clean up the buffer.
void setEntryClosedState()
Mark the current entry as closed.
void finish()
Finish up an output stream buffer.
ZipOutputStreambuf(std::streambuf *outbuf)
Initialize a ZipOutputStreambuf object.
void close()
Close the output stream buffer.
int CompressionLevel
The compression level to be used to save an entry.
Definition: fileentry.hpp:85
virtual int sync() override
Implement the sync() functionality.
void putNextEntry(FileEntry::pointer_t entry)
Start saving an entry in the output buffer.
ZipOutputStreambuf & operator=(ZipOutputStreambuf const &rhs)=delete
Header file that defines zipios::DeflateOutputStreambuf.
virtual int overflow(int c=EOF) override
Implementation of the overflow() function.
void setComment(std::string const &comment)
Set the archive comment.
Handle the output buffer of a zip archive.
Define the zipios::FileEntry class.
void updateEntryHeaderInfo()
Save the header information.
void closeEntry()
Close this buffer entry.
std::shared_ptr< FileEntry > pointer_t
Definition: fileentry.hpp:77
A class to handle stream deflate on the fly.
std::vector< pointer_t > vector_t
Definition: fileentry.hpp:78