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