1 #pragma once 2 3 #include <map> 4 #include <list> 5 #include <string> 6 #include <memory> 7 #include "ZipDefs.h" 8 #include "Stream.h" 9 10 namespace Framework 11 { 12 class CZipArchiveReader 13 { 14 public: 15 typedef std::map<std::string, Zip::ZIPDIRFILEHEADER> FileHeaderList; 16 typedef std::shared_ptr<Framework::CStream> StreamPtr; 17 typedef std::list<std::string> FileNameList; 18 19 CZipArchiveReader(Framework::CStream&); 20 virtual ~CZipArchiveReader(); 21 22 //Non-copyable 23 CZipArchiveReader(const CZipArchiveReader&) = delete; 24 CZipArchiveReader& operator =(const CZipArchiveReader&) = delete; 25 26 const FileHeaderList& GetFileHeaders() const; 27 28 StreamPtr BeginReadFile(const char*); 29 const Zip::ZIPDIRFILEHEADER* GetFileHeader(const char*) const; 30 FileNameList GetFileNameList(const char*); 31 32 private: 33 void Read(Framework::CStream&); 34 void EndReadFile(Framework::CStream*); 35 36 Framework::CStream& m_stream; 37 FileHeaderList m_files; 38 bool m_readingLock; 39 }; 40 } 41