Botan  1.11.15
src/lib/compression/zlib/zlib.h
Go to the documentation of this file.
00001 /*
00002 * Zlib Compressor
00003 * (C) 2001 Peter J Jones
00004 *     2001-2007,2014 Jack Lloyd
00005 *
00006 * Botan is released under the Simplified BSD License (see license.txt)
00007 */
00008 
00009 #ifndef BOTAN_ZLIB_H__
00010 #define BOTAN_ZLIB_H__
00011 
00012 #include <botan/compression.h>
00013 
00014 namespace Botan {
00015 
00016 /**
00017 * Zlib Compression
00018 */
00019 class BOTAN_DLL Zlib_Compression : public Stream_Compression
00020    {
00021    public:
00022       /**
00023       * @param level how much effort to use on compressing (0 to 9);
00024       *        higher levels are slower but tend to give better
00025       *        compression
00026       */
00027 
00028       Zlib_Compression(size_t level = 6) : m_level(level) {}
00029 
00030       std::string name() const override { return "Zlib_Compression"; }
00031 
00032    private:
00033       Compression_Stream* make_stream() const;
00034 
00035       const size_t m_level;
00036    };
00037 
00038 /**
00039 * Zlib Decompression
00040 */
00041 class BOTAN_DLL Zlib_Decompression : public Stream_Decompression
00042    {
00043    public:
00044       std::string name() const override { return "Zlib_Decompression"; }
00045 
00046    private:
00047       Compression_Stream* make_stream() const;
00048    };
00049 
00050 /**
00051 * Deflate Compression
00052 */
00053 class BOTAN_DLL Deflate_Compression : public Stream_Compression
00054    {
00055    public:
00056       /**
00057       * @param level how much effort to use on compressing (0 to 9);
00058       *        higher levels are slower but tend to give better
00059       *        compression
00060       */
00061       Deflate_Compression(size_t level = 6) : m_level(level) {}
00062 
00063       std::string name() const override { return "Deflate_Compression"; }
00064 
00065    private:
00066       Compression_Stream* make_stream() const;
00067 
00068       const size_t m_level;
00069    };
00070 
00071 /**
00072 * Deflate Decompression
00073 */
00074 class BOTAN_DLL Deflate_Decompression : public Stream_Decompression
00075    {
00076    public:
00077       std::string name() const override { return "Deflate_Decompression"; }
00078 
00079    private:
00080       Compression_Stream* make_stream() const;
00081    };
00082 
00083 /**
00084 * Gzip Compression
00085 */
00086 class BOTAN_DLL Gzip_Compression : public Stream_Compression
00087    {
00088    public:
00089       /**
00090       * @param level how much effort to use on compressing (0 to 9);
00091       *        higher levels are slower but tend to give better
00092       *        compression
00093       */
00094       Gzip_Compression(size_t level = 6, byte os_code = 255) :
00095          m_level(level), m_os_code(os_code) {}
00096 
00097       std::string name() const override { return "Gzip_Compression"; }
00098 
00099    private:
00100       Compression_Stream* make_stream() const;
00101 
00102       const size_t m_level;
00103       const byte m_os_code;
00104    };
00105 
00106 /**
00107 * Gzip Decompression
00108 */
00109 class BOTAN_DLL Gzip_Decompression : public Stream_Compression
00110    {
00111    public:
00112       std::string name() const override { return "Gzip_Decompression"; }
00113 
00114    private:
00115       Compression_Stream* make_stream() const;
00116    };
00117 
00118 }
00119 
00120 #endif