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