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