OSDN Git Service

Patch [1191245] Merge7z DllBuild 0011
[winmerge-jp/winmerge-jp.git] / ArchiveSupport / Merge7z / Merge7z.h
1 #ifndef DllBuild_Merge7z
2 #define DllBuild_Merge7z 0      // traditional interfaces only
3 #endif
4
5 #if DllBuild_Merge7z >= 9
6 #define DllBuild_Merge7z_9 public
7 #else
8 #define DllBuild_Merge7z_9 private
9 #endif
10
11 #if DllBuild_Merge7z >= 10
12 #define DllBuild_Merge7z_10 public
13 #else
14 #define DllBuild_Merge7z_10 private
15 #define DLLPSTUB /##/
16 #endif
17
18 interface Merge7z
19 {
20         struct Proxy
21         {
22                 DLLPSTUB stub;
23                 LPCSTR Merge7z[2];
24                 HMODULE handle;
25                 interface Merge7z *operator->();
26         };
27         struct Initialize
28         {
29                 enum
30                 {
31                         Unicode = 1,
32                         Local7z = 2,
33                         Default = sizeof(TCHAR) == sizeof(WCHAR) ? Unicode : 0
34                 };
35         };
36         virtual int Initialize(DWORD = Initialize::Default);
37         interface Envelope
38         {
39                 virtual void Free() = 0;
40         };
41         interface DirItemEnumerator
42         {
43                 struct Item
44                 {
45                         struct
46                         {
47                                 enum
48                                 {
49                                         Attributes = 1,
50                                         CreationTime = 2,
51                                         LastAccessTime = 4,
52                                         LastWriteTime = 8,
53                                         Size = 16,
54                                         Name = 32,
55                                         FullPath = 64,
56                                         CheckIfPresent = 128,
57                                         Recurse = 256,
58                                         NeedFindFile = Attributes|CreationTime|LastAccessTime|LastWriteTime|Size|Name
59                                 };
60                                 UINT32 Item;
61                         } Mask;
62                         UINT32 Attributes;
63                         FILETIME CreationTime;
64                         FILETIME LastAccessTime;
65                         FILETIME LastWriteTime;
66                         UINT64 Size;
67                         LPCTSTR Name;
68                         LPCTSTR FullPath;
69                 };
70                 virtual UINT32 Open() = 0;
71                 virtual Envelope *Enum(Item &) = 0;
72         };
73         interface Format
74         {
75                 virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder) = 0;
76                 virtual HRESULT CompressArchive(HWND, LPCTSTR path, DirItemEnumerator *) = 0;
77         DllBuild_Merge7z_9:
78                 interface Inspector
79                 {
80                         virtual void Free() = 0;
81                         virtual UINT32 Open() = 0;
82                         virtual HRESULT Extract(HWND, LPCTSTR folder, const UINT32 *indices = 0, UINT32 numItems = -1) = 0;
83                         virtual HRESULT GetProperty(UINT32, PROPID, PROPVARIANT *, VARTYPE) = 0;
84                         virtual BSTR GetPath(UINT32) = 0;
85                         virtual BSTR GetName(UINT32) = 0;
86                         virtual BSTR GetExtension(UINT32) = 0;
87                         virtual VARIANT_BOOL IsFolder(UINT32) = 0;
88                         virtual FILETIME LastWriteTime(UINT32) = 0;
89                 DllBuild_Merge7z_10:
90                         virtual BSTR GetDefaultName() = 0;
91                 };
92                 virtual Inspector *Open(HWND, LPCTSTR) = 0;
93                 interface Updater
94                 {
95                         virtual void Free() = 0;
96                         virtual UINT32 Add(DirItemEnumerator::Item &) = 0;
97                         virtual HRESULT Commit(HWND) = 0;
98                 };
99                 virtual Updater *Update(HWND, LPCTSTR) = 0;
100         DllBuild_Merge7z_10:
101                 virtual HRESULT GetHandlerProperty(HWND, PROPID, PROPVARIANT *, VARTYPE) = 0;
102                 virtual BSTR GetHandlerName(HWND) = 0;
103                 virtual BSTR GetHandlerClassID(HWND) = 0;
104                 virtual BSTR GetHandlerExtension(HWND) = 0;
105                 virtual BSTR GetHandlerAddExtension(HWND) = 0;
106                 virtual VARIANT_BOOL GetHandlerUpdate(HWND) = 0;
107                 virtual VARIANT_BOOL GetHandlerKeepName(HWND) = 0;
108                 virtual BSTR GetDefaultName(HWND, LPCTSTR) = 0;
109         };
110         Merge7z();
111         Format &Format7z;
112         Format &ZipHandler;
113         Format &RarHandler;
114         Format &BZip2Handler;
115         Format &TarHandler;
116         virtual Format *GuessFormat(LPCTSTR);
117 DllBuild_Merge7z_9:
118         virtual LPCTSTR LoadLang(LPCTSTR);
119 };