OSDN Git Service

Initial revision
[winmerge-jp/winmerge-jp.git] / ArchiveSupport / Merge7z / Merge7z.h
1 interface Merge7z
2 {
3         struct Proxy
4         {
5                 LPCSTR Merge7z[2];
6                 HMODULE handle;
7                 interface Merge7z *operator->();
8         };
9         struct Initialize
10         {
11                 enum
12                 {
13                         Unicode = 1,
14                         Local7z = 2,
15                         Default = sizeof(TCHAR) == sizeof(WCHAR) ? Unicode : 0
16                 };
17         };
18         virtual int Initialize(DWORD = Initialize::Default);
19         interface Envelope
20         {
21                 virtual void Free() = 0;
22         };
23         interface DirItemEnumerator
24         {
25                 struct Item
26                 {
27                         struct
28                         {
29                                 enum
30                                 {
31                                         Attributes = 1,
32                                         CreationTime = 2,
33                                         LastAccessTime = 4,
34                                         LastWriteTime = 8,
35                                         Size = 16,
36                                         Name = 32,
37                                         FullPath = 64,
38                                         CheckIfPresent = 128,
39                                         NeedFindFile = Attributes|CreationTime|LastAccessTime|LastWriteTime|Size|Name
40                                 };
41                         } *operator->();
42                         UINT32 Mask;
43                         UINT32 Attributes;
44                         FILETIME CreationTime;
45                         FILETIME LastAccessTime;
46                         FILETIME LastWriteTime;
47                         UINT64 Size;
48                         LPCTSTR Name;
49                         LPCTSTR FullPath;
50                 };
51                 virtual UINT Open() = 0;
52                 virtual Envelope *Enum(Item &) = 0;
53         };
54         interface Format
55         {
56                 virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder) = 0;
57                 virtual HRESULT CompressArchive(HWND, LPCTSTR path, DirItemEnumerator *) = 0;
58         };
59         Merge7z();
60         Format &Format7z;
61         Format &ZipHandler;
62         Format &RarHandler;
63         Format &BZip2Handler;
64         Format &TarHandler;
65         virtual Format *GuessFormat(LPCTSTR path);
66 };
67