1 // HandlerOut.h
2 
3 #ifndef __HANDLER_OUT_H
4 #define __HANDLER_OUT_H
5 
6 #include "../../../Common/MyString.h"
7 #include "../../Common/MethodProps.h"
8 
9 namespace NArchive {
10 
11 struct COneMethodInfo
12 {
13   CObjectVector<CProp> Props;
14   UString MethodName;
15 
16   bool IsLzma() const;
17 };
18 
19 class COutHandler
20 {
21 public:
22   HRESULT SetProperty(const wchar_t *name, const PROPVARIANT &value);
23 
24   HRESULT SetSolidSettings(const UString &s);
25   HRESULT SetSolidSettings(const PROPVARIANT &value);
26 
27   #ifndef _7ZIP_ST
28   UInt32 _numThreads;
29   #endif
30 
31   UInt32 _crcSize;
32 
33   CObjectVector<COneMethodInfo> _methods;
34   bool _removeSfxBlock;
35 
36   UInt64 _numSolidFiles;
37   UInt64 _numSolidBytes;
38   bool _numSolidBytesDefined;
39   bool _solidExtension;
40 
41   bool _compressHeaders;
42   bool _encryptHeadersSpecified;
43   bool _encryptHeaders;
44 
45   bool WriteCTime;
46   bool WriteATime;
47   bool WriteMTime;
48 
49   bool _autoFilter;
50   UInt32 _level;
51 
52   bool _volumeMode;
53 
54   HRESULT SetParam(COneMethodInfo &oneMethodInfo, const UString &name, const UString &value);
55   HRESULT SetParams(COneMethodInfo &oneMethodInfo, const UString &srcString);
56 
57   void SetCompressionMethod2(COneMethodInfo &oneMethodInfo
58       #ifndef _7ZIP_ST
59       , UInt32 numThreads
60       #endif
61       );
62 
InitSolidFiles()63   void InitSolidFiles() { _numSolidFiles = (UInt64)(Int64)(-1); }
InitSolidSize()64   void InitSolidSize()  { _numSolidBytes = (UInt64)(Int64)(-1); }
InitSolid()65   void InitSolid()
66   {
67     InitSolidFiles();
68     InitSolidSize();
69     _solidExtension = false;
70     _numSolidBytesDefined = false;
71   }
72 
73   void Init();
74 
COutHandler()75   COutHandler() { Init(); }
76 
77   void BeforeSetProperty();
78 
79   UInt32 minNumber;
80   UInt32 numProcessors;
81   UInt32 mainDicSize;
82   UInt32 mainDicMethodIndex;
83 };
84 
85 }
86 
87 #endif
88