3 #ifndef __RAR_HANDLER_H
\r
4 #define __RAR_HANDLER_H
\r
6 #include "../IArchive.h"
\r
8 #include "../../Common/CreateCoder.h"
\r
11 #include "RarVolumeInStream.h"
\r
13 namespace NArchive {
\r
18 PUBLIC_ISetCompressCodecsInfo
\r
19 public CMyUnknownImp
\r
21 CRecordVector<CRefItem> _refItems;
\r
22 CObjectVector<CItemEx> _items;
\r
23 CObjectVector<CInArchive> _archives;
\r
24 NArchive::NRar::CInArchiveInfo _archiveInfo;
\r
25 AString _errorMessage;
\r
27 DECL_EXTERNAL_CODECS_VARS
\r
29 UInt64 GetPackSize(int refIndex) const;
\r
31 bool IsSolid(int refIndex)
\r
33 const CItemEx &item = _items[_refItems[refIndex].ItemIndex];
\r
34 if (item.UnPackVersion < 20)
\r
36 if (_archiveInfo.IsSolid())
\r
37 return (refIndex > 0);
\r
40 return item.IsSolid();
\r
42 void AddErrorMessage(const AString &s)
\r
44 if (!_errorMessage.IsEmpty())
\r
45 _errorMessage += '\n';
\r
49 HRESULT Open2(IInStream *stream,
\r
50 const UInt64 *maxCheckStartPosition,
\r
51 IArchiveOpenCallback *openCallback);
\r
54 MY_QUERYINTERFACE_BEGIN2(IInArchive)
\r
55 QUERY_ENTRY_ISetCompressCodecsInfo
\r
56 MY_QUERYINTERFACE_END
\r
59 INTERFACE_IInArchive(;)
\r
61 DECL_ISetCompressCodecsInfo
\r