xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/7z/7zHandler.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // 7z/Handler.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_7Z_HANDLER_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_7Z_HANDLER_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h"
7*f6dc9357SAndroid Build Coastguard Worker #include "../IArchive.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/CreateCoder.h"
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_7Z_SET_PROPERTIES
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTRACT_ONLY
14*f6dc9357SAndroid Build Coastguard Worker   #if !defined(Z7_ST) && !defined(Z7_SFX)
15*f6dc9357SAndroid Build Coastguard Worker     #define Z7_7Z_SET_PROPERTIES
16*f6dc9357SAndroid Build Coastguard Worker   #endif
17*f6dc9357SAndroid Build Coastguard Worker #else
18*f6dc9357SAndroid Build Coastguard Worker   #define Z7_7Z_SET_PROPERTIES
19*f6dc9357SAndroid Build Coastguard Worker #endif
20*f6dc9357SAndroid Build Coastguard Worker 
21*f6dc9357SAndroid Build Coastguard Worker #endif
22*f6dc9357SAndroid Build Coastguard Worker 
23*f6dc9357SAndroid Build Coastguard Worker // #ifdef Z7_7Z_SET_PROPERTIES
24*f6dc9357SAndroid Build Coastguard Worker #include "../Common/HandlerOut.h"
25*f6dc9357SAndroid Build Coastguard Worker // #endif
26*f6dc9357SAndroid Build Coastguard Worker 
27*f6dc9357SAndroid Build Coastguard Worker #include "7zCompressionMode.h"
28*f6dc9357SAndroid Build Coastguard Worker #include "7zIn.h"
29*f6dc9357SAndroid Build Coastguard Worker 
30*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
31*f6dc9357SAndroid Build Coastguard Worker namespace N7z {
32*f6dc9357SAndroid Build Coastguard Worker 
33*f6dc9357SAndroid Build Coastguard Worker 
34*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTRACT_ONLY
35*f6dc9357SAndroid Build Coastguard Worker 
36*f6dc9357SAndroid Build Coastguard Worker class COutHandler: public CMultiMethodProps
37*f6dc9357SAndroid Build Coastguard Worker {
38*f6dc9357SAndroid Build Coastguard Worker   HRESULT SetSolidFromString(const UString &s);
39*f6dc9357SAndroid Build Coastguard Worker   HRESULT SetSolidFromPROPVARIANT(const PROPVARIANT &value);
40*f6dc9357SAndroid Build Coastguard Worker public:
41*f6dc9357SAndroid Build Coastguard Worker   UInt64 _numSolidFiles;
42*f6dc9357SAndroid Build Coastguard Worker   UInt64 _numSolidBytes;
43*f6dc9357SAndroid Build Coastguard Worker   bool _numSolidBytesDefined;
44*f6dc9357SAndroid Build Coastguard Worker   bool _solidExtension;
45*f6dc9357SAndroid Build Coastguard Worker   bool _useTypeSorting;
46*f6dc9357SAndroid Build Coastguard Worker 
47*f6dc9357SAndroid Build Coastguard Worker   bool _compressHeaders;
48*f6dc9357SAndroid Build Coastguard Worker   bool _encryptHeadersSpecified;
49*f6dc9357SAndroid Build Coastguard Worker   bool _encryptHeaders;
50*f6dc9357SAndroid Build Coastguard Worker   // bool _useParents; 9.26
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker   CHandlerTimeOptions TimeOptions;
53*f6dc9357SAndroid Build Coastguard Worker 
54*f6dc9357SAndroid Build Coastguard Worker   CBoolPair Write_Attrib;
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker   bool _useMultiThreadMixer;
57*f6dc9357SAndroid Build Coastguard Worker   bool _removeSfxBlock;
58*f6dc9357SAndroid Build Coastguard Worker   // bool _volumeMode;
59*f6dc9357SAndroid Build Coastguard Worker 
60*f6dc9357SAndroid Build Coastguard Worker   UInt32 _decoderCompatibilityVersion;
61*f6dc9357SAndroid Build Coastguard Worker   CUIntVector _enabledFilters;
62*f6dc9357SAndroid Build Coastguard Worker   CUIntVector _disabledFilters;
63*f6dc9357SAndroid Build Coastguard Worker 
InitSolidFiles()64*f6dc9357SAndroid Build Coastguard Worker   void InitSolidFiles() { _numSolidFiles = (UInt64)(Int64)(-1); }
InitSolidSize()65*f6dc9357SAndroid Build Coastguard Worker   void InitSolidSize()  { _numSolidBytes = (UInt64)(Int64)(-1); }
InitSolid()66*f6dc9357SAndroid Build Coastguard Worker   void InitSolid()
67*f6dc9357SAndroid Build Coastguard Worker   {
68*f6dc9357SAndroid Build Coastguard Worker     InitSolidFiles();
69*f6dc9357SAndroid Build Coastguard Worker     InitSolidSize();
70*f6dc9357SAndroid Build Coastguard Worker     _solidExtension = false;
71*f6dc9357SAndroid Build Coastguard Worker     _numSolidBytesDefined = false;
72*f6dc9357SAndroid Build Coastguard Worker   }
73*f6dc9357SAndroid Build Coastguard Worker 
74*f6dc9357SAndroid Build Coastguard Worker   void InitProps7z();
75*f6dc9357SAndroid Build Coastguard Worker   void InitProps();
76*f6dc9357SAndroid Build Coastguard Worker 
COutHandler()77*f6dc9357SAndroid Build Coastguard Worker   COutHandler() { InitProps7z(); }
78*f6dc9357SAndroid Build Coastguard Worker 
79*f6dc9357SAndroid Build Coastguard Worker   HRESULT SetProperty(const wchar_t *name, const PROPVARIANT &value);
80*f6dc9357SAndroid Build Coastguard Worker };
81*f6dc9357SAndroid Build Coastguard Worker 
82*f6dc9357SAndroid Build Coastguard Worker #endif
83*f6dc9357SAndroid Build Coastguard Worker 
84*f6dc9357SAndroid Build Coastguard Worker class CHandler Z7_final:
85*f6dc9357SAndroid Build Coastguard Worker   public IInArchive,
86*f6dc9357SAndroid Build Coastguard Worker   public IArchiveGetRawProps,
87*f6dc9357SAndroid Build Coastguard Worker 
88*f6dc9357SAndroid Build Coastguard Worker   #ifdef Z7_7Z_SET_PROPERTIES
89*f6dc9357SAndroid Build Coastguard Worker   public ISetProperties,
90*f6dc9357SAndroid Build Coastguard Worker   #endif
91*f6dc9357SAndroid Build Coastguard Worker 
92*f6dc9357SAndroid Build Coastguard Worker   #ifndef Z7_EXTRACT_ONLY
93*f6dc9357SAndroid Build Coastguard Worker   public IOutArchive,
94*f6dc9357SAndroid Build Coastguard Worker   #endif
95*f6dc9357SAndroid Build Coastguard Worker 
96*f6dc9357SAndroid Build Coastguard Worker   Z7_PUBLIC_ISetCompressCodecsInfo_IFEC
97*f6dc9357SAndroid Build Coastguard Worker 
98*f6dc9357SAndroid Build Coastguard Worker   public CMyUnknownImp,
99*f6dc9357SAndroid Build Coastguard Worker 
100*f6dc9357SAndroid Build Coastguard Worker   #ifndef Z7_EXTRACT_ONLY
101*f6dc9357SAndroid Build Coastguard Worker     public COutHandler
102*f6dc9357SAndroid Build Coastguard Worker   #else
103*f6dc9357SAndroid Build Coastguard Worker     public CCommonMethodProps
104*f6dc9357SAndroid Build Coastguard Worker   #endif
105*f6dc9357SAndroid Build Coastguard Worker {
106*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_BEGIN2(IInArchive)
107*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY(IArchiveGetRawProps)
108*f6dc9357SAndroid Build Coastguard Worker  #ifdef Z7_7Z_SET_PROPERTIES
109*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY(ISetProperties)
110*f6dc9357SAndroid Build Coastguard Worker  #endif
111*f6dc9357SAndroid Build Coastguard Worker  #ifndef Z7_EXTRACT_ONLY
112*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY(IOutArchive)
113*f6dc9357SAndroid Build Coastguard Worker  #endif
114*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY_ISetCompressCodecsInfo_IFEC
115*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_END
116*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_ADDREF_RELEASE
117*f6dc9357SAndroid Build Coastguard Worker 
118*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(IInArchive)
119*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(IArchiveGetRawProps)
120*f6dc9357SAndroid Build Coastguard Worker  #ifdef Z7_7Z_SET_PROPERTIES
121*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(ISetProperties)
122*f6dc9357SAndroid Build Coastguard Worker  #endif
123*f6dc9357SAndroid Build Coastguard Worker  #ifndef Z7_EXTRACT_ONLY
124*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(IOutArchive)
125*f6dc9357SAndroid Build Coastguard Worker  #endif
126*f6dc9357SAndroid Build Coastguard Worker   DECL_ISetCompressCodecsInfo
127*f6dc9357SAndroid Build Coastguard Worker 
128*f6dc9357SAndroid Build Coastguard Worker private:
129*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<IInStream> _inStream;
130*f6dc9357SAndroid Build Coastguard Worker   NArchive::N7z::CDbEx _db;
131*f6dc9357SAndroid Build Coastguard Worker 
132*f6dc9357SAndroid Build Coastguard Worker  #ifndef Z7_NO_CRYPTO
133*f6dc9357SAndroid Build Coastguard Worker   bool _isEncrypted;
134*f6dc9357SAndroid Build Coastguard Worker   bool _passwordIsDefined;
135*f6dc9357SAndroid Build Coastguard Worker   UString _password; // _Wipe
136*f6dc9357SAndroid Build Coastguard Worker  #endif
137*f6dc9357SAndroid Build Coastguard Worker 
138*f6dc9357SAndroid Build Coastguard Worker   #ifdef Z7_EXTRACT_ONLY
139*f6dc9357SAndroid Build Coastguard Worker 
140*f6dc9357SAndroid Build Coastguard Worker   #ifdef Z7_7Z_SET_PROPERTIES
141*f6dc9357SAndroid Build Coastguard Worker   bool _useMultiThreadMixer;
142*f6dc9357SAndroid Build Coastguard Worker   #endif
143*f6dc9357SAndroid Build Coastguard Worker 
144*f6dc9357SAndroid Build Coastguard Worker   UInt32 _crcSize;
145*f6dc9357SAndroid Build Coastguard Worker 
146*f6dc9357SAndroid Build Coastguard Worker   #else
147*f6dc9357SAndroid Build Coastguard Worker 
148*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<CBond2> _bonds;
149*f6dc9357SAndroid Build Coastguard Worker 
150*f6dc9357SAndroid Build Coastguard Worker   HRESULT PropsMethod_To_FullMethod(CMethodFull &dest, const COneMethodInfo &m);
151*f6dc9357SAndroid Build Coastguard Worker   HRESULT SetHeaderMethod(CCompressionMethodMode &headerMethod);
152*f6dc9357SAndroid Build Coastguard Worker   HRESULT SetMainMethod(CCompressionMethodMode &method);
153*f6dc9357SAndroid Build Coastguard Worker 
154*f6dc9357SAndroid Build Coastguard Worker   #endif
155*f6dc9357SAndroid Build Coastguard Worker 
156*f6dc9357SAndroid Build Coastguard Worker   bool IsFolderEncrypted(CNum folderIndex) const;
157*f6dc9357SAndroid Build Coastguard Worker   #ifndef Z7_SFX
158*f6dc9357SAndroid Build Coastguard Worker 
159*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt64> _fileInfoPopIDs;
160*f6dc9357SAndroid Build Coastguard Worker   void FillPopIDs();
161*f6dc9357SAndroid Build Coastguard Worker   void AddMethodName(AString &s, UInt64 id);
162*f6dc9357SAndroid Build Coastguard Worker   HRESULT SetMethodToProp(CNum folderIndex, PROPVARIANT *prop) const;
163*f6dc9357SAndroid Build Coastguard Worker 
164*f6dc9357SAndroid Build Coastguard Worker   #endif
165*f6dc9357SAndroid Build Coastguard Worker 
166*f6dc9357SAndroid Build Coastguard Worker   DECL_EXTERNAL_CODECS_VARS
167*f6dc9357SAndroid Build Coastguard Worker 
168*f6dc9357SAndroid Build Coastguard Worker public:
169*f6dc9357SAndroid Build Coastguard Worker   CHandler();
~CHandler()170*f6dc9357SAndroid Build Coastguard Worker   ~CHandler()
171*f6dc9357SAndroid Build Coastguard Worker   {
172*f6dc9357SAndroid Build Coastguard Worker     Close();
173*f6dc9357SAndroid Build Coastguard Worker   }
174*f6dc9357SAndroid Build Coastguard Worker };
175*f6dc9357SAndroid Build Coastguard Worker 
176*f6dc9357SAndroid Build Coastguard Worker }}
177*f6dc9357SAndroid Build Coastguard Worker 
178*f6dc9357SAndroid Build Coastguard Worker #endif
179