xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // IFileExtractCallback.h
2 
3 #ifndef ZIP7_INC_I_FILE_EXTRACT_CALLBACK_H
4 #define ZIP7_INC_I_FILE_EXTRACT_CALLBACK_H
5 
6 #include "../../../Common/MyString.h"
7 
8 #include "../../IDecl.h"
9 
10 #include "LoadCodecs.h"
11 #include "OpenArchive.h"
12 
13 Z7_PURE_INTERFACES_BEGIN
14 
15 #define Z7_IFACE_CONSTR_FOLDERARC_SUB(i, base, n) \
16   Z7_DECL_IFACE_7ZIP_SUB(i, base, 1, n) \
17   { Z7_IFACE_COM7_PURE(i) };
18 
19 #define Z7_IFACE_CONSTR_FOLDERARC(i, n) \
20         Z7_IFACE_CONSTR_FOLDERARC_SUB(i, IUnknown, n)
21 
22 namespace NOverwriteAnswer
23 {
24   enum EEnum
25   {
26     kYes,
27     kYesToAll,
28     kNo,
29     kNoToAll,
30     kAutoRename,
31     kCancel
32   };
33 }
34 
35 
36 /* ---------- IFolderArchiveExtractCallback ----------
37 is implemented by
38   Console/ExtractCallbackConsole.h  CExtractCallbackConsole
39   FileManager/ExtractCallback.h     CExtractCallbackImp
40   FAR/ExtractEngine.cpp             CExtractCallBackImp: (QueryInterface is not supported)
41 
42 IID_IFolderArchiveExtractCallback is requested by:
43   - Agent/ArchiveFolder.cpp
44       CAgentFolder::CopyTo(..., IFolderOperationsExtractCallback *callback)
45       is sent to IArchiveFolder::Extract()
46 
47   - FileManager/PanelCopy.cpp
48       CPanel::CopyTo(), if (options->testMode)
49       is sent to IArchiveFolder::Extract()
50 
51  IFolderArchiveExtractCallback is used by Common/ArchiveExtractCallback.cpp
52 */
53 
54 #define Z7_IFACEM_IFolderArchiveExtractCallback(x) \
55   x(AskOverwrite( \
56       const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize, \
57       const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize, \
58       Int32 *answer)) \
59   x(PrepareOperation(const wchar_t *name, Int32 isFolder, Int32 askExtractMode, const UInt64 *position)) \
60   x(MessageError(const wchar_t *message)) \
61   x(SetOperationResult(Int32 opRes, Int32 encrypted)) \
62 
63 Z7_IFACE_CONSTR_FOLDERARC_SUB(IFolderArchiveExtractCallback, IProgress, 0x07)
64 
65 #define Z7_IFACEM_IFolderArchiveExtractCallback2(x) \
66   x(ReportExtractResult(Int32 opRes, Int32 encrypted, const wchar_t *name)) \
67 
68 Z7_IFACE_CONSTR_FOLDERARC(IFolderArchiveExtractCallback2, 0x08)
69 
70 /* ---------- IExtractCallbackUI ----------
71 is implemented by
72   Console/ExtractCallbackConsole.h  CExtractCallbackConsole
73   FileManager/ExtractCallback.h     CExtractCallbackImp
74 */
75 
76 #ifdef Z7_NO_CRYPTO
77   #define Z7_IFACEM_IExtractCallbackUI_Crypto(px)
78 #else
79   #define Z7_IFACEM_IExtractCallbackUI_Crypto(px) \
80   virtual HRESULT SetPassword(const UString &password) px
81 #endif
82 
83 #define Z7_IFACEN_IExtractCallbackUI(px) \
84   virtual HRESULT BeforeOpen(const wchar_t *name, bool testMode) px \
85   virtual HRESULT OpenResult(const CCodecs *codecs, const CArchiveLink &arcLink, const wchar_t *name, HRESULT result) px \
86   virtual HRESULT ThereAreNoFiles() px \
87   virtual HRESULT ExtractResult(HRESULT result) px \
88   Z7_IFACEM_IExtractCallbackUI_Crypto(px)
89 
90 // IExtractCallbackUI - is non-COM interface
91 // IFolderArchiveExtractCallback - is COM interface
92 // Z7_IFACE_DECL_PURE_(IExtractCallbackUI, IFolderArchiveExtractCallback)
93 Z7_IFACE_DECL_PURE(IExtractCallbackUI)
94 
95 
96 
97 #define Z7_IFACEM_IGetProp(x) \
98   x(GetProp(PROPID propID, PROPVARIANT *value)) \
99 
100 Z7_IFACE_CONSTR_FOLDERARC(IGetProp, 0x20)
101 
102 #define Z7_IFACEM_IFolderExtractToStreamCallback(x) \
103   x(UseExtractToStream(Int32 *res)) \
104   x(GetStream7(const wchar_t *name, Int32 isDir, ISequentialOutStream **outStream, Int32 askExtractMode, IGetProp *getProp)) \
105   x(PrepareOperation7(Int32 askExtractMode)) \
106   x(SetOperationResult8(Int32 resultEOperationResult, Int32 encrypted, UInt64 size)) \
107 
108 Z7_IFACE_CONSTR_FOLDERARC(IFolderExtractToStreamCallback, 0x31)
109 
110 Z7_PURE_INTERFACES_END
111 
112 #endif
113