other-licenses/7zstub/src/7zip/Archive/7z/7zHandler.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/other-licenses/7zstub/src/7zip/Archive/7z/7zHandler.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,234 @@
     1.4 +// 7z/Handler.h
     1.5 +
     1.6 +#ifndef __7Z_HANDLER_H
     1.7 +#define __7Z_HANDLER_H
     1.8 +
     1.9 +#include "../IArchive.h"
    1.10 +#include "7zIn.h"
    1.11 +
    1.12 +#include "7zCompressionMode.h"
    1.13 +
    1.14 +#ifndef _SFX
    1.15 +#include "7zMethods.h"
    1.16 +#endif
    1.17 +
    1.18 +#ifdef COMPRESS_MT
    1.19 +#include "../../../Windows/System.h"
    1.20 +#endif
    1.21 +
    1.22 +namespace NArchive {
    1.23 +namespace N7z {
    1.24 +
    1.25 +#ifdef _7Z_VOL
    1.26 +struct CRef
    1.27 +{
    1.28 +  int VolumeIndex;
    1.29 +  int ItemIndex;
    1.30 +};
    1.31 +
    1.32 +/*
    1.33 +struct CRef2
    1.34 +{
    1.35 +  CRecordVector<CRef> Refs;
    1.36 +  UInt64 UnPackSize;
    1.37 +  UInt64 PackSize;
    1.38 +  UInt64 StartPos;
    1.39 +  CRef2(): UnPackSize(0), PackSize(0), StartPos(0) {}
    1.40 +};
    1.41 +*/
    1.42 +
    1.43 +struct CVolume
    1.44 +{
    1.45 +  int StartRef2Index;
    1.46 +  CMyComPtr<IInStream> Stream;
    1.47 +  CArchiveDatabaseEx Database;
    1.48 +};
    1.49 +#endif
    1.50 +
    1.51 +#ifndef EXTRACT_ONLY
    1.52 +
    1.53 +struct COneMethodInfo
    1.54 +{
    1.55 +  CObjectVector<CProperty> CoderProperties;
    1.56 +  UString MethodName;
    1.57 +};
    1.58 +#endif
    1.59 +
    1.60 +// {23170F69-40C1-278A-1000-000110070000}
    1.61 +DEFINE_GUID(CLSID_CFormat7z, 
    1.62 +  0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x07, 0x00, 0x00);
    1.63 +
    1.64 +#ifndef __7Z_SET_PROPERTIES
    1.65 +
    1.66 +#ifdef EXTRACT_ONLY
    1.67 +#ifdef COMPRESS_MT
    1.68 +#define __7Z_SET_PROPERTIES
    1.69 +#endif
    1.70 +#else 
    1.71 +#define __7Z_SET_PROPERTIES
    1.72 +#endif
    1.73 +
    1.74 +#endif
    1.75 +
    1.76 +
    1.77 +class CHandler: 
    1.78 +  public IInArchive,
    1.79 +  #ifdef _7Z_VOL
    1.80 +  public IInArchiveGetStream,
    1.81 +  #endif
    1.82 +  #ifdef __7Z_SET_PROPERTIES
    1.83 +  public ISetProperties, 
    1.84 +  #endif
    1.85 +  #ifndef EXTRACT_ONLY
    1.86 +  public IOutArchive, 
    1.87 +  #endif
    1.88 +  public CMyUnknownImp
    1.89 +{
    1.90 +public:
    1.91 +  MY_QUERYINTERFACE_BEGIN
    1.92 +  #ifdef _7Z_VOL
    1.93 +  MY_QUERYINTERFACE_ENTRY(IInArchiveGetStream)
    1.94 +  #endif
    1.95 +  #ifdef __7Z_SET_PROPERTIES
    1.96 +  MY_QUERYINTERFACE_ENTRY(ISetProperties)
    1.97 +  #endif
    1.98 +  #ifndef EXTRACT_ONLY
    1.99 +  MY_QUERYINTERFACE_ENTRY(IOutArchive)
   1.100 +  #endif
   1.101 +  MY_QUERYINTERFACE_END
   1.102 +  MY_ADDREF_RELEASE
   1.103 +
   1.104 +  STDMETHOD(Open)(IInStream *stream, 
   1.105 +      const UInt64 *maxCheckStartPosition,
   1.106 +      IArchiveOpenCallback *openArchiveCallback);  
   1.107 +  STDMETHOD(Close)();  
   1.108 +  
   1.109 +  STDMETHOD(GetNumberOfItems)(UInt32 *numItems);  
   1.110 +  STDMETHOD(GetProperty)(UInt32 index, PROPID propID,  PROPVARIANT *value);
   1.111 +  STDMETHOD(Extract)(const UInt32* indices, UInt32 numItems, 
   1.112 +      Int32 testMode, IArchiveExtractCallback *extractCallback);
   1.113 +
   1.114 +  STDMETHOD(GetArchiveProperty)(PROPID propID, PROPVARIANT *value);
   1.115 +
   1.116 +  STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties);  
   1.117 +  STDMETHOD(GetPropertyInfo)(UInt32 index,     
   1.118 +      BSTR *name, PROPID *propID, VARTYPE *varType);
   1.119 +
   1.120 +  STDMETHOD(GetNumberOfArchiveProperties)(UInt32 *numProperties);  
   1.121 +  STDMETHOD(GetArchivePropertyInfo)(UInt32 index,     
   1.122 +      BSTR *name, PROPID *propID, VARTYPE *varType);
   1.123 +
   1.124 +  #ifdef _7Z_VOL
   1.125 +  STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **stream);  
   1.126 +  #endif
   1.127 +
   1.128 +  #ifdef __7Z_SET_PROPERTIES
   1.129 +  STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProperties);
   1.130 +  #endif
   1.131 +
   1.132 +  #ifndef EXTRACT_ONLY
   1.133 +  // IOutArchiveHandler
   1.134 +  STDMETHOD(UpdateItems)(ISequentialOutStream *outStream, UInt32 numItems,
   1.135 +      IArchiveUpdateCallback *updateCallback);
   1.136 +
   1.137 +  STDMETHOD(GetFileTimeType)(UInt32 *type);  
   1.138 +
   1.139 +  // ISetProperties
   1.140 +  
   1.141 +  HRESULT SetSolidSettings(const UString &s);
   1.142 +  HRESULT SetSolidSettings(const PROPVARIANT &value);
   1.143 +  #endif
   1.144 +
   1.145 +  CHandler();
   1.146 +
   1.147 +private:
   1.148 +  #ifdef _7Z_VOL
   1.149 +  CObjectVector<CVolume> _volumes;
   1.150 +  CObjectVector<CRef> _refs;
   1.151 +  #else
   1.152 +  CMyComPtr<IInStream> _inStream;
   1.153 +  NArchive::N7z::CArchiveDatabaseEx _database;
   1.154 +  #endif
   1.155 +
   1.156 +  #ifdef COMPRESS_MT
   1.157 +  UInt32 _numThreads;
   1.158 +  #endif
   1.159 +
   1.160 +  #ifndef EXTRACT_ONLY
   1.161 +  CObjectVector<COneMethodInfo> _methods;
   1.162 +  CRecordVector<CBind> _binds;
   1.163 +  bool _removeSfxBlock;
   1.164 +  UInt64 _numSolidFiles; 
   1.165 +  UInt64 _numSolidBytes;
   1.166 +  bool _numSolidBytesDefined;
   1.167 +  bool _solidExtension;
   1.168 +
   1.169 +  bool _compressHeaders;
   1.170 +  bool _compressHeadersFull;
   1.171 +  bool _encryptHeaders;
   1.172 +
   1.173 +  bool _autoFilter;
   1.174 +  UInt32 _level;
   1.175 +
   1.176 +  bool _volumeMode;
   1.177 +
   1.178 +
   1.179 +  HRESULT SetParam(COneMethodInfo &oneMethodInfo, const UString &name, const UString &value);
   1.180 +  HRESULT SetParams(COneMethodInfo &oneMethodInfo, const UString &srcString);
   1.181 +
   1.182 +  HRESULT SetPassword(CCompressionMethodMode &methodMode,
   1.183 +      IArchiveUpdateCallback *updateCallback);
   1.184 +
   1.185 +  HRESULT SetCompressionMethod(CCompressionMethodMode &method,
   1.186 +      CObjectVector<COneMethodInfo> &methodsInfo
   1.187 +      #ifdef COMPRESS_MT
   1.188 +      , UInt32 numThreads
   1.189 +      #endif
   1.190 +      );
   1.191 +
   1.192 +  HRESULT SetCompressionMethod(
   1.193 +      CCompressionMethodMode &method,
   1.194 +      CCompressionMethodMode &headerMethod);
   1.195 +
   1.196 +  #endif
   1.197 +  
   1.198 +  #ifndef _SFX
   1.199 +
   1.200 +  CRecordVector<UInt64> _fileInfoPopIDs;
   1.201 +  void FillPopIDs();
   1.202 +
   1.203 +  #endif
   1.204 +
   1.205 +  #ifndef EXTRACT_ONLY
   1.206 +
   1.207 +  void InitSolidFiles() { _numSolidFiles = UInt64(Int64(-1)); }
   1.208 +  void InitSolidSize()  { _numSolidBytes = UInt64(Int64(-1)); }
   1.209 +  void InitSolid()
   1.210 +  {
   1.211 +    InitSolidFiles();
   1.212 +    InitSolidSize();
   1.213 +    _solidExtension = false;
   1.214 +    _numSolidBytesDefined = false;
   1.215 +  }
   1.216 +
   1.217 +  void Init()
   1.218 +  {
   1.219 +    _removeSfxBlock = false;
   1.220 +    _compressHeaders = true;
   1.221 +    _compressHeadersFull = true;
   1.222 +    _encryptHeaders = false;
   1.223 +    #ifdef COMPRESS_MT
   1.224 +    _numThreads = NWindows::NSystem::GetNumberOfProcessors();
   1.225 +    #endif
   1.226 +
   1.227 +    _level = 5;
   1.228 +    _autoFilter = true;
   1.229 +    _volumeMode = false;
   1.230 +    InitSolid();
   1.231 +  }
   1.232 +  #endif
   1.233 +};
   1.234 +
   1.235 +}}
   1.236 +
   1.237 +#endif

mercurial