xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/Zip/ZipHandler.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // Zip/Handler.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ZIP_HANDLER_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ZIP_HANDLER_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/DynamicBuffer.h"
7*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h"
8*f6dc9357SAndroid Build Coastguard Worker #include "../IArchive.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/CreateCoder.h"
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker #include "ZipCompressionMode.h"
13*f6dc9357SAndroid Build Coastguard Worker #include "ZipIn.h"
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
16*f6dc9357SAndroid Build Coastguard Worker namespace NZip {
17*f6dc9357SAndroid Build Coastguard Worker 
18*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumMethodNames1 = NFileHeader::NCompressionMethod::kZstdPk + 1;
19*f6dc9357SAndroid Build Coastguard Worker const unsigned kMethodNames2Start = NFileHeader::NCompressionMethod::kZstdWz;
20*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumMethodNames2 = NFileHeader::NCompressionMethod::kWzAES + 1 - kMethodNames2Start;
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker extern const char * const kMethodNames1[kNumMethodNames1];
23*f6dc9357SAndroid Build Coastguard Worker extern const char * const kMethodNames2[kNumMethodNames2];
24*f6dc9357SAndroid Build Coastguard Worker 
25*f6dc9357SAndroid Build Coastguard Worker 
26*f6dc9357SAndroid Build Coastguard Worker class CHandler Z7_final:
27*f6dc9357SAndroid Build Coastguard Worker   public IInArchive,
28*f6dc9357SAndroid Build Coastguard Worker   // public IArchiveGetRawProps,
29*f6dc9357SAndroid Build Coastguard Worker   public IOutArchive,
30*f6dc9357SAndroid Build Coastguard Worker   public ISetProperties,
31*f6dc9357SAndroid Build Coastguard Worker   Z7_PUBLIC_ISetCompressCodecsInfo_IFEC
32*f6dc9357SAndroid Build Coastguard Worker   public CMyUnknownImp
33*f6dc9357SAndroid Build Coastguard Worker {
34*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_BEGIN2(IInArchive)
35*f6dc9357SAndroid Build Coastguard Worker   // Z7_COM_QI_ENTRY(IArchiveGetRawProps)
36*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY(IOutArchive)
37*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY(ISetProperties)
38*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_ENTRY_ISetCompressCodecsInfo_IFEC
39*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_QI_END
40*f6dc9357SAndroid Build Coastguard Worker   Z7_COM_ADDREF_RELEASE
41*f6dc9357SAndroid Build Coastguard Worker 
42*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(IInArchive)
43*f6dc9357SAndroid Build Coastguard Worker   // Z7_IFACE_COM7_IMP(IArchiveGetRawProps)
44*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(IOutArchive)
45*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(ISetProperties)
46*f6dc9357SAndroid Build Coastguard Worker   DECL_ISetCompressCodecsInfo
47*f6dc9357SAndroid Build Coastguard Worker 
48*f6dc9357SAndroid Build Coastguard Worker private:
49*f6dc9357SAndroid Build Coastguard Worker   CObjectVector<CItemEx> m_Items;
50*f6dc9357SAndroid Build Coastguard Worker   CInArchive m_Archive;
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker   CBaseProps _props;
53*f6dc9357SAndroid Build Coastguard Worker   CHandlerTimeOptions TimeOptions;
54*f6dc9357SAndroid Build Coastguard Worker 
55*f6dc9357SAndroid Build Coastguard Worker   int m_MainMethod;
56*f6dc9357SAndroid Build Coastguard Worker   bool m_ForceAesMode;
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker   bool _removeSfxBlock;
59*f6dc9357SAndroid Build Coastguard Worker   bool m_ForceLocal;
60*f6dc9357SAndroid Build Coastguard Worker   bool m_ForceUtf8;
61*f6dc9357SAndroid Build Coastguard Worker   bool _force_SeqOutMode; // for creation
62*f6dc9357SAndroid Build Coastguard Worker   bool _force_OpenSeq;
63*f6dc9357SAndroid Build Coastguard Worker   bool _forceCodePage;
64*f6dc9357SAndroid Build Coastguard Worker   UInt32 _specifiedCodePage;
65*f6dc9357SAndroid Build Coastguard Worker 
66*f6dc9357SAndroid Build Coastguard Worker   DECL_EXTERNAL_CODECS_VARS
67*f6dc9357SAndroid Build Coastguard Worker 
InitMethodProps()68*f6dc9357SAndroid Build Coastguard Worker   void InitMethodProps()
69*f6dc9357SAndroid Build Coastguard Worker   {
70*f6dc9357SAndroid Build Coastguard Worker     _props.Init();
71*f6dc9357SAndroid Build Coastguard Worker     TimeOptions.Init();
72*f6dc9357SAndroid Build Coastguard Worker     TimeOptions.Prec = k_PropVar_TimePrec_0;
73*f6dc9357SAndroid Build Coastguard Worker     m_MainMethod = -1;
74*f6dc9357SAndroid Build Coastguard Worker     m_ForceAesMode = false;
75*f6dc9357SAndroid Build Coastguard Worker     _removeSfxBlock = false;
76*f6dc9357SAndroid Build Coastguard Worker     m_ForceLocal = false;
77*f6dc9357SAndroid Build Coastguard Worker     m_ForceUtf8 = false;
78*f6dc9357SAndroid Build Coastguard Worker     _force_SeqOutMode = false;
79*f6dc9357SAndroid Build Coastguard Worker     _force_OpenSeq = false;
80*f6dc9357SAndroid Build Coastguard Worker     _forceCodePage = false;
81*f6dc9357SAndroid Build Coastguard Worker     _specifiedCodePage = CP_OEMCP;
82*f6dc9357SAndroid Build Coastguard Worker   }
83*f6dc9357SAndroid Build Coastguard Worker 
84*f6dc9357SAndroid Build Coastguard Worker   // void MarkAltStreams(CObjectVector<CItemEx> &items);
85*f6dc9357SAndroid Build Coastguard Worker 
86*f6dc9357SAndroid Build Coastguard Worker   HRESULT GetOutProperty(IArchiveUpdateCallback *callback, UInt32 callbackIndex, Int32 arcIndex, PROPID propID, PROPVARIANT *value);
87*f6dc9357SAndroid Build Coastguard Worker 
88*f6dc9357SAndroid Build Coastguard Worker public:
89*f6dc9357SAndroid Build Coastguard Worker   CHandler();
90*f6dc9357SAndroid Build Coastguard Worker };
91*f6dc9357SAndroid Build Coastguard Worker 
92*f6dc9357SAndroid Build Coastguard Worker }}
93*f6dc9357SAndroid Build Coastguard Worker 
94*f6dc9357SAndroid Build Coastguard Worker #endif
95