This commit is contained in:
Igor Pavlov
2005-05-30 00:00:00 +00:00
committed by Kornel Lesiński
parent 8c1b5c7b7e
commit 3c510ba80b
926 changed files with 40559 additions and 23519 deletions

View File

@@ -1,7 +1,5 @@
// Archive/Cab/LZXDecoder.h
#pragma once
#ifndef __ARCHIVE_CAB_LZXDECODER_H
#define __ARCHIVE_CAB_LZXDECODER_H
@@ -14,14 +12,13 @@
#include "LZXBitDecoder.h"
#include "LZXi86Converter.h"
// #include "../../../Projects/CompressInterface/CompressInterface.h"
#include "LZXConst.h"
namespace NArchive {
namespace NCab {
namespace NLZX {
typedef NCompress::NHuffman::CDecoder<kNumHuffmanBits> CMSBFHuffmanDecoder;
const int kMainTableSize = 256 + kNumPosSlotLenSlotSymbols;
class CDecoder :
public ICompressCoder,
@@ -30,36 +27,36 @@ class CDecoder :
CLZOutWindow m_OutWindowStream;
NBitStream::CDecoder m_InBitStream;
CMSBFHuffmanDecoder m_MainDecoder;
CMSBFHuffmanDecoder m_LenDecoder; // for matches with repeated offsets
CMSBFHuffmanDecoder m_AlignDecoder; // for matches with repeated offsets
CMSBFHuffmanDecoder m_LevelDecoder; // table for decoding other tables;
NCompress::NHuffman::CDecoder<kNumHuffmanBits, kMainTableSize> m_MainDecoder;
NCompress::NHuffman::CDecoder<kNumHuffmanBits, kNumLenSymbols> m_LenDecoder;
NCompress::NHuffman::CDecoder<kNumHuffmanBits, kAlignTableSize> m_AlignDecoder;
NCompress::NHuffman::CDecoder<kNumHuffmanBits, kLevelTableSize> m_LevelDecoder;
UINT32 m_RepDistances[kNumRepDistances];
UInt32 m_RepDistances[kNumRepDistances];
BYTE m_LastByteLevels[256];
BYTE m_LastPosLenLevels[kNumPosSlotLenSlotSymbols];
BYTE m_LastLenLevels[kNumLenSymbols];
Byte m_LastByteLevels[256];
Byte m_LastPosLenLevels[kNumPosSlotLenSlotSymbols];
Byte m_LastLenLevels[kNumLenSymbols];
UINT32 m_DictionarySizePowerOf2;
UINT32 m_NumPosSlots;
UINT32 m_NumPosLenSlots;
UInt32 m_DictionarySizePowerOf2;
UInt32 m_NumPosSlots;
UInt32 m_NumPosLenSlots;
// bool m_i86PreprocessingUsed;
// UINT32 m_i86TranslationSize;
// UInt32 m_i86TranslationSize;
bool m_UncompressedBlock;
bool m_AlignIsUsed;
UINT32 m_UnCompressedBlockSize;
UInt32 m_UnCompressedBlockSize;
Ci86TranslationOutStream *m_i86TranslationOutStreamSpec;
CMyComPtr<ISequentialOutStream> m_i86TranslationOutStream;
BYTE m_ReservedSize;
UINT32 m_NumInDataBlocks;
Byte m_ReservedSize;
UInt32 m_NumInDataBlocks;
void ReadTable(BYTE *lastLevels, BYTE *newLevels, UINT32 numSymbols);
void ReadTable(Byte *lastLevels, Byte *newLevels, UInt32 numSymbols);
void ReadTables();
void ClearPrevLeveles();
@@ -74,11 +71,11 @@ public:
// ICompressCoder interface
STDMETHOD(Code)(ISequentialInStream *inStream,
ISequentialOutStream *outStream,
const UINT64 *inSize, const UINT64 *outSize,
const UInt64 *inSize, const UInt64 *outSize,
ICompressProgressInfo *progress);
void SetParams(BYTE reservedSize, UINT32 numInDataBlocks,
UINT32 dictionarySizePowerOf2)
void SetParams(Byte reservedSize, UInt32 numInDataBlocks,
UInt32 dictionarySizePowerOf2)
{
m_ReservedSize = reservedSize;
m_NumInDataBlocks = numInDataBlocks;