Rev 177 | 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() { 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__