CppUtils/Utils/zlib/zlib_cpp/include/zdecompressor.hpp

151 lines
2.8 KiB
C++
Raw Normal View History

2025-06-05 10:06:43 +08:00
#ifndef ZDECOMPRESSOR_HPP
#define ZDECOMPRESSOR_HPP
#include "zstream.hpp"
#include "zcompressor.hpp"
namespace zlib_cpp {
/**
* @brief
*/
class ZDecompressor : public ZStream {
private:
int _windowBits = 15; // 默认windowBits
bool _expectGzip = false;
public:
/**
* @brief
*/
ZDecompressor();
/**
* @brief
*
* @param windowBits 使zlib头/
*/
ZDecompressor(int windowBits);
/**
* @brief
*/
virtual ~ZDecompressor();
/**
* @brief 使
*
* @param data
* @return
*/
std::vector<uint8_t> decompress(const std::vector<uint8_t>& data);
/**
* @brief
*
* @param flush
* @return
*/
StatusCode inflate(FlushMode flush = FlushMode::NO_FLUSH);
/**
* @brief
*
* @param dictionary
* @return
*/
StatusCode setDictionary(const std::vector<uint8_t>& dictionary);
/**
* @brief
*
* @return
*/
std::vector<uint8_t> getDictionary();
/**
* @brief
*
* @return
*/
virtual StatusCode reset() override;
/**
* @brief
*
* @return
*/
StatusCode sync();
/**
* @brief
*
* @return
*/
bool syncPoint();
/**
* @brief GZip头信息
*
* @return GZip头信息
*/
GZipHeader getHeader();
/**
* @brief
*
* @param bits
* @param value
* @return
*/
StatusCode prime(int bits, int value);
/**
* @brief
*
* @return
*/
long getMark();
/**
* @brief GZip格式
*
* @param expectGzip GZip格式
*/
void setExpectGZip(bool expectGzip = true);
/**
* @brief
*
* @param check
* @return
*/
StatusCode validate(bool check);
/**
* @brief 使
*
* @return 使
*/
size_t getCodesUsed();
protected:
/**
* @brief
*
* @return
*/
virtual StatusCode init() override;
/**
* @brief
*
* @return
*/
virtual StatusCode end() override;
};
} // namespace zlib_cpp
#endif // ZDECOMPRESSOR_HPP