2 * @file Merge7zFormatMergePluginImpl.h
4 * @brief Declaration file for Merge7zFormatMergePluginImpl class
11 #define DllBuild_Merge7z 10 // Minimum DllBuild of Merge7z plugin required
13 // We include dllpstub.h for Merge7z.h
14 // Merge7z::Proxy embeds a DLLPSTUB
16 #include "../ArchiveSupport/Merge7z/Merge7z.h"
17 #include "UnicodeString.h"
18 #include "FileTransform.h"
22 struct Merge7zFormatMergePluginImpl : public Merge7z::Format
24 Merge7zFormatMergePluginImpl() : m_plugin(nullptr) {}
25 virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder);
26 virtual HRESULT CompressArchive(HWND, LPCTSTR path, Merge7z::DirItemEnumerator *);
27 virtual Inspector *Open(HWND, LPCTSTR);
28 virtual Updater *Update(HWND, LPCTSTR);
29 virtual HRESULT GetHandlerProperty(HWND, PROPID, PROPVARIANT *, VARTYPE);
30 virtual BSTR GetHandlerName(HWND);
31 virtual BSTR GetHandlerClassID(HWND);
32 virtual BSTR GetHandlerExtension(HWND);
33 virtual BSTR GetHandlerAddExtension(HWND);
34 virtual VARIANT_BOOL GetHandlerUpdate(HWND);
35 virtual VARIANT_BOOL GetHandlerKeepName(HWND);
36 virtual BSTR GetDefaultName(HWND, LPCTSTR);
37 static Merge7z::Format *GuessFormat(const String& path);
38 static void SetPackingInfo(const PackingInfo *infoUnpacker);
39 static PackingInfo *GetPackingInfo();
40 PluginInfo* m_URLHandler = nullptr;
41 PluginInfo* m_plugin = nullptr;
42 Merge7z::Format* m_format = nullptr;
43 PackingInfo m_infoUnpacker;
46 struct Merge7zFormatMergePluginScope
48 explicit Merge7zFormatMergePluginScope(const PackingInfo *infoUnpacker) : m_oldPackingInfo(*Merge7zFormatMergePluginImpl::GetPackingInfo())
50 Merge7zFormatMergePluginImpl::SetPackingInfo(infoUnpacker);
52 ~Merge7zFormatMergePluginScope()
54 Merge7zFormatMergePluginImpl::SetPackingInfo(&m_oldPackingInfo);
56 PackingInfo m_oldPackingInfo;