Rev 176 | Rev 197 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef __MUTLISPKFILE_H__#define __MUTLISPKFILE_H__#include "SpkFile.h"typedef struct SPKEXPORT SMultiSpkFile{SMultiSpkFile() : bOn(false), iPos(0), pFile(nullptr) { iType = 0; bRemove = false; sData = 0; lSize = 0; }Utils::String sName;char *sData;long lSize;bool bOn;Utils::String sScriptName;Utils::String sScriptVersion;Utils::String sScriptAuthor;CBaseFile *pFile;int iType;int iPos;bool bRemove;} SMultiSpkFile;typedef struct SPKEXPORT SMultiHeader{SMultiHeader() : fVersion(0.0f), iCompression(0), lUncomprLen(0), lComprLen(0), bSelection(false) { }float fVersion;int iCompression;long lUncomprLen;long lComprLen;bool bSelection;} SMultiHeader;class SPKEXPORT CMultiSpkFile{public:CMultiSpkFile (){m_bChanged = false;}~CMultiSpkFile ();SMultiSpkFile *addFileEntry(const Utils::String &filename);bool addFile(SMultiSpkFile *file);bool addFile(const Utils::String &file, bool on = true);bool addFileNow(const Utils::String &file, bool = true );bool removeFile ( int id );bool removeFile(const SMultiSpkFile *ms);bool removeFile(const Utils::String &file);bool markRemoveFile ( int id );bool markRemoveFile ( SMultiSpkFile *ms );bool markRemoveFile(const Utils::String &file);void markRemoveAll();void ClearFiles ();void CreatePackage(SMultiSpkFile *p);bool readFile(const Utils::String &filename, bool = true );bool ReadAllFilesToMemory (CProgressInfo *progress = NULL);bool ReadFileToMemory ( SMultiSpkFile *ms );bool readAllPackages(const Utils::String &filename, int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL ) { _sFilename = filename; return readAllPackages(type, addToList); }bool readAllPackages(int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL );bool ReadSpk ( SMultiSpkFile *ms, int type = SPKREAD_NODATA );const SMultiSpkFile *findFile (const Utils::String &name) const;bool extractAll(const Utils::String &dir);bool extractData(SMultiSpkFile *ms);bool extractFile(const SMultiSpkFile *ms, const Utils::String &dir);bool extractFile(const Utils::String &filename, const Utils::String &dir);bool splitMulti(const Utils::String &filename, const Utils::String &destdir);bool writeFile(const Utils::String &filename, CProgressInfo *progress = NULL);void setName(const Utils::String &n) { _sName = n; m_bChanged = true; }void setSelection ( bool on ) { m_SHeader.bSelection = on; m_bChanged = true; }void setCompression ( int c ) { m_SHeader.iCompression = c; m_bChanged = true; }void setFilename(const Utils::String &s) { _sFilename = s; }void setChanged(bool b) { m_bChanged = b; }const Utils::String name() const { return _sName; }const Utils::String& filename() const { return _sFilename; }bool isSelection() const { return m_SHeader.bSelection; }bool isChanged() const { return m_bChanged; }size_t numFiles() const { return m_lFiles.size(); }unsigned long GetFileSize();unsigned int GetAvailableFiles();CLinkList<SMultiSpkFile> *GetFileList () { return &m_lFiles; }void UpdatedPackage(CBaseFile *p);SMultiSpkFile *findPackage(CBaseFile *p);SMultiSpkFile *findPackage(const Utils::String &name, const Utils::String &author);void RemovePackages();protected:Utils::String _createData() const;bool _parseHeader(const Utils::String &header);bool _parseValueLine(const Utils::String &line);void _readValues(const Utils::String &values);private:CLinkList<SMultiSpkFile> m_lFiles;Utils::String _sName, _sFilename;SMultiHeader m_SHeader;bool m_bChanged;};#endif //__MUTLISPKFILE_H__