6#ifndef CRYPTOPP_ZDEFLATE_H 
    7#define CRYPTOPP_ZDEFLATE_H 
   24    void PutBits(
unsigned long value, 
unsigned int length);
 
   25    void FlushBitBuffer();
 
   26    void ClearBitBuffer();
 
   29    unsigned long FinishCounting();
 
   33    unsigned long m_bitCount;
 
   34    unsigned long m_buffer;
 
   35    unsigned int m_bitsBuffered, m_bytesBuffered;
 
 
   44    typedef unsigned int code_t;
 
   45    typedef unsigned int value_t;
 
   58    void Initialize(
const unsigned int *codeBits, 
unsigned int nCodes);
 
   60    static void GenerateCodeLengths(
unsigned int *codeBits, 
unsigned int maxCodeBits, 
const unsigned int *codeCounts, 
size_t nCodes);
 
 
  125    size_t Put2(
const byte *inString, 
size_t length, 
int messageEnd, 
bool blocking);
 
  129    virtual void WritePrestreamHeader() {}
 
  130    virtual void ProcessUncompressedData(
const byte *
string, 
size_t length)
 
  131        {CRYPTOPP_UNUSED(
string), CRYPTOPP_UNUSED(length);}
 
  132    virtual void WritePoststreamTail() {}
 
  134    enum {STORED = 0, STATIC = 1, DYNAMIC = 2};
 
  135    enum {MIN_MATCH = 3, MAX_MATCH = 258};
 
  137    void InitializeStaticEncoders();
 
  138    void Reset(
bool forceReset = 
false);
 
  139    unsigned int FillWindow(
const byte *str, 
size_t length);
 
  140    unsigned int ComputeHash(
const byte *str) 
const;
 
  141    unsigned int LongestMatch(
unsigned int &bestMatch) 
const;
 
  142    void InsertString(
unsigned int start);
 
  143    void ProcessBuffer();
 
  145    void LiteralByte(
byte b);
 
  146    void MatchFound(
unsigned int distance, 
unsigned int length);
 
  147    void EncodeBlock(
bool eof, 
unsigned int blockType);
 
  148    void EndBlock(
bool eof);
 
  152        unsigned literalCode : 9;
 
  153        unsigned literalExtra : 5;
 
  154        unsigned distanceCode : 5;
 
  155        unsigned distanceExtra : 13;
 
  158    int m_deflateLevel, m_log2WindowSize, m_compressibleDeflateLevel;
 
  159    unsigned int m_detectSkip, m_detectCount;
 
  160    unsigned int DSIZE, DMASK, HSIZE, HMASK, GOOD_MATCH, MAX_LAZYLENGTH, MAX_CHAIN_LENGTH;
 
  161    bool m_headerWritten, m_matchAvailable;
 
  162    unsigned int m_dictionaryEnd, m_stringStart, m_lookahead, m_minLookahead, m_previousMatch, m_previousLength;
 
  163    HuffmanEncoder m_staticLiteralEncoder, m_staticDistanceEncoder, m_dynamicLiteralEncoder, m_dynamicDistanceEncoder;
 
  169    unsigned int m_matchBufferEnd, m_blockStart, m_blockLength;
 
 
DEFLATE compressor (RFC 1951)
 
bool IsolatedFlush(bool hardFlush, bool blocking)
Flushes data buffered by this object, without signal propagation.
 
void SetDeflateLevel(int deflateLevel)
Sets the deflation level.
 
@ DEFAULT_LOG2_WINDOW_SIZE
Default window size (15)
 
@ MAX_LOG2_WINDOW_SIZE
Maximum window size, largest table (15)
 
@ MIN_LOG2_WINDOW_SIZE
Minimum window size, smallest table (9)
 
size_t Put2(const byte *inString, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
 
@ MIN_DEFLATE_LEVEL
Minimum deflation level, fastest speed (0)
 
@ DEFAULT_DEFLATE_LEVEL
Default deflation level, compromise between speed (6)
 
@ MAX_DEFLATE_LEVEL
Minimum deflation level, slowest speed (9)
 
void IsolatedInitialize(const NameValuePairs ¶meters)
Initialize or reinitialize this object, without signal propagation.
 
int GetDeflateLevel() const
Retrieves the deflation level.
 
int GetLog2WindowSize() const
Retrieves the window size.
 
Implementation of BufferedTransformation's attachment interface.
 
Fixed size stack-based SecBlock.
 
void Initialize(const unsigned int *codeBits, unsigned int nCodes)
Initialize or reinitialize this object.
 
HuffmanEncoder()
Construct a HuffmanEncoder.
 
Interface for retrieving values given their names.
 
Secure memory block with allocator and cleanup.
 
Abstract base classes that provide a uniform interface to this library.
 
Implementation of BufferedTransformation's attachment interface.
 
Utility functions for the Crypto++ library.
 
Crypto++ library namespace.