other-licenses/7zstub/src/7zip/Archive/IArchive.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // IArchive.h
     3 #ifndef __IARCHIVE_H
     4 #define __IARCHIVE_H
     6 #include "../IStream.h"
     7 #include "../IProgress.h"
     8 #include "../PropID.h"
    10 // MIDL_INTERFACE("23170F69-40C1-278A-0000-000600xx0000")
    11 #define ARCHIVE_INTERFACE_SUB(i, base,  x) \
    12 DEFINE_GUID(IID_ ## i, \
    13 0x23170F69, 0x40C1, 0x278A, 0x00, 0x00, 0x00, 0x06, 0x00, x, 0x00, 0x00); \
    14 struct i: public base
    16 #define ARCHIVE_INTERFACE(i, x) ARCHIVE_INTERFACE_SUB(i, IUnknown, x)
    18 namespace NFileTimeType
    19 {
    20   enum EEnum
    21   {
    22     kWindows,
    23     kUnix,
    24     kDOS
    25   };
    26 }
    28 namespace NArchive
    29 {
    30   enum 
    31   {
    32     kName = 0,
    33     kClassID,
    34     kExtension,
    35     kAddExtension,
    36     kUpdate,
    37     kKeepName,
    38     kStartSignature,
    39     kFinishSignature,
    40     kAssociate
    41   };
    43   namespace NExtract
    44   {
    45     namespace NAskMode
    46     {
    47       enum 
    48       {
    49         kExtract = 0,
    50         kTest,
    51         kSkip,
    52       };
    53     }
    54     namespace NOperationResult
    55     {
    56       enum 
    57       {
    58         kOK = 0,
    59         kUnSupportedMethod,
    60         kDataError,
    61         kCRCError,
    62       };
    63     }
    64   }
    65   namespace NUpdate
    66   {
    67     namespace NOperationResult
    68     {
    69       enum 
    70       {
    71         kOK = 0,
    72         kError,
    73       };
    74     }
    75   }
    76 }
    78 ARCHIVE_INTERFACE(IArchiveOpenCallback, 0x10)
    79 {
    80   STDMETHOD(SetTotal)(const UInt64 *files, const UInt64 *bytes) PURE;
    81   STDMETHOD(SetCompleted)(const UInt64 *files, const UInt64 *bytes) PURE;
    82 };
    85 ARCHIVE_INTERFACE_SUB(IArchiveExtractCallback, IProgress, 0x20)
    86 {
    87   STDMETHOD(GetStream)(UInt32 index, ISequentialOutStream **outStream, 
    88       Int32 askExtractMode) PURE;
    89   // GetStream OUT: S_OK - OK, S_FALSE - skeep this file
    90   STDMETHOD(PrepareOperation)(Int32 askExtractMode) PURE;
    91   STDMETHOD(SetOperationResult)(Int32 resultEOperationResult) PURE;
    92 };
    95 ARCHIVE_INTERFACE(IArchiveOpenVolumeCallback, 0x30)
    96 {
    97   STDMETHOD(GetProperty)(PROPID propID, PROPVARIANT *value) PURE;
    98   STDMETHOD(GetStream)(const wchar_t *name, IInStream **inStream) PURE;
    99 };
   102 ARCHIVE_INTERFACE(IInArchiveGetStream, 0x40)
   103 {
   104   STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **stream) PURE;  
   105 };
   108 ARCHIVE_INTERFACE(IArchiveOpenSetSubArchiveName, 0x50)
   109 {
   110   STDMETHOD(SetSubArchiveName)(const wchar_t *name) PURE;
   111 };
   114 ARCHIVE_INTERFACE(IInArchive, 0x60)
   115 {
   116   STDMETHOD(Open)(IInStream *stream, const UInt64 *maxCheckStartPosition,
   117       IArchiveOpenCallback *openArchiveCallback) PURE;  
   118   STDMETHOD(Close)() PURE;  
   119   STDMETHOD(GetNumberOfItems)(UInt32 *numItems) PURE;  
   120   STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) PURE;
   121   STDMETHOD(Extract)(const UInt32* indices, UInt32 numItems, 
   122       Int32 testMode, IArchiveExtractCallback *extractCallback) PURE;
   123   // indices must be sorted 
   124   // numItems = 0xFFFFFFFF means all files
   125   // testMode != 0 means "test files operation"
   127   STDMETHOD(GetArchiveProperty)(PROPID propID, PROPVARIANT *value) PURE;
   129   STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties) PURE;  
   130   STDMETHOD(GetPropertyInfo)(UInt32 index,     
   131       BSTR *name, PROPID *propID, VARTYPE *varType) PURE;
   133   STDMETHOD(GetNumberOfArchiveProperties)(UInt32 *numProperties) PURE;  
   134   STDMETHOD(GetArchivePropertyInfo)(UInt32 index,     
   135       BSTR *name, PROPID *propID, VARTYPE *varType) PURE;
   136 };
   139 ARCHIVE_INTERFACE_SUB(IArchiveUpdateCallback, IProgress, 0x80)
   140 {
   141   STDMETHOD(GetUpdateItemInfo)(UInt32 index, 
   142       Int32 *newData, // 1 - new data, 0 - old data
   143       Int32 *newProperties, // 1 - new properties, 0 - old properties
   144       UInt32 *indexInArchive // -1 if there is no in archive, or if doesn't matter
   145       ) PURE;
   146   STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) PURE;
   147   STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **inStream) PURE;
   148   STDMETHOD(SetOperationResult)(Int32 operationResult) PURE;
   149 };
   152 ARCHIVE_INTERFACE_SUB(IArchiveUpdateCallback2, IArchiveUpdateCallback, 0x82)
   153 {
   154   STDMETHOD(GetVolumeSize)(UInt32 index, UInt64 *size) PURE;
   155   STDMETHOD(GetVolumeStream)(UInt32 index, ISequentialOutStream **volumeStream) PURE;
   156 };
   159 ARCHIVE_INTERFACE(IOutArchive, 0xA0)
   160 {
   161   STDMETHOD(UpdateItems)(ISequentialOutStream *outStream, UInt32 numItems,
   162       IArchiveUpdateCallback *updateCallback) PURE;
   163   STDMETHOD(GetFileTimeType)(UInt32 *type) PURE;  
   164 };
   167 ARCHIVE_INTERFACE(ISetProperties, 0x03)
   168 {
   169   STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProperties) PURE;
   170 };
   173 #endif

mercurial