diff options
Diffstat (limited to '7zip/Compress/BZip2/BZip2Decoder.h')
-rwxr-xr-x | 7zip/Compress/BZip2/BZip2Decoder.h | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/7zip/Compress/BZip2/BZip2Decoder.h b/7zip/Compress/BZip2/BZip2Decoder.h deleted file mode 100755 index c59819b4..00000000 --- a/7zip/Compress/BZip2/BZip2Decoder.h +++ /dev/null @@ -1,162 +0,0 @@ -// Compress/BZip2/Decoder.h - -#ifndef __COMPRESS_BZIP2_DECODER_H -#define __COMPRESS_BZIP2_DECODER_H - -#include "../../ICoder.h" -#include "../../../Common/MyCom.h" -#include "../../Common/MSBFDecoder.h" -#include "../../Common/InBuffer.h" -#include "../../Common/OutBuffer.h" -#include "../Huffman/HuffmanDecoder.h" -#include "BZip2Const.h" -#include "BZip2CRC.h" - -#ifdef COMPRESS_BZIP2_MT -#include "../../../Windows/Thread.h" -#include "../../../Windows/Synchronization.h" -#endif - -namespace NCompress { -namespace NBZip2 { - -typedef NCompress::NHuffman::CDecoder<kMaxHuffmanLen, kMaxAlphaSize> CHuffmanDecoder; - -class CDecoder; - -struct CState -{ - UInt32 *tt; - bool BlockRandomised; - UInt32 OrigPtr; - UInt32 BlockSize; - UInt32 CharCounters[256]; - Byte m_Selectors[kNumSelectorsMax]; - - #ifdef COMPRESS_BZIP2_MT - - CDecoder *Decoder; - NWindows::CThread Thread; - bool m_OptimizeNumTables; - - NWindows::NSynchronization::CAutoResetEvent StreamWasFinishedEvent; - NWindows::NSynchronization::CAutoResetEvent WaitingWasStartedEvent; - - // it's not member of this thread. We just need one event per thread - NWindows::NSynchronization::CAutoResetEvent CanWriteEvent; - - Byte MtPad[1 << 8]; // It's pad for Multi-Threading. Must be >= Cache_Line_Size. - - void FinishStream(bool needLeave); - DWORD ThreadFunc(); - - #endif - - CState(): tt(0) {} - ~CState() { Free(); } - bool Alloc(); - void Free(); - void DecodeBlock1(); - UInt32 DecodeBlock2(COutBuffer &m_OutStream); -}; - -class CDecoder : - public ICompressCoder, - #ifdef COMPRESS_BZIP2_MT - public ICompressSetCoderMt, - #endif - public ICompressGetInStreamProcessedSize, - public CMyUnknownImp -{ -public: - COutBuffer m_OutStream; - Byte MtPad[1 << 8]; // It's pad for Multi-Threading. Must be >= Cache_Line_Size. - NStream::NMSBF::CDecoder<CInBuffer> m_InStream; -private: - CHuffmanDecoder m_HuffmanDecoders[kNumTablesMax]; - - UInt32 m_NumThreadsPrev; - - UInt32 ReadBits(int numBits); - Byte ReadByte(); - bool ReadBit(); - UInt32 ReadCRC(); - HRESULT PrepareBlock(CState &state); - HRESULT DecodeFile(bool &isBZ, ICompressProgressInfo *progress); - HRESULT CodeReal(ISequentialInStream *inStream, - ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize, - ICompressProgressInfo *progress); - class CDecoderFlusher - { - CDecoder *_decoder; - public: - bool NeedFlush; - CDecoderFlusher(CDecoder *decoder): _decoder(decoder), NeedFlush(true) {} - ~CDecoderFlusher() - { - if (NeedFlush) - _decoder->Flush(); - _decoder->ReleaseStreams(); - } - }; - -public: - CBZip2CombinedCRC CombinedCRC; - - #ifdef COMPRESS_BZIP2_MT - ICompressProgressInfo *Progress; - CState *m_States; - - NWindows::NSynchronization::CCriticalSection CS; - UInt32 NumThreads; - bool MtMode; - UInt32 NextBlockIndex; - bool CloseThreads; - bool StreamWasFinished; - NWindows::NSynchronization::CManualResetEvent CanStartWaitingEvent; - - HRESULT Result; - - UInt32 BlockSizeMax; - CDecoder(); - ~CDecoder(); - bool Create(); - void Free(); - - #else - CState m_States[1]; - #endif - - HRESULT ReadBlock(UInt32 blockSizeMax, CState &state); - - HRESULT ReadSignatures(bool &wasFinished, UInt32 &crc); - - - HRESULT Flush() { return m_OutStream.Flush(); } - void ReleaseStreams() - { - m_InStream.ReleaseStream(); - m_OutStream.ReleaseStream(); - } - - #ifdef COMPRESS_BZIP2_MT - MY_UNKNOWN_IMP2(ICompressSetCoderMt, ICompressGetInStreamProcessedSize) - #else - MY_UNKNOWN_IMP1(ICompressGetInStreamProcessedSize) - #endif - - - STDMETHOD(Code)(ISequentialInStream *inStream, - ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize, - ICompressProgressInfo *progress); - - STDMETHOD(GetInStreamProcessedSize)(UInt64 *value); - - #ifdef COMPRESS_BZIP2_MT - STDMETHOD(SetNumberOfThreads)(UInt32 numThreads); - #endif -}; - -}} - -#endif |