OSDN Git Service

Fix issue #2046: Folder compare omits unique folders from results if they contain...
[winmerge-jp/winmerge-jp.git] / Src / Merge7zFormatMergePluginImpl.h
1 /** 
2  * @file  Merge7zFormatMergePluginImpl.h
3  *
4  * @brief Declaration file for Merge7zFormatMergePluginImpl class
5  *
6  */
7 #pragma once
8
9 #include <Windows.h>
10
11 #define DllBuild_Merge7z 10 // Minimum DllBuild of Merge7z plugin required
12
13 // We include dllpstub.h for Merge7z.h
14 // Merge7z::Proxy embeds a DLLPSTUB
15 #include "dllpstub.h"
16 #include "../ArchiveSupport/Merge7z/Merge7z.h"
17 #include "UnicodeString.h"
18 #include "FileTransform.h"
19
20 class PluginInfo;
21
22 struct Merge7zFormatMergePluginImpl : public Merge7z::Format
23 {
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;
44 };
45
46 struct Merge7zFormatMergePluginScope
47 {
48         explicit Merge7zFormatMergePluginScope(const PackingInfo *infoUnpacker) : m_oldPackingInfo(*Merge7zFormatMergePluginImpl::GetPackingInfo())
49         {
50                 Merge7zFormatMergePluginImpl::SetPackingInfo(infoUnpacker);
51         }
52         ~Merge7zFormatMergePluginScope()
53         {
54                 Merge7zFormatMergePluginImpl::SetPackingInfo(&m_oldPackingInfo);
55         }
56         PackingInfo m_oldPackingInfo;
57 };