// 7z/Handler.h | |
#ifndef __7Z_HANDLER_H | |
#define __7Z_HANDLER_H | |
#include "../../ICoder.h" | |
#include "../IArchive.h" | |
#include "../../Common/CreateCoder.h" | |
#ifndef EXTRACT_ONLY | |
#include "../Common/HandlerOut.h" | |
#endif | |
#include "7zCompressionMode.h" | |
#include "7zIn.h" | |
namespace NArchive { | |
namespace N7z { | |
#ifndef __7Z_SET_PROPERTIES | |
#ifdef EXTRACT_ONLY | |
#if !defined(_7ZIP_ST) && !defined(_SFX) | |
#define __7Z_SET_PROPERTIES | |
#endif | |
#else | |
#define __7Z_SET_PROPERTIES | |
#endif | |
#endif | |
class CHandler: | |
#ifndef EXTRACT_ONLY | |
public NArchive::COutHandler, | |
#endif | |
public IInArchive, | |
#ifdef __7Z_SET_PROPERTIES | |
public ISetProperties, | |
#endif | |
#ifndef EXTRACT_ONLY | |
public IOutArchive, | |
#endif | |
PUBLIC_ISetCompressCodecsInfo | |
public CMyUnknownImp | |
{ | |
public: | |
MY_QUERYINTERFACE_BEGIN2(IInArchive) | |
#ifdef __7Z_SET_PROPERTIES | |
MY_QUERYINTERFACE_ENTRY(ISetProperties) | |
#endif | |
#ifndef EXTRACT_ONLY | |
MY_QUERYINTERFACE_ENTRY(IOutArchive) | |
#endif | |
QUERY_ENTRY_ISetCompressCodecsInfo | |
MY_QUERYINTERFACE_END | |
MY_ADDREF_RELEASE | |
INTERFACE_IInArchive(;) | |
#ifdef __7Z_SET_PROPERTIES | |
STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProperties); | |
#endif | |
#ifndef EXTRACT_ONLY | |
INTERFACE_IOutArchive(;) | |
#endif | |
DECL_ISetCompressCodecsInfo | |
CHandler(); | |
private: | |
CMyComPtr<IInStream> _inStream; | |
NArchive::N7z::CArchiveDatabaseEx _db; | |
#ifndef _NO_CRYPTO | |
bool _passwordIsDefined; | |
#endif | |
#ifdef EXTRACT_ONLY | |
#ifdef __7Z_SET_PROPERTIES | |
UInt32 _numThreads; | |
#endif | |
UInt32 _crcSize; | |
#else | |
CRecordVector<CBind> _binds; | |
HRESULT SetCompressionMethod(CCompressionMethodMode &method, | |
CObjectVector<COneMethodInfo> &methodsInfo | |
#ifndef _7ZIP_ST | |
, UInt32 numThreads | |
#endif | |
); | |
HRESULT SetCompressionMethod( | |
CCompressionMethodMode &method, | |
CCompressionMethodMode &headerMethod); | |
#endif | |
bool IsEncrypted(UInt32 index2) const; | |
#ifndef _SFX | |
CRecordVector<UInt64> _fileInfoPopIDs; | |
void FillPopIDs(); | |
#endif | |
DECL_EXTERNAL_CODECS_VARS | |
}; | |
}} | |
#endif |