//----------------------------------------------------------------------------- // Torque Game Engine // Copyright (C) GarageGames.com, Inc. //----------------------------------------------------------------------------- #ifndef _ZIPAGGREGATE_H_ #define _ZIPAGGREGATE_H_ //Includes #ifndef _PLATFORM_H_ #include "platform/platform.h" #endif #ifndef _TVECTOR_H_ #include "core/tVector.h" #endif class Stream; class ZipDirFileHeader; class ZipAggregate { public: struct FileEntry { enum { Uncompressed = 0, Compressed = 1 << 0 }; const char* pPath; const char* pFileName; U32 fileOffset; U32 fileSize; U32 compressedFileSize; U32 flags; }; //-------------------------------------- Instance scope members and decls. private: char* m_pZipFileName; Vector m_fileList; void enterZipDirRecord(const ZipDirFileHeader& in_rHeader); bool createZipDirectory(Stream*); void destroyZipDirectory(); ZipAggregate(const ZipAggregate&); // disallowed public: ZipAggregate(); ~ZipAggregate(); // Opening/Manipulation interface... public: bool openAggregate(const char* in_pFileName); void closeAggregate(); bool refreshAggregate(); // Entry iteration interface... public: typedef Vector::const_iterator iterator; U32 numEntries() const { return m_fileList.size(); } const FileEntry& operator[](const U32 idx) const { return m_fileList[idx]; } iterator begin() const { return m_fileList.begin(); } iterator end() const { return m_fileList.end(); } }; #endif //_ZIPAGGREGATE_H_