rar20decoder.h

来自「由7-zip提供的压缩、解压缩程序」· C头文件 代码 · 共 86 行

H
86
字号
// Rar20Decoder.h// According to unRAR license,// this code may not be used to develop a // RAR (WinRAR) compatible archiver#ifndef __RAR20_DECODER_H#define __RAR20_DECODER_H#include "../../../Common/MyCom.h"#include "../../ICoder.h"#include "../../Common/MSBFDecoder.h"#include "../../Common/InBuffer.h"#include "../LZ/LZOutWindow.h"#include "../Huffman/HuffmanDecoder.h"#include "Rar20Multimedia.h"#include "Rar20Const.h"namespace NCompress {namespace NRar20 {typedef NStream::NMSBF::CDecoder<CInBuffer> CBitDecoder;const int kNumHuffmanBits = 15;class CDecoder :  public ICompressCoder,  public ICompressSetDecoderProperties2,  public CMyUnknownImp{  CLZOutWindow m_OutWindowStream;  CBitDecoder m_InBitStream;  NHuffman::CDecoder<kNumHuffmanBits, kMainTableSize> m_MainDecoder;  NHuffman::CDecoder<kNumHuffmanBits, kDistTableSize> m_DistDecoder;  NHuffman::CDecoder<kNumHuffmanBits, kLenTableSize> m_LenDecoder;  NHuffman::CDecoder<kNumHuffmanBits, kMMTableSize> m_MMDecoders[NMultimedia::kNumChanelsMax];  NHuffman::CDecoder<kNumHuffmanBits, kLevelTableSize> m_LevelDecoder;  bool m_AudioMode;  NMultimedia::CPredictor m_Predictor;  int m_NumChannels;  UInt32 m_RepDists[kNumRepDists];  UInt32 m_RepDistPtr;  UInt32 m_LastLength;    Byte m_LastLevels[kMaxTableSize];  UInt64 m_PackSize;  bool m_IsSolid;  void InitStructures();  bool ReadTables();  bool ReadLastTables();public:  CDecoder();  MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2)  void ReleaseStreams()  {    m_OutWindowStream.ReleaseStream();    m_InBitStream.ReleaseStream();  }  STDMETHOD(CodeReal)(ISequentialInStream *inStream,      ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize,      ICompressProgressInfo *progress);  STDMETHOD(Code)(ISequentialInStream *inStream,      ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize,      ICompressProgressInfo *progress);  STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);};}}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?