rlm@1: #ifndef _7ZIP_DEC_HEADER rlm@1: #define _7ZIP_DEC_HEADER rlm@1: rlm@1: // 7zip file extraction rlm@1: // NOTE: if you want to add support for opening files within archives to something, rlm@1: // consider using the higher-level interface provided by OpenArchive.h instead rlm@1: rlm@1: void InitDecoder(); rlm@1: void CleanupDecoder(); rlm@1: const char* GetSupportedFormatsFilter(); rlm@1: rlm@1: // simplest way of extracting a file after calling InitDecoder(): rlm@1: // int size = ArchiveFile(filename).ExtractItem(0, buf, sizeof(buf)); rlm@1: rlm@1: struct ArchiveFile rlm@1: { rlm@1: ArchiveFile(const char* filename, const char* displayFilename=0); rlm@1: virtual ~ArchiveFile(); rlm@1: rlm@1: int GetNumItems(); rlm@1: int GetItemSize(int item); rlm@1: const char* GetItemName(int item); rlm@1: int ExtractItem(int item, unsigned char* outBuffer, int bufSize) const; // returns size, or 0 if failed rlm@1: int ExtractItem(int item, const char* outFilename) const; rlm@1: rlm@1: bool IsCompressed(); rlm@1: const char* GetArchiveTypeName(); rlm@1: const char* GetArchiveFileName() { return m_displayFilename ? m_displayFilename : m_filename; } rlm@1: rlm@1: bool m_userMadeSelection; rlm@1: rlm@1: protected: rlm@1: struct ArchiveItem rlm@1: { rlm@1: int size; rlm@1: char* name; rlm@1: }; rlm@1: ArchiveItem* m_items; rlm@1: int m_numItems; rlm@1: int m_typeIndex; rlm@1: char* m_filename; rlm@1: char* m_displayFilename; rlm@1: }; rlm@1: rlm@1: #endif