summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h
blob: dd5c0d7214e1d4f025879a8d611ff4c18bc0d022 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// IFileExtractCallback.h

#ifndef ZIP7_INC_I_FILE_EXTRACT_CALLBACK_H
#define ZIP7_INC_I_FILE_EXTRACT_CALLBACK_H

#include "../../../Common/MyString.h"

#include "../../IDecl.h"

#include "LoadCodecs.h"
#include "OpenArchive.h"

Z7_PURE_INTERFACES_BEGIN

#define Z7_IFACE_CONSTR_FOLDERARC_SUB(i, base, n) \
  Z7_DECL_IFACE_7ZIP_SUB(i, base, 1, n) \
  { Z7_IFACE_COM7_PURE(i) };

#define Z7_IFACE_CONSTR_FOLDERARC(i, n) \
        Z7_IFACE_CONSTR_FOLDERARC_SUB(i, IUnknown, n)

namespace NOverwriteAnswer
{
  enum EEnum
  {
    kYes,
    kYesToAll,
    kNo,
    kNoToAll,
    kAutoRename,
    kCancel
  };
}


/* ---------- IFolderArchiveExtractCallback ----------
is implemented by
  Console/ExtractCallbackConsole.h  CExtractCallbackConsole
  FileManager/ExtractCallback.h     CExtractCallbackImp
  FAR/ExtractEngine.cpp             CExtractCallBackImp: (QueryInterface is not supported)

IID_IFolderArchiveExtractCallback is requested by:
  - Agent/ArchiveFolder.cpp
      CAgentFolder::CopyTo(..., IFolderOperationsExtractCallback *callback)
      is sent to IArchiveFolder::Extract()

  - FileManager/PanelCopy.cpp
      CPanel::CopyTo(), if (options->testMode)
      is sent to IArchiveFolder::Extract()

 IFolderArchiveExtractCallback is used by Common/ArchiveExtractCallback.cpp
*/

#define Z7_IFACEM_IFolderArchiveExtractCallback(x) \
  x(AskOverwrite( \
      const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize, \
      const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize, \
      Int32 *answer)) \
  x(PrepareOperation(const wchar_t *name, Int32 isFolder, Int32 askExtractMode, const UInt64 *position)) \
  x(MessageError(const wchar_t *message)) \
  x(SetOperationResult(Int32 opRes, Int32 encrypted)) \

Z7_IFACE_CONSTR_FOLDERARC_SUB(IFolderArchiveExtractCallback, IProgress, 0x07)

#define Z7_IFACEM_IFolderArchiveExtractCallback2(x) \
  x(ReportExtractResult(Int32 opRes, Int32 encrypted, const wchar_t *name)) \

Z7_IFACE_CONSTR_FOLDERARC(IFolderArchiveExtractCallback2, 0x08)

/* ---------- IExtractCallbackUI ----------
is implemented by
  Console/ExtractCallbackConsole.h  CExtractCallbackConsole
  FileManager/ExtractCallback.h     CExtractCallbackImp
*/

#ifdef Z7_NO_CRYPTO
  #define Z7_IFACEM_IExtractCallbackUI_Crypto(px)
#else
  #define Z7_IFACEM_IExtractCallbackUI_Crypto(px) \
  virtual HRESULT SetPassword(const UString &password) px
#endif

#define Z7_IFACEN_IExtractCallbackUI(px) \
  virtual HRESULT BeforeOpen(const wchar_t *name, bool testMode) px \
  virtual HRESULT OpenResult(const CCodecs *codecs, const CArchiveLink &arcLink, const wchar_t *name, HRESULT result) px \
  virtual HRESULT ThereAreNoFiles() px \
  virtual HRESULT ExtractResult(HRESULT result) px \
  Z7_IFACEM_IExtractCallbackUI_Crypto(px)

// IExtractCallbackUI - is non-COM interface
// IFolderArchiveExtractCallback - is COM interface
// Z7_IFACE_DECL_PURE_(IExtractCallbackUI, IFolderArchiveExtractCallback)
Z7_IFACE_DECL_PURE(IExtractCallbackUI)



#define Z7_IFACEM_IGetProp(x) \
  x(GetProp(PROPID propID, PROPVARIANT *value)) \

Z7_IFACE_CONSTR_FOLDERARC(IGetProp, 0x20)

#define Z7_IFACEM_IFolderExtractToStreamCallback(x) \
  x(UseExtractToStream(Int32 *res)) \
  x(GetStream7(const wchar_t *name, Int32 isDir, ISequentialOutStream **outStream, Int32 askExtractMode, IGetProp *getProp)) \
  x(PrepareOperation7(Int32 askExtractMode)) \
  x(SetOperationResult8(Int32 resultEOperationResult, Int32 encrypted, UInt64 size)) \

Z7_IFACE_CONSTR_FOLDERARC(IFolderExtractToStreamCallback, 0x31)

Z7_PURE_INTERFACES_END

#endif