This commit is contained in:
Igor Pavlov
2018-05-02 22:28:04 +01:00
committed by Kornel
parent f19b649c73
commit 18dc2b4161
121 changed files with 3523 additions and 1866 deletions

View File

@@ -20,49 +20,45 @@ namespace NRar1 {
const UInt32 kNumRepDists = 4;
typedef NBitm::CDecoder<CInBuffer> CBitDecoder;
class CDecoder :
public ICompressCoder,
public ICompressSetDecoderProperties2,
public CMyUnknownImp
{
public:
CLzOutWindow m_OutWindowStream;
CBitDecoder m_InBitStream;
NBitm::CDecoder<CInBuffer> m_InBitStream;
UInt32 m_RepDists[kNumRepDists];
UInt32 m_RepDistPtr;
UInt64 m_UnpackSize;
UInt32 LastDist;
UInt32 LastLength;
Int64 m_UnpackSize;
bool m_IsSolid;
bool _errorMode;
UInt32 m_RepDistPtr;
UInt32 m_RepDists[kNumRepDists];
UInt32 ReadBits(int numBits);
bool _isSolid;
bool _solidAllowed;
bool StMode;
int FlagsCnt;
UInt32 FlagBuf, AvrPlc, AvrPlcB, AvrLn1, AvrLn2, AvrLn3;
unsigned Buf60, NumHuf, LCount;
UInt32 Nhfb, Nlzb, MaxDist3;
UInt32 ChSet[256], ChSetA[256], ChSetB[256], ChSetC[256];
UInt32 Place[256], PlaceA[256], PlaceB[256], PlaceC[256];
UInt32 NToPl[256], NToPlB[256], NToPlC[256];
UInt32 ReadBits(unsigned numBits);
HRESULT CopyBlock(UInt32 distance, UInt32 len);
UInt32 DecodeNum(const UInt32 *posTab);
UInt32 DecodeNum(const Byte *numTab);
HRESULT ShortLZ();
HRESULT LongLZ();
HRESULT HuffDecode();
void GetFlagsBuf();
void InitData();
void InitHuff();
void CorrHuff(UInt32 *CharSet, UInt32 *NumToPlace);
void OldUnpWriteBuf();
UInt32 ChSet[256],ChSetA[256],ChSetB[256],ChSetC[256];
UInt32 Place[256],PlaceA[256],PlaceB[256],PlaceC[256];
UInt32 NToPl[256],NToPlB[256],NToPlC[256];
UInt32 FlagBuf,AvrPlc,AvrPlcB,AvrLn1,AvrLn2,AvrLn3;
int Buf60,NumHuf,StMode,LCount,FlagsCnt;
UInt32 Nhfb,Nlzb,MaxDist3;
void InitStructures();
HRESULT CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream,
const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
@@ -71,14 +67,6 @@ public:
MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2)
/*
void ReleaseStreams()
{
m_OutWindowStream.ReleaseStream();
m_InBitStream.ReleaseStream();
}
*/
STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);