Subversion Repositories spk

Rev

Rev 1 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#ifndef __MUTLISPKFILE_H__
2
#define __MUTLISPKFILE_H__
3
 
4
#include "SpkFile.h"
5
 
6
typedef struct SPKEXPORT SMultiSpkFile
7
{
8
	SMultiSpkFile() { iType = 0; bRemove = false; sData = 0; lSize = 0; }
9
	CyString	sName;
10
	char   *sData;
11
	long    lSize;
12
	bool	bOn;
13
	CyString  sScriptName;
14
	CyString  sScriptVersion;
15
	CyString  sScriptAuthor;
16
	CBaseFile *pFile;
17
	int		iType;
18
	int		iPos;
19
	bool	bRemove;
20
} SMultiSpkFile;
21
 
22
typedef struct SPKEXPORT SMultiHeader
23
{
24
	float	fVersion;
25
	int		iCompression;
26
	long	lUncomprLen;
27
	long	lComprLen;
28
	bool	bSelection;
29
} SMultiHeader;
30
 
31
class SPKEXPORT CMultiSpkFile
32
{
33
public:
34
	CMultiSpkFile () 
35
	{
36
		m_bChanged = false;
37
	}
38
	~CMultiSpkFile ();
39
 
40
	SMultiSpkFile *AddFileEntry ( CyString filename );
41
	bool AddFile ( SMultiSpkFile *file );
42
	bool AddFile ( CyString file, bool on = true );
43
	bool AddFileNow ( CyString, bool = true );
44
	bool RemoveFile ( int id );
45
	bool RemoveFile ( SMultiSpkFile *ms );
46
	bool RemoveFile ( CyString file );
47
	bool MarkRemoveFile ( int id );
48
	bool MarkRemoveFile ( SMultiSpkFile *ms );
49
	bool MarkRemoveFile ( CyString file );
50
	void MarkRemoveAll();
51
 
52
	void ClearFiles ();
53
	void CreatePackage(SMultiSpkFile *p);
54
 
55
	bool ReadFile ( CyString, bool = true );
56
	bool ParseHeader ( CyString header );
57
	bool ParseValueLine ( CyString line );
58
	void ReadValues ( CyString values );
59
 
60
	bool ReadAllFilesToMemory (CProgressInfo *progress = NULL);
61
	bool ReadFileToMemory ( SMultiSpkFile *ms );
62
	bool ReadAllPackages ( CyString filename, int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL ) { m_sFilename = filename; return ReadAllPackages ( type, addToList ); }
63
	bool ReadAllPackages ( int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL );
64
	bool ReadSpk ( SMultiSpkFile *ms, int type = SPKREAD_NODATA );
65
 
66
	SMultiSpkFile *FindFile ( CyString name );
67
 
68
	bool ExtractAll ( CyString dir );
69
	bool ExtractData ( SMultiSpkFile *ms );
70
	bool ExtractFile ( SMultiSpkFile *ms, CyString dir );
71
	bool ExtractFile ( const CyString &filename, CyString dir );
72
	bool SplitMulti ( CyString filename, CyString destdir );
73
 
74
	bool WriteFile ( CyString, CProgressInfo *progress = NULL );
75
	CyString CreateData ();
76
 
77
	void SetName ( CyString n ) { m_sName = n; m_bChanged = true; }
78
	void SetSelection ( bool on ) { m_SHeader.bSelection = on; m_bChanged = true; }
79
	void SetCompression ( int c ) { m_SHeader.iCompression = c; m_bChanged = true; }
80
 
81
	CyString GetName () { return m_sName; }
82
	unsigned int GetNumFiles () { return m_lFiles.size(); }
83
	unsigned long GetFileSize();
84
	unsigned int GetAvailableFiles();
85
	CLinkList<SMultiSpkFile> *GetFileList () { return &m_lFiles; }
86
	bool IsSelection () { return m_SHeader.bSelection; }
87
 
88
	void SetFilename(CyString s) { m_sFilename = s; }
89
	CyString GetFilename() { return m_sFilename; }
90
 
91
	void UpdatedPackage(CBaseFile *p);
92
	SMultiSpkFile *FindPackage(CBaseFile *p);
93
	SMultiSpkFile *FindPackage(CyString name, CyString author);
94
	void RemovePackages();
95
 
96
	void SetChanged(bool b) { m_bChanged = b; }
97
	bool IsChanged() { return m_bChanged; }
98
 
99
private:
100
	CLinkList<SMultiSpkFile> m_lFiles;
101
	CyString m_sName, m_sFilename;
102
 
103
	SMultiHeader m_SHeader;
104
	bool		m_bChanged;
105
};
106
 
107
#endif //__MUTLISPKFILE_H__