michael@0: // OpenArchive.h michael@0: michael@0: #ifndef __OPENARCHIVE_H michael@0: #define __OPENARCHIVE_H michael@0: michael@0: #include "Common/String.h" michael@0: #include "Windows/FileFind.h" michael@0: michael@0: #include "../../Archive/IArchive.h" michael@0: #include "ArchiverInfo.h" michael@0: #include "ArchiveOpenCallback.h" michael@0: michael@0: #ifndef EXCLUDE_COM michael@0: #include "Windows/DLL.h" michael@0: #endif michael@0: michael@0: HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, UString &result); michael@0: HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, const UString &defaultName, UString &result); michael@0: HRESULT GetArchiveItemFileTime(IInArchive *archive, UInt32 index, michael@0: const FILETIME &defaultFileTime, FILETIME &fileTime); michael@0: HRESULT IsArchiveItemFolder(IInArchive *archive, UInt32 index, bool &result); michael@0: HRESULT IsArchiveItemAnti(IInArchive *archive, UInt32 index, bool &result); michael@0: michael@0: struct ISetSubArchiveName michael@0: { michael@0: virtual void SetSubArchiveName(const wchar_t *name) = 0; michael@0: }; michael@0: michael@0: HRESULT OpenArchive( michael@0: IInStream *inStream, michael@0: const UString &fileName, michael@0: #ifndef EXCLUDE_COM michael@0: HMODULE *module, michael@0: #endif michael@0: IInArchive **archiveResult, michael@0: CArchiverInfo &archiverInfoResult, michael@0: UString &defaultItemName, michael@0: IArchiveOpenCallback *openArchiveCallback); michael@0: michael@0: HRESULT OpenArchive(const UString &filePath, michael@0: #ifndef EXCLUDE_COM michael@0: HMODULE *module, michael@0: #endif michael@0: IInArchive **archive, michael@0: CArchiverInfo &archiverInfo, michael@0: UString &defaultItemName, michael@0: IArchiveOpenCallback *openArchiveCallback); michael@0: michael@0: HRESULT OpenArchive(const UString &filePath, michael@0: #ifndef EXCLUDE_COM michael@0: HMODULE *module0, michael@0: HMODULE *module1, michael@0: #endif michael@0: IInArchive **archive0, michael@0: IInArchive **archive1, michael@0: CArchiverInfo &archiverInfo0, michael@0: CArchiverInfo &archiverInfo1, michael@0: UString &defaultItemName0, michael@0: UString &defaultItemName1, michael@0: IArchiveOpenCallback *openArchiveCallback); michael@0: michael@0: michael@0: HRESULT ReOpenArchive(IInArchive *archive, michael@0: const UString &fileName); michael@0: michael@0: HRESULT MyOpenArchive(const UString &archiveName, michael@0: #ifndef EXCLUDE_COM michael@0: HMODULE *module, michael@0: #endif michael@0: IInArchive **archive, michael@0: UString &defaultItemName, michael@0: IOpenCallbackUI *openCallbackUI); michael@0: michael@0: HRESULT MyOpenArchive(const UString &archiveName, michael@0: #ifndef EXCLUDE_COM michael@0: HMODULE *module0, michael@0: HMODULE *module1, michael@0: #endif michael@0: IInArchive **archive0, michael@0: IInArchive **archive1, michael@0: UString &defaultItemName0, michael@0: UString &defaultItemName1, michael@0: UStringVector &volumePaths, michael@0: IOpenCallbackUI *openCallbackUI); michael@0: michael@0: struct CArchiveLink michael@0: { michael@0: #ifndef EXCLUDE_COM michael@0: NWindows::NDLL::CLibrary Library0; michael@0: NWindows::NDLL::CLibrary Library1; michael@0: #endif michael@0: CMyComPtr Archive0; michael@0: CMyComPtr Archive1; michael@0: UString DefaultItemName0; michael@0: UString DefaultItemName1; michael@0: michael@0: CArchiverInfo ArchiverInfo0; michael@0: CArchiverInfo ArchiverInfo1; michael@0: michael@0: UStringVector VolumePaths; michael@0: michael@0: int GetNumLevels() const michael@0: { michael@0: int result = 0; michael@0: if (Archive0) michael@0: { michael@0: result++; michael@0: if (Archive1) michael@0: result++; michael@0: } michael@0: return result; michael@0: } michael@0: michael@0: michael@0: IInArchive *GetArchive() { return Archive1 != 0 ? Archive1: Archive0; } michael@0: UString GetDefaultItemName() { return Archive1 != 0 ? DefaultItemName1: DefaultItemName0; } michael@0: const CArchiverInfo &GetArchiverInfo() { return Archive1 != 0 ? ArchiverInfo1: ArchiverInfo0; } michael@0: HRESULT Close(); michael@0: void Release(); michael@0: }; michael@0: michael@0: HRESULT OpenArchive(const UString &archiveName, michael@0: CArchiveLink &archiveLink, michael@0: IArchiveOpenCallback *openCallback); michael@0: michael@0: HRESULT MyOpenArchive(const UString &archiveName, michael@0: CArchiveLink &archiveLink, michael@0: IOpenCallbackUI *openCallbackUI); michael@0: michael@0: HRESULT ReOpenArchive(CArchiveLink &archiveLink, michael@0: const UString &fileName); michael@0: michael@0: #endif michael@0: