3 #ifndef __OPEN_ARCHIVE_H
\r
4 #define __OPEN_ARCHIVE_H
\r
6 #include "Common/MyString.h"
\r
8 #include "Windows/FileFind.h"
\r
10 #include "../../Archive/IArchive.h"
\r
12 #include "ArchiveOpenCallback.h"
\r
13 #include "LoadCodecs.h"
\r
15 HRESULT GetArchiveItemBoolProp(IInArchive *archive, UInt32 index, PROPID propID, bool &result);
\r
16 HRESULT IsArchiveItemFolder(IInArchive *archive, UInt32 index, bool &result);
\r
20 CMyComPtr<IInArchive> Archive;
\r
22 UString DefaultName;
\r
27 UString ErrorMessage;
\r
29 CArc(): MTimeDefined(false) {}
\r
31 HRESULT GetItemPath(UInt32 index, UString &result) const;
\r
32 HRESULT GetItemMTime(UInt32 index, FILETIME &ft, bool &defined) const;
\r
33 HRESULT IsItemAnti(UInt32 index, bool &result) const
\r
34 { return GetArchiveItemBoolProp(Archive, index, kpidIsAnti, result); }
\r
40 ISequentialInStream *seqStream,
\r
41 IArchiveOpenCallback *callback);
\r
43 HRESULT OpenStreamOrFile(
\r
48 IArchiveOpenCallback *callback);
\r
53 CObjectVector<CArc> Arcs;
\r
54 UStringVector VolumePaths;
\r
58 CArchiveLink(): VolumesSize(0), IsOpen(false) {}
\r
61 ~CArchiveLink() { Release(); }
\r
63 IInArchive *GetArchive() const { return Arcs.Back().Archive; }
\r
67 const CIntVector &formatIndices,
\r
70 const UString &filePath,
\r
71 IArchiveOpenCallback *callback);
\r
75 const CIntVector &formatIndices,
\r
78 const UString &filePath,
\r
79 IOpenCallbackUI *callbackUI);
\r
83 const UString &filePath,
\r
84 IArchiveOpenCallback *callback);
\r