From 829409452d85cd6dd9dfc9151f109d6e13a2bb1c Mon Sep 17 00:00:00 2001 From: Igor Pavlov Date: Tue, 2 Jun 2009 00:00:00 +0000 Subject: 9.04 beta --- CPP/7zip/UI/Common/OpenArchive.h | 137 +++++++++++++++------------------------ 1 file changed, 53 insertions(+), 84 deletions(-) (limited to 'CPP/7zip/UI/Common/OpenArchive.h') diff --git a/CPP/7zip/UI/Common/OpenArchive.h b/CPP/7zip/UI/Common/OpenArchive.h index f1b4fda7..92103623 100755 --- a/CPP/7zip/UI/Common/OpenArchive.h +++ b/CPP/7zip/UI/Common/OpenArchive.h @@ -1,117 +1,86 @@ // OpenArchive.h -#ifndef __OPENARCHIVE_H -#define __OPENARCHIVE_H +#ifndef __OPEN_ARCHIVE_H +#define __OPEN_ARCHIVE_H #include "Common/MyString.h" + #include "Windows/FileFind.h" #include "../../Archive/IArchive.h" -#include "LoadCodecs.h" + #include "ArchiveOpenCallback.h" +#include "LoadCodecs.h" -HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, UString &result); -HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, const UString &defaultName, UString &result); -HRESULT GetArchiveItemFileTime(IInArchive *archive, UInt32 index, - const FILETIME &defaultFileTime, FILETIME &fileTime); -HRESULT IsArchiveItemProp(IInArchive *archive, UInt32 index, PROPID propID, bool &result); +HRESULT GetArchiveItemBoolProp(IInArchive *archive, UInt32 index, PROPID propID, bool &result); HRESULT IsArchiveItemFolder(IInArchive *archive, UInt32 index, bool &result); -HRESULT IsArchiveItemAnti(IInArchive *archive, UInt32 index, bool &result); -struct ISetSubArchiveName +struct CArc { - virtual void SetSubArchiveName(const wchar_t *name) = 0; -}; - -HRESULT OpenArchive( + CMyComPtr Archive; + UString Path; + UString DefaultName; + int FormatIndex; + int SubfileIndex; + FILETIME MTime; + bool MTimeDefined; + + CArc(): MTimeDefined(false) {} + + HRESULT GetItemPath(UInt32 index, UString &result) const; + HRESULT GetItemMTime(UInt32 index, FILETIME &ft, bool &defined) const; + HRESULT IsItemAnti(UInt32 index, bool &result) const + { return GetArchiveItemBoolProp(Archive, index, kpidIsAnti, result); } + + HRESULT OpenStream( CCodecs *codecs, - int arcTypeIndex, - IInStream *inStream, - const UString &fileName, - IInArchive **archiveResult, - int &formatIndex, - UString &defaultItemName, - IArchiveOpenCallback *openArchiveCallback); - -HRESULT OpenArchive( - CCodecs *codecs, - int arcTypeIndex, - const UString &filePath, - IInArchive **archive, - int &formatIndex, - UString &defaultItemName, - IArchiveOpenCallback *openArchiveCallback); + int formatIndex, + IInStream *stream, + ISequentialInStream *seqStream, + IArchiveOpenCallback *callback); -HRESULT OpenArchive( + HRESULT OpenStreamOrFile( CCodecs *codecs, - const CIntVector &formatIndices, - const UString &filePath, - IInArchive **archive0, - IInArchive **archive1, - int &formatIndex0, - int &formatIndex1, - UString &defaultItemName0, - UString &defaultItemName1, - IArchiveOpenCallback *openArchiveCallback); - - -HRESULT ReOpenArchive(IInArchive *archive, const UString &fileName, IArchiveOpenCallback *openArchiveCallback); + int formatIndex, + bool stdInMode, + IInStream *stream, + IArchiveOpenCallback *callback); +}; struct CArchiveLink { - CMyComPtr Archive0; - CMyComPtr Archive1; - UString DefaultItemName0; - UString DefaultItemName1; - - int FormatIndex0; - int FormatIndex1; - + CObjectVector Arcs; UStringVector VolumePaths; - - bool IsOpen; UInt64 VolumesSize; + bool IsOpen; - int GetNumLevels() const - { - int result = 0; - if (Archive0) - { - result++; - if (Archive1) - result++; - } - return result; - } - - CArchiveLink(): IsOpen(false), VolumesSize(0) {}; - - IInArchive *GetArchive() { return Archive1 != 0 ? Archive1: Archive0; } - UString GetDefaultItemName() { return Archive1 != 0 ? DefaultItemName1: DefaultItemName0; } - int GetArchiverIndex() const { return Archive1 != 0 ? FormatIndex1: FormatIndex0; } + CArchiveLink(): VolumesSize(0), IsOpen(false) {} HRESULT Close(); void Release(); -}; + ~CArchiveLink() { Release(); } + + IInArchive *GetArchive() const { return Arcs.Back().Archive; } -HRESULT OpenArchive( + HRESULT Open( CCodecs *codecs, const CIntVector &formatIndices, - const UString &archiveName, - CArchiveLink &archiveLink, - IArchiveOpenCallback *openCallback); + bool stdInMode, + IInStream *stream, + const UString &filePath, + IArchiveOpenCallback *callback); -HRESULT MyOpenArchive( + HRESULT Open2( CCodecs *codecs, const CIntVector &formatIndices, - const UString &archiveName, - CArchiveLink &archiveLink, - IOpenCallbackUI *openCallbackUI); + bool stdInMode, + IInStream *stream, + const UString &filePath, + IOpenCallbackUI *callbackUI); -HRESULT ReOpenArchive( + HRESULT ReOpen( CCodecs *codecs, - CArchiveLink &archiveLink, - const UString &fileName, - IArchiveOpenCallback *openCallback); + const UString &filePath, + IArchiveOpenCallback *callback); +}; #endif - -- cgit v1.2.3