annotate src/win32/7zip/7z/CPP/7zip/Compress/ImplodeHuffmanDecoder.h @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // ImplodeHuffmanDecoder.h
rlm@1 2
rlm@1 3 #ifndef __IMPLODE_HUFFMAN_DECODER_H
rlm@1 4 #define __IMPLODE_HUFFMAN_DECODER_H
rlm@1 5
rlm@1 6 #include "../Common/InBuffer.h"
rlm@1 7
rlm@1 8 #include "BitlDecoder.h"
rlm@1 9
rlm@1 10 namespace NCompress {
rlm@1 11 namespace NImplode {
rlm@1 12 namespace NHuffman {
rlm@1 13
rlm@1 14 const int kNumBitsInLongestCode = 16;
rlm@1 15
rlm@1 16 typedef NBitl::CDecoder<CInBuffer> CInBit;
rlm@1 17
rlm@1 18 class CDecoder
rlm@1 19 {
rlm@1 20 UInt32 m_Limitits[kNumBitsInLongestCode + 2]; // m_Limitits[i] = value limit for symbols with length = i
rlm@1 21 UInt32 m_Positions[kNumBitsInLongestCode + 2]; // m_Positions[i] = index in m_Symbols[] of first symbol with length = i
rlm@1 22 UInt32 m_NumSymbols; // number of symbols in m_Symbols
rlm@1 23 UInt32 *m_Symbols; // symbols: at first with len=1 then 2, ... 15.
rlm@1 24 public:
rlm@1 25 CDecoder(UInt32 numSymbols);
rlm@1 26 ~CDecoder();
rlm@1 27
rlm@1 28 bool SetCodeLengths(const Byte *codeLengths);
rlm@1 29 UInt32 DecodeSymbol(CInBit *inStream);
rlm@1 30 };
rlm@1 31
rlm@1 32 }}}
rlm@1 33
rlm@1 34 #endif