Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / UI / Agent / IFolderArchive.h
1 // IFolderArchive.h\r
2 \r
3 #ifndef __IFOLDER_ARCHIVE_H\r
4 #define __IFOLDER_ARCHIVE_H\r
5 \r
6 #include "../../IDecl.h"\r
7 #include "../../Archive/IArchive.h"\r
8 #include "../../UI/Common/LoadCodecs.h"\r
9 #include "../../UI/FileManager/IFolder.h"\r
10 \r
11 #include "../Common/ExtractMode.h"\r
12 #include "../Common/IFileExtractCallback.h"\r
13 \r
14 #define FOLDER_ARCHIVE_INTERFACE_SUB(i, base, x) DECL_INTERFACE_SUB(i, base, 0x01, x)\r
15 #define FOLDER_ARCHIVE_INTERFACE(i, x) FOLDER_ARCHIVE_INTERFACE_SUB(i, IUnknown, x)\r
16 \r
17 #define INTERFACE_IArchiveFolder(x) \\r
18   STDMETHOD(Extract)(const UInt32 *indices, UInt32 numItems, \\r
19       NExtract::NPathMode::EEnum pathMode, \\r
20       NExtract::NOverwriteMode::EEnum overwriteMode, \\r
21       const wchar_t *path, Int32 testMode, \\r
22       IFolderArchiveExtractCallback *extractCallback2) x; \\r
23 \r
24 FOLDER_ARCHIVE_INTERFACE(IArchiveFolder, 0x05)\r
25 {\r
26   INTERFACE_IArchiveFolder(PURE)\r
27 };\r
28 \r
29 #define INTERFACE_IInFolderArchive(x) \\r
30   STDMETHOD(Open)(IInStream *inStream, const wchar_t *filePath, const wchar_t *arcFormat, BSTR *archiveTypeRes, IArchiveOpenCallback *openArchiveCallback) x; \\r
31   STDMETHOD(ReOpen)(IArchiveOpenCallback *openArchiveCallback) x; \\r
32   STDMETHOD(Close)() x; \\r
33   STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties) x; \\r
34   STDMETHOD(GetPropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) x; \\r
35   STDMETHOD(BindToRootFolder)(IFolderFolder **resultFolder) x; \\r
36   STDMETHOD(Extract)(NExtract::NPathMode::EEnum pathMode, \\r
37       NExtract::NOverwriteMode::EEnum overwriteMode, const wchar_t *path, \\r
38       Int32 testMode, IFolderArchiveExtractCallback *extractCallback2) x; \\r
39 \r
40 FOLDER_ARCHIVE_INTERFACE(IInFolderArchive, 0x0E)\r
41 {\r
42   INTERFACE_IInFolderArchive(PURE)\r
43 };\r
44 \r
45 #define INTERFACE_IFolderArchiveUpdateCallback(x) \\r
46   STDMETHOD(CompressOperation)(const wchar_t *name) x; \\r
47   STDMETHOD(DeleteOperation)(const wchar_t *name) x; \\r
48   STDMETHOD(OperationResult)(Int32 operationResult) x; \\r
49   STDMETHOD(UpdateErrorMessage)(const wchar_t *message) x; \\r
50   STDMETHOD(SetNumFiles)(UInt64 numFiles) x; \\r
51 \r
52 FOLDER_ARCHIVE_INTERFACE_SUB(IFolderArchiveUpdateCallback, IProgress, 0x0B)\r
53 {\r
54   INTERFACE_IFolderArchiveUpdateCallback(PURE)\r
55 };\r
56 \r
57 #define INTERFACE_IOutFolderArchive(x) \\r
58   STDMETHOD(SetFolder)(IFolderFolder *folder) x; \\r
59   STDMETHOD(SetFiles)(const wchar_t *folderPrefix, const wchar_t **names, UInt32 numNames) x; \\r
60   STDMETHOD(DeleteItems)(const wchar_t *newArchiveName, \\r
61       const UInt32 *indices, UInt32 numItems, IFolderArchiveUpdateCallback *updateCallback) x; \\r
62   STDMETHOD(DoOperation)(CCodecs *codecs, int index, \\r
63       const wchar_t *newArchiveName, const Byte *stateActions, const wchar_t *sfxModule, \\r
64       IFolderArchiveUpdateCallback *updateCallback) x; \\r
65   STDMETHOD(DoOperation2)(const wchar_t *newArchiveName, const Byte *stateActions, \\r
66       const wchar_t *sfxModule, IFolderArchiveUpdateCallback *updateCallback) x; \\r
67 \r
68 FOLDER_ARCHIVE_INTERFACE(IOutFolderArchive, 0x0A)\r
69 {\r
70   INTERFACE_IOutFolderArchive(PURE)\r
71 };\r
72 \r
73 #endif\r