Rev 1 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef __MUTLISPKFILE_H__#define __MUTLISPKFILE_H__#include "SpkFile.h"typedef struct SPKEXPORT SMultiSpkFile{SMultiSpkFile() { iType = 0; bRemove = false; sData = 0; lSize = 0; }CyString sName;char *sData;long lSize;bool bOn;CyString sScriptName;CyString sScriptVersion;CyString sScriptAuthor;CBaseFile *pFile;int iType;int iPos;bool bRemove;} SMultiSpkFile;typedef struct SPKEXPORT SMultiHeader{float fVersion;int iCompression;long lUncomprLen;long lComprLen;bool bSelection;} SMultiHeader;class SPKEXPORT CMultiSpkFile{public:CMultiSpkFile (){m_bChanged = false;}~CMultiSpkFile ();SMultiSpkFile *AddFileEntry ( CyString filename );bool AddFile ( SMultiSpkFile *file );bool AddFile ( CyString file, bool on = true );bool AddFileNow ( CyString, bool = true );bool RemoveFile ( int id );bool RemoveFile ( SMultiSpkFile *ms );bool RemoveFile ( CyString file );bool MarkRemoveFile ( int id );bool MarkRemoveFile ( SMultiSpkFile *ms );bool MarkRemoveFile ( CyString file );void MarkRemoveAll();void ClearFiles ();void CreatePackage(SMultiSpkFile *p);bool ReadFile ( CyString, bool = true );bool ParseHeader ( CyString header );bool ParseValueLine ( CyString line );void ReadValues ( CyString values );bool ReadAllFilesToMemory (CProgressInfo *progress = NULL);bool ReadFileToMemory ( SMultiSpkFile *ms );bool ReadAllPackages ( CyString filename, int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL ) { m_sFilename = filename; return ReadAllPackages ( type, addToList ); }bool ReadAllPackages ( int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL );bool ReadSpk ( SMultiSpkFile *ms, int type = SPKREAD_NODATA );SMultiSpkFile *FindFile ( CyString name );bool ExtractAll ( CyString dir );bool ExtractData ( SMultiSpkFile *ms );bool ExtractFile ( SMultiSpkFile *ms, CyString dir );bool ExtractFile ( const CyString &filename, CyString dir );bool SplitMulti ( CyString filename, CyString destdir );bool WriteFile ( CyString, CProgressInfo *progress = NULL );CyString CreateData ();void SetName ( CyString n ) { m_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; }CyString GetName () { return m_sName; }unsigned int GetNumFiles () { return m_lFiles.size(); }unsigned long GetFileSize();unsigned int GetAvailableFiles();CLinkList<SMultiSpkFile> *GetFileList () { return &m_lFiles; }bool IsSelection () { return m_SHeader.bSelection; }void SetFilename(CyString s) { m_sFilename = s; }CyString GetFilename() { return m_sFilename; }void UpdatedPackage(CBaseFile *p);SMultiSpkFile *FindPackage(CBaseFile *p);SMultiSpkFile *FindPackage(CyString name, CyString author);void RemovePackages();void SetChanged(bool b) { m_bChanged = b; }bool IsChanged() { return m_bChanged; }private:CLinkList<SMultiSpkFile> m_lFiles;CyString m_sName, m_sFilename;SMultiHeader m_SHeader;bool m_bChanged;};#endif //__MUTLISPKFILE_H__