rlm@1
|
1 // 7z/Handler.h
|
rlm@1
|
2
|
rlm@1
|
3 #ifndef __7Z_HANDLER_H
|
rlm@1
|
4 #define __7Z_HANDLER_H
|
rlm@1
|
5
|
rlm@1
|
6 #include "../../ICoder.h"
|
rlm@1
|
7 #include "../IArchive.h"
|
rlm@1
|
8 #include "7zIn.h"
|
rlm@1
|
9
|
rlm@1
|
10 #include "7zCompressionMode.h"
|
rlm@1
|
11
|
rlm@1
|
12 #include "../../Common/CreateCoder.h"
|
rlm@1
|
13
|
rlm@1
|
14 #ifndef EXTRACT_ONLY
|
rlm@1
|
15 #include "../Common/HandlerOut.h"
|
rlm@1
|
16 #endif
|
rlm@1
|
17
|
rlm@1
|
18 namespace NArchive {
|
rlm@1
|
19 namespace N7z {
|
rlm@1
|
20
|
rlm@1
|
21 #ifndef __7Z_SET_PROPERTIES
|
rlm@1
|
22
|
rlm@1
|
23 #ifdef EXTRACT_ONLY
|
rlm@1
|
24 #ifdef COMPRESS_MT
|
rlm@1
|
25 #define __7Z_SET_PROPERTIES
|
rlm@1
|
26 #endif
|
rlm@1
|
27 #else
|
rlm@1
|
28 #define __7Z_SET_PROPERTIES
|
rlm@1
|
29 #endif
|
rlm@1
|
30
|
rlm@1
|
31 #endif
|
rlm@1
|
32
|
rlm@1
|
33
|
rlm@1
|
34 class CHandler:
|
rlm@1
|
35 #ifndef EXTRACT_ONLY
|
rlm@1
|
36 public NArchive::COutHandler,
|
rlm@1
|
37 #endif
|
rlm@1
|
38 public IInArchive,
|
rlm@1
|
39 #ifdef __7Z_SET_PROPERTIES
|
rlm@1
|
40 public ISetProperties,
|
rlm@1
|
41 #endif
|
rlm@1
|
42 #ifndef EXTRACT_ONLY
|
rlm@1
|
43 public IOutArchive,
|
rlm@1
|
44 #endif
|
rlm@1
|
45 PUBLIC_ISetCompressCodecsInfo
|
rlm@1
|
46 public CMyUnknownImp
|
rlm@1
|
47 {
|
rlm@1
|
48 public:
|
rlm@1
|
49 MY_QUERYINTERFACE_BEGIN2(IInArchive)
|
rlm@1
|
50 #ifdef __7Z_SET_PROPERTIES
|
rlm@1
|
51 MY_QUERYINTERFACE_ENTRY(ISetProperties)
|
rlm@1
|
52 #endif
|
rlm@1
|
53 #ifndef EXTRACT_ONLY
|
rlm@1
|
54 MY_QUERYINTERFACE_ENTRY(IOutArchive)
|
rlm@1
|
55 #endif
|
rlm@1
|
56 QUERY_ENTRY_ISetCompressCodecsInfo
|
rlm@1
|
57 MY_QUERYINTERFACE_END
|
rlm@1
|
58 MY_ADDREF_RELEASE
|
rlm@1
|
59
|
rlm@1
|
60 INTERFACE_IInArchive(;)
|
rlm@1
|
61
|
rlm@1
|
62 #ifdef __7Z_SET_PROPERTIES
|
rlm@1
|
63 STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProperties);
|
rlm@1
|
64 #endif
|
rlm@1
|
65
|
rlm@1
|
66 #ifndef EXTRACT_ONLY
|
rlm@1
|
67 INTERFACE_IOutArchive(;)
|
rlm@1
|
68 #endif
|
rlm@1
|
69
|
rlm@1
|
70 DECL_ISetCompressCodecsInfo
|
rlm@1
|
71
|
rlm@1
|
72 CHandler();
|
rlm@1
|
73
|
rlm@1
|
74 private:
|
rlm@1
|
75 CMyComPtr<IInStream> _inStream;
|
rlm@1
|
76 NArchive::N7z::CArchiveDatabaseEx _db;
|
rlm@1
|
77 #ifndef _NO_CRYPTO
|
rlm@1
|
78 bool _passwordIsDefined;
|
rlm@1
|
79 #endif
|
rlm@1
|
80
|
rlm@1
|
81 #ifdef EXTRACT_ONLY
|
rlm@1
|
82
|
rlm@1
|
83 #ifdef COMPRESS_MT
|
rlm@1
|
84 UInt32 _numThreads;
|
rlm@1
|
85 #endif
|
rlm@1
|
86
|
rlm@1
|
87 UInt32 _crcSize;
|
rlm@1
|
88
|
rlm@1
|
89 #else
|
rlm@1
|
90
|
rlm@1
|
91 CRecordVector<CBind> _binds;
|
rlm@1
|
92
|
rlm@1
|
93 HRESULT SetPassword(CCompressionMethodMode &methodMode, IArchiveUpdateCallback *updateCallback);
|
rlm@1
|
94
|
rlm@1
|
95 HRESULT SetCompressionMethod(CCompressionMethodMode &method,
|
rlm@1
|
96 CObjectVector<COneMethodInfo> &methodsInfo
|
rlm@1
|
97 #ifdef COMPRESS_MT
|
rlm@1
|
98 , UInt32 numThreads
|
rlm@1
|
99 #endif
|
rlm@1
|
100 );
|
rlm@1
|
101
|
rlm@1
|
102 HRESULT SetCompressionMethod(
|
rlm@1
|
103 CCompressionMethodMode &method,
|
rlm@1
|
104 CCompressionMethodMode &headerMethod);
|
rlm@1
|
105
|
rlm@1
|
106 #endif
|
rlm@1
|
107
|
rlm@1
|
108 bool IsEncrypted(UInt32 index2) const;
|
rlm@1
|
109 #ifndef _SFX
|
rlm@1
|
110
|
rlm@1
|
111 CRecordVector<UInt64> _fileInfoPopIDs;
|
rlm@1
|
112 void FillPopIDs();
|
rlm@1
|
113
|
rlm@1
|
114 #endif
|
rlm@1
|
115
|
rlm@1
|
116 DECL_EXTERNAL_CODECS_VARS
|
rlm@1
|
117 };
|
rlm@1
|
118
|
rlm@1
|
119 }}
|
rlm@1
|
120
|
rlm@1
|
121 #endif
|