Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: third_party/lzma/v4_65/files/CPP/7zip/Archive/IArchive.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // IArchive.h
2
3 #ifndef __IARCHIVE_H
4 #define __IARCHIVE_H
5
6 #include "../IStream.h"
7 #include "../IProgress.h"
8 #include "../PropID.h"
9
10 #define ARCHIVE_INTERFACE_SUB(i, base, x) DECL_INTERFACE_SUB(i, base, 6, x)
11 #define ARCHIVE_INTERFACE(i, x) ARCHIVE_INTERFACE_SUB(i, IUnknown, x)
12
13 namespace NFileTimeType
14 {
15 enum EEnum
16 {
17 kWindows,
18 kUnix,
19 kDOS
20 };
21 }
22
23 namespace NArchive
24 {
25 enum
26 {
27 kName = 0,
28 kClassID,
29 kExtension,
30 kAddExtension,
31 kUpdate,
32 kKeepName,
33 kStartSignature,
34 kFinishSignature,
35 kAssociate
36 };
37
38 namespace NExtract
39 {
40 namespace NAskMode
41 {
42 enum
43 {
44 kExtract = 0,
45 kTest,
46 kSkip
47 };
48 }
49 namespace NOperationResult
50 {
51 enum
52 {
53 kOK = 0,
54 kUnSupportedMethod,
55 kDataError,
56 kCRCError
57 };
58 }
59 }
60 namespace NUpdate
61 {
62 namespace NOperationResult
63 {
64 enum
65 {
66 kOK = 0,
67 kError
68 };
69 }
70 }
71 }
72
73 #define INTERFACE_IArchiveOpenCallback(x) \
74 STDMETHOD(SetTotal)(const UInt64 *files, const UInt64 *bytes) x; \
75 STDMETHOD(SetCompleted)(const UInt64 *files, const UInt64 *bytes) x; \
76
77 ARCHIVE_INTERFACE(IArchiveOpenCallback, 0x10)
78 {
79 INTERFACE_IArchiveOpenCallback(PURE);
80 };
81
82
83 #define INTERFACE_IArchiveExtractCallback(x) \
84 INTERFACE_IProgress(x) \
85 /* GetStream OUT: S_OK - OK, S_FALSE - skeep this file */ \
86 STDMETHOD(GetStream)(UInt32 index, ISequentialOutStream **outStream, Int32 as kExtractMode) x; \
87 STDMETHOD(PrepareOperation)(Int32 askExtractMode) x; \
88 STDMETHOD(SetOperationResult)(Int32 resultEOperationResult) x; \
89
90 ARCHIVE_INTERFACE_SUB(IArchiveExtractCallback, IProgress, 0x20)
91 {
92 INTERFACE_IArchiveExtractCallback(PURE)
93 };
94
95
96 #define INTERFACE_IArchiveOpenVolumeCallback(x) \
97 STDMETHOD(GetProperty)(PROPID propID, PROPVARIANT *value) x; \
98 STDMETHOD(GetStream)(const wchar_t *name, IInStream **inStream) x; \
99
100 ARCHIVE_INTERFACE(IArchiveOpenVolumeCallback, 0x30)
101 {
102 INTERFACE_IArchiveOpenVolumeCallback(PURE);
103 };
104
105
106 ARCHIVE_INTERFACE(IInArchiveGetStream, 0x40)
107 {
108 STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **stream) PURE;
109 };
110
111
112 ARCHIVE_INTERFACE(IArchiveOpenSetSubArchiveName, 0x50)
113 {
114 STDMETHOD(SetSubArchiveName)(const wchar_t *name) PURE;
115 };
116
117
118 /*
119 IInArchive::Extract:
120 indices must be sorted
121 numItems = 0xFFFFFFFF means "all files"
122 testMode != 0 means "test files without writing to outStream"
123 */
124
125 #define INTERFACE_IInArchive(x) \
126 STDMETHOD(Open)(IInStream *stream, const UInt64 *maxCheckStartPosition, IArchi veOpenCallback *openArchiveCallback) x; \
127 STDMETHOD(Close)() x; \
128 STDMETHOD(GetNumberOfItems)(UInt32 *numItems) x; \
129 STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) x; \
130 STDMETHOD(Extract)(const UInt32* indices, UInt32 numItems, Int32 testMode, IAr chiveExtractCallback *extractCallback) x; \
131 STDMETHOD(GetArchiveProperty)(PROPID propID, PROPVARIANT *value) x; \
132 STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties) x; \
133 STDMETHOD(GetPropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VARTYPE * varType) x; \
134 STDMETHOD(GetNumberOfArchiveProperties)(UInt32 *numProperties) x; \
135 STDMETHOD(GetArchivePropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VA RTYPE *varType) x;
136
137 ARCHIVE_INTERFACE(IInArchive, 0x60)
138 {
139 INTERFACE_IInArchive(PURE)
140 };
141
142
143 #define INTERFACE_IArchiveUpdateCallback(x) \
144 INTERFACE_IProgress(x); \
145 STDMETHOD(GetUpdateItemInfo)(UInt32 index, \
146 Int32 *newData, /*1 - new data, 0 - old data */ \
147 Int32 *newProperties, /* 1 - new properties, 0 - old properties */ \
148 UInt32 *indexInArchive /* -1 if there is no in archive, or if doesn't matt er */ \
149 ) x; \
150 STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) x; \
151 STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **inStream) x; \
152 STDMETHOD(SetOperationResult)(Int32 operationResult) x; \
153
154 ARCHIVE_INTERFACE_SUB(IArchiveUpdateCallback, IProgress, 0x80)
155 {
156 INTERFACE_IArchiveUpdateCallback(PURE);
157 };
158
159 #define INTERFACE_IArchiveUpdateCallback2(x) \
160 INTERFACE_IArchiveUpdateCallback(x) \
161 STDMETHOD(GetVolumeSize)(UInt32 index, UInt64 *size) x; \
162 STDMETHOD(GetVolumeStream)(UInt32 index, ISequentialOutStream **volumeStream) x; \
163
164 ARCHIVE_INTERFACE_SUB(IArchiveUpdateCallback2, IArchiveUpdateCallback, 0x82)
165 {
166 INTERFACE_IArchiveUpdateCallback2(PURE);
167 };
168
169
170 #define INTERFACE_IOutArchive(x) \
171 STDMETHOD(UpdateItems)(ISequentialOutStream *outStream, UInt32 numItems, IArch iveUpdateCallback *updateCallback) x; \
172 STDMETHOD(GetFileTimeType)(UInt32 *type) x;
173
174 ARCHIVE_INTERFACE(IOutArchive, 0xA0)
175 {
176 INTERFACE_IOutArchive(PURE)
177 };
178
179
180 ARCHIVE_INTERFACE(ISetProperties, 0x03)
181 {
182 STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int 32 numProperties) PURE;
183 };
184
185
186 #define IMP_IInArchive_GetProp(k) \
187 (UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) \
188 { if(index >= sizeof(k) / sizeof(k[0])) return E_INVALIDARG; \
189 const STATPROPSTG &srcItem = k[index]; \
190 *propID = srcItem.propid; *varType = srcItem.vt; *name = 0; return S_OK; } \
191
192 #define IMP_IInArchive_GetProp_WITH_NAME(k) \
193 (UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) \
194 { if(index >= sizeof(k) / sizeof(k[0])) return E_INVALIDARG; \
195 const STATPROPSTG &srcItem = k[index]; \
196 *propID = srcItem.propid; *varType = srcItem.vt; \
197 if (srcItem.lpwstrName == 0) *name = 0; else *name = ::SysAllocString(srcIte m.lpwstrName); return S_OK; } \
198
199 #define IMP_IInArchive_Props \
200 STDMETHODIMP CHandler::GetNumberOfProperties(UInt32 *numProperties) \
201 { *numProperties = sizeof(kProps) / sizeof(kProps[0]); return S_OK; } \
202 STDMETHODIMP CHandler::GetPropertyInfo IMP_IInArchive_GetProp(kProps)
203
204 #define IMP_IInArchive_Props_WITH_NAME \
205 STDMETHODIMP CHandler::GetNumberOfProperties(UInt32 *numProperties) \
206 { *numProperties = sizeof(kProps) / sizeof(kProps[0]); return S_OK; } \
207 STDMETHODIMP CHandler::GetPropertyInfo IMP_IInArchive_GetProp_WITH_NAME(kProps )
208
209
210 #define IMP_IInArchive_ArcProps \
211 STDMETHODIMP CHandler::GetNumberOfArchiveProperties(UInt32 *numProperties) \
212 { *numProperties = sizeof(kArcProps) / sizeof(kArcProps[0]); return S_OK; } \
213 STDMETHODIMP CHandler::GetArchivePropertyInfo IMP_IInArchive_GetProp(kArcProps )
214
215 #define IMP_IInArchive_ArcProps_WITH_NAME \
216 STDMETHODIMP CHandler::GetNumberOfArchiveProperties(UInt32 *numProperties) \
217 { *numProperties = sizeof(kArcProps) / sizeof(kArcProps[0]); return S_OK; } \
218 STDMETHODIMP CHandler::GetArchivePropertyInfo IMP_IInArchive_GetProp_WITH_NAME (kArcProps)
219
220 #define IMP_IInArchive_ArcProps_NO \
221 STDMETHODIMP CHandler::GetNumberOfArchiveProperties(UInt32 *numProperties) \
222 { *numProperties = 0; return S_OK; } \
223 STDMETHODIMP CHandler::GetArchivePropertyInfo(UInt32, BSTR *, PROPID *, VARTYP E *) \
224 { return E_NOTIMPL; } \
225 STDMETHODIMP CHandler::GetArchiveProperty(PROPID, PROPVARIANT *value) \
226 { value->vt = VT_EMPTY; return S_OK; }
227
228 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698