1*f6dc9357SAndroid Build Coastguard Worker // Rar1Decoder.h 2*f6dc9357SAndroid Build Coastguard Worker // According to unRAR license, this code may not be used to develop 3*f6dc9357SAndroid Build Coastguard Worker // a program that creates RAR archives 4*f6dc9357SAndroid Build Coastguard Worker 5*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_COMPRESS_RAR1_DECODER_H 6*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_COMPRESS_RAR1_DECODER_H 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyCom.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "../ICoder.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #include "../Common/InBuffer.h" 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker #include "BitmDecoder.h" 15*f6dc9357SAndroid Build Coastguard Worker #include "LzOutWindow.h" 16*f6dc9357SAndroid Build Coastguard Worker 17*f6dc9357SAndroid Build Coastguard Worker namespace NCompress { 18*f6dc9357SAndroid Build Coastguard Worker namespace NRar1 { 19*f6dc9357SAndroid Build Coastguard Worker 20*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumRepDists = 4; 21*f6dc9357SAndroid Build Coastguard Worker 22*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_COM_2( 23*f6dc9357SAndroid Build Coastguard Worker CDecoder 24*f6dc9357SAndroid Build Coastguard Worker , ICompressCoder 25*f6dc9357SAndroid Build Coastguard Worker , ICompressSetDecoderProperties2 26*f6dc9357SAndroid Build Coastguard Worker ) 27*f6dc9357SAndroid Build Coastguard Worker bool _isSolid; 28*f6dc9357SAndroid Build Coastguard Worker bool _solidAllowed; 29*f6dc9357SAndroid Build Coastguard Worker bool StMode; 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker CLzOutWindow m_OutWindowStream; 32*f6dc9357SAndroid Build Coastguard Worker NBitm::CDecoder<CInBuffer> m_InBitStream; 33*f6dc9357SAndroid Build Coastguard Worker 34*f6dc9357SAndroid Build Coastguard Worker UInt64 m_UnpackSize; 35*f6dc9357SAndroid Build Coastguard Worker 36*f6dc9357SAndroid Build Coastguard Worker UInt32 LastDist; 37*f6dc9357SAndroid Build Coastguard Worker UInt32 LastLength; 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker UInt32 m_RepDistPtr; 40*f6dc9357SAndroid Build Coastguard Worker UInt32 m_RepDists[kNumRepDists]; 41*f6dc9357SAndroid Build Coastguard Worker 42*f6dc9357SAndroid Build Coastguard Worker int FlagsCnt; 43*f6dc9357SAndroid Build Coastguard Worker UInt32 FlagBuf, AvrPlc, AvrPlcB, AvrLn1, AvrLn2, AvrLn3; 44*f6dc9357SAndroid Build Coastguard Worker unsigned Buf60, NumHuf, LCount; 45*f6dc9357SAndroid Build Coastguard Worker UInt32 Nhfb, Nlzb, MaxDist3; 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker UInt32 ChSet[256], ChSetA[256], ChSetB[256], ChSetC[256]; 48*f6dc9357SAndroid Build Coastguard Worker UInt32 Place[256], PlaceA[256], PlaceB[256], PlaceC[256]; 49*f6dc9357SAndroid Build Coastguard Worker UInt32 NToPl[256], NToPlB[256], NToPlC[256]; 50*f6dc9357SAndroid Build Coastguard Worker 51*f6dc9357SAndroid Build Coastguard Worker UInt32 ReadBits(unsigned numBits); 52*f6dc9357SAndroid Build Coastguard Worker HRESULT CopyBlock(UInt32 distance, UInt32 len); 53*f6dc9357SAndroid Build Coastguard Worker UInt32 DecodeNum(const Byte *numTab); 54*f6dc9357SAndroid Build Coastguard Worker HRESULT ShortLZ(); 55*f6dc9357SAndroid Build Coastguard Worker HRESULT LongLZ(); 56*f6dc9357SAndroid Build Coastguard Worker HRESULT HuffDecode(); 57*f6dc9357SAndroid Build Coastguard Worker void GetFlagsBuf(); 58*f6dc9357SAndroid Build Coastguard Worker void CorrHuff(UInt32 *CharSet, UInt32 *NumToPlace); 59*f6dc9357SAndroid Build Coastguard Worker void OldUnpWriteBuf(); 60*f6dc9357SAndroid Build Coastguard Worker 61*f6dc9357SAndroid Build Coastguard Worker HRESULT CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream, 62*f6dc9357SAndroid Build Coastguard Worker const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker public: 65*f6dc9357SAndroid Build Coastguard Worker CDecoder(); 66*f6dc9357SAndroid Build Coastguard Worker }; 67*f6dc9357SAndroid Build Coastguard Worker 68*f6dc9357SAndroid Build Coastguard Worker }} 69*f6dc9357SAndroid Build Coastguard Worker 70*f6dc9357SAndroid Build Coastguard Worker #endif 71