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