Home | History | Annotate | Download | only in 7z
      1 // 7z/Handler.h
      2 
      3 #ifndef __7Z_HANDLER_H
      4 #define __7Z_HANDLER_H
      5 
      6 #include "../../ICoder.h"
      7 #include "../IArchive.h"
      8 
      9 #include "../../Common/CreateCoder.h"
     10 
     11 #ifndef EXTRACT_ONLY
     12 #include "../Common/HandlerOut.h"
     13 #endif
     14 
     15 #include "7zCompressionMode.h"
     16 #include "7zIn.h"
     17 
     18 namespace NArchive {
     19 namespace N7z {
     20 
     21 #ifndef __7Z_SET_PROPERTIES
     22 
     23 #ifdef EXTRACT_ONLY
     24 #if !defined(_7ZIP_ST) && !defined(_SFX)
     25 #define __7Z_SET_PROPERTIES
     26 #endif
     27 #else
     28 #define __7Z_SET_PROPERTIES
     29 #endif
     30 
     31 #endif
     32 
     33 
     34 class CHandler:
     35   #ifndef EXTRACT_ONLY
     36   public NArchive::COutHandler,
     37   #endif
     38   public IInArchive,
     39   #ifdef __7Z_SET_PROPERTIES
     40   public ISetProperties,
     41   #endif
     42   #ifndef EXTRACT_ONLY
     43   public IOutArchive,
     44   #endif
     45   PUBLIC_ISetCompressCodecsInfo
     46   public CMyUnknownImp
     47 {
     48 public:
     49   MY_QUERYINTERFACE_BEGIN2(IInArchive)
     50   #ifdef __7Z_SET_PROPERTIES
     51   MY_QUERYINTERFACE_ENTRY(ISetProperties)
     52   #endif
     53   #ifndef EXTRACT_ONLY
     54   MY_QUERYINTERFACE_ENTRY(IOutArchive)
     55   #endif
     56   QUERY_ENTRY_ISetCompressCodecsInfo
     57   MY_QUERYINTERFACE_END
     58   MY_ADDREF_RELEASE
     59 
     60   INTERFACE_IInArchive(;)
     61 
     62   #ifdef __7Z_SET_PROPERTIES
     63   STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProperties);
     64   #endif
     65 
     66   #ifndef EXTRACT_ONLY
     67   INTERFACE_IOutArchive(;)
     68   #endif
     69 
     70   DECL_ISetCompressCodecsInfo
     71 
     72   CHandler();
     73 
     74 private:
     75   CMyComPtr<IInStream> _inStream;
     76   NArchive::N7z::CArchiveDatabaseEx _db;
     77   #ifndef _NO_CRYPTO
     78   bool _passwordIsDefined;
     79   #endif
     80 
     81   #ifdef EXTRACT_ONLY
     82 
     83   #ifdef __7Z_SET_PROPERTIES
     84   UInt32 _numThreads;
     85   #endif
     86 
     87   UInt32 _crcSize;
     88 
     89   #else
     90 
     91   CRecordVector<CBind> _binds;
     92 
     93   HRESULT SetCompressionMethod(CCompressionMethodMode &method,
     94       CObjectVector<COneMethodInfo> &methodsInfo
     95       #ifndef _7ZIP_ST
     96       , UInt32 numThreads
     97       #endif
     98       );
     99 
    100   HRESULT SetCompressionMethod(
    101       CCompressionMethodMode &method,
    102       CCompressionMethodMode &headerMethod);
    103 
    104   #endif
    105 
    106   bool IsEncrypted(UInt32 index2) const;
    107   #ifndef _SFX
    108 
    109   CRecordVector<UInt64> _fileInfoPopIDs;
    110   void FillPopIDs();
    111 
    112   #endif
    113 
    114   DECL_EXTERNAL_CODECS_VARS
    115 };
    116 
    117 }}
    118 
    119 #endif
    120