1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/other-licenses/7zstub/src/7zip/UI/Common/OpenArchive.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,134 @@ 1.4 +// OpenArchive.h 1.5 + 1.6 +#ifndef __OPENARCHIVE_H 1.7 +#define __OPENARCHIVE_H 1.8 + 1.9 +#include "Common/String.h" 1.10 +#include "Windows/FileFind.h" 1.11 + 1.12 +#include "../../Archive/IArchive.h" 1.13 +#include "ArchiverInfo.h" 1.14 +#include "ArchiveOpenCallback.h" 1.15 + 1.16 +#ifndef EXCLUDE_COM 1.17 +#include "Windows/DLL.h" 1.18 +#endif 1.19 + 1.20 +HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, UString &result); 1.21 +HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, const UString &defaultName, UString &result); 1.22 +HRESULT GetArchiveItemFileTime(IInArchive *archive, UInt32 index, 1.23 + const FILETIME &defaultFileTime, FILETIME &fileTime); 1.24 +HRESULT IsArchiveItemFolder(IInArchive *archive, UInt32 index, bool &result); 1.25 +HRESULT IsArchiveItemAnti(IInArchive *archive, UInt32 index, bool &result); 1.26 + 1.27 +struct ISetSubArchiveName 1.28 +{ 1.29 + virtual void SetSubArchiveName(const wchar_t *name) = 0; 1.30 +}; 1.31 + 1.32 +HRESULT OpenArchive( 1.33 + IInStream *inStream, 1.34 + const UString &fileName, 1.35 + #ifndef EXCLUDE_COM 1.36 + HMODULE *module, 1.37 + #endif 1.38 + IInArchive **archiveResult, 1.39 + CArchiverInfo &archiverInfoResult, 1.40 + UString &defaultItemName, 1.41 + IArchiveOpenCallback *openArchiveCallback); 1.42 + 1.43 +HRESULT OpenArchive(const UString &filePath, 1.44 + #ifndef EXCLUDE_COM 1.45 + HMODULE *module, 1.46 + #endif 1.47 + IInArchive **archive, 1.48 + CArchiverInfo &archiverInfo, 1.49 + UString &defaultItemName, 1.50 + IArchiveOpenCallback *openArchiveCallback); 1.51 + 1.52 +HRESULT OpenArchive(const UString &filePath, 1.53 + #ifndef EXCLUDE_COM 1.54 + HMODULE *module0, 1.55 + HMODULE *module1, 1.56 + #endif 1.57 + IInArchive **archive0, 1.58 + IInArchive **archive1, 1.59 + CArchiverInfo &archiverInfo0, 1.60 + CArchiverInfo &archiverInfo1, 1.61 + UString &defaultItemName0, 1.62 + UString &defaultItemName1, 1.63 + IArchiveOpenCallback *openArchiveCallback); 1.64 + 1.65 + 1.66 +HRESULT ReOpenArchive(IInArchive *archive, 1.67 + const UString &fileName); 1.68 + 1.69 +HRESULT MyOpenArchive(const UString &archiveName, 1.70 + #ifndef EXCLUDE_COM 1.71 + HMODULE *module, 1.72 + #endif 1.73 + IInArchive **archive, 1.74 + UString &defaultItemName, 1.75 + IOpenCallbackUI *openCallbackUI); 1.76 + 1.77 +HRESULT MyOpenArchive(const UString &archiveName, 1.78 + #ifndef EXCLUDE_COM 1.79 + HMODULE *module0, 1.80 + HMODULE *module1, 1.81 + #endif 1.82 + IInArchive **archive0, 1.83 + IInArchive **archive1, 1.84 + UString &defaultItemName0, 1.85 + UString &defaultItemName1, 1.86 + UStringVector &volumePaths, 1.87 + IOpenCallbackUI *openCallbackUI); 1.88 + 1.89 +struct CArchiveLink 1.90 +{ 1.91 + #ifndef EXCLUDE_COM 1.92 + NWindows::NDLL::CLibrary Library0; 1.93 + NWindows::NDLL::CLibrary Library1; 1.94 + #endif 1.95 + CMyComPtr<IInArchive> Archive0; 1.96 + CMyComPtr<IInArchive> Archive1; 1.97 + UString DefaultItemName0; 1.98 + UString DefaultItemName1; 1.99 + 1.100 + CArchiverInfo ArchiverInfo0; 1.101 + CArchiverInfo ArchiverInfo1; 1.102 + 1.103 + UStringVector VolumePaths; 1.104 + 1.105 + int GetNumLevels() const 1.106 + { 1.107 + int result = 0; 1.108 + if (Archive0) 1.109 + { 1.110 + result++; 1.111 + if (Archive1) 1.112 + result++; 1.113 + } 1.114 + return result; 1.115 + } 1.116 + 1.117 + 1.118 + IInArchive *GetArchive() { return Archive1 != 0 ? Archive1: Archive0; } 1.119 + UString GetDefaultItemName() { return Archive1 != 0 ? DefaultItemName1: DefaultItemName0; } 1.120 + const CArchiverInfo &GetArchiverInfo() { return Archive1 != 0 ? ArchiverInfo1: ArchiverInfo0; } 1.121 + HRESULT Close(); 1.122 + void Release(); 1.123 +}; 1.124 + 1.125 +HRESULT OpenArchive(const UString &archiveName, 1.126 + CArchiveLink &archiveLink, 1.127 + IArchiveOpenCallback *openCallback); 1.128 + 1.129 +HRESULT MyOpenArchive(const UString &archiveName, 1.130 + CArchiveLink &archiveLink, 1.131 + IOpenCallbackUI *openCallbackUI); 1.132 + 1.133 +HRESULT ReOpenArchive(CArchiveLink &archiveLink, 1.134 + const UString &fileName); 1.135 + 1.136 +#endif 1.137 +