OSDN Git Service

compiler-calculated maximum value for `m_SourceDefs` (#966)
[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_plugin;
41         PackingInfo m_infoUnpacker;
42 };
43
44 struct Merge7zFormatMergePluginScope
45 {
46         explicit Merge7zFormatMergePluginScope(const PackingInfo *infoUnpacker) : m_oldPackingInfo(*Merge7zFormatMergePluginImpl::GetPackingInfo())
47         {
48                 Merge7zFormatMergePluginImpl::SetPackingInfo(infoUnpacker);
49         }
50         ~Merge7zFormatMergePluginScope()
51         {
52                 Merge7zFormatMergePluginImpl::SetPackingInfo(&m_oldPackingInfo);
53         }
54         PackingInfo m_oldPackingInfo;
55 };