Subversion Repositories spk

Rev

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

Rev Author Line No. Line
1 cycrow 1
#pragma once
2
 
8 cycrow 3
#include "../Utils/StringList.h"
1 cycrow 4
#include <vector>
8 cycrow 5
#include <stdarg.h>
1 cycrow 6
 
8 cycrow 7
 
1 cycrow 8
typedef struct {
8 cycrow 9
	Utils::String	sText;
10 cycrow 10
	int				iLevel;
1 cycrow 11
} SLog;
12
 
7 cycrow 13
class SPKEXPORT CLog
1 cycrow 14
{
15
public:
10 cycrow 16
	typedef CLinkList<SLog> LogList;
17
	typedef CListNode<SLog>* LogNode;
7 cycrow 18
 
10 cycrow 19
	enum LogLevel {
20
		Log_All			= 0,
21
		Log_Normal		= 1,
22
		Log_IO			= 2,
23
		Log_EditPackage = 4,
24
		Log_File		= 8,
25
		Log_Read		= 16,
26
	};
27
 
7 cycrow 28
protected:
29
	// private constructor
30
	CLog(void);
31
	virtual ~CLog(void);
32
 
33
private:
34
	LogList	m_lLogs;
35
 
36
public:
1 cycrow 37
	static CLog *m_pInstance;
38
	static CLog *create();
39
	static void release();
40
 
10 cycrow 41
	static void log(int iLevel, const Utils::String &sLogText);
42
	static void logf(int iLevel, const char *sLogText, ...);
43
	void _log(int iLevel, const Utils::String &sLogText);
44
	void _logf(int iLevel, const char *sLogText, ...);
1 cycrow 45
 
10 cycrow 46
	virtual void displayLog(int iLevel, const Utils::String &sLogText) const;
1 cycrow 47
 
7 cycrow 48
	void clear();
10 cycrow 49
	const SLog *firstLog() const;
9 cycrow 50
	int count() const;
1 cycrow 51
};
7 cycrow 52
 
53
//TODO: move this
54
class SPKEXPORT CConsoleLog : public CLog 
55
{
56
public:
57
	static CLog *create()
58
	{
59
		if ( !CLog::m_pInstance ) {
60
			CLog::m_pInstance = new CConsoleLog();
61
		}
62
		return CLog::m_pInstance;
63
	}
64
 
65
	virtual ~CConsoleLog(void)
66
	{
67
	}
10 cycrow 68
	virtual void displayLog(int iLevel, const Utils::String &sLogText) const
7 cycrow 69
	{
8 cycrow 70
		printf("%s\n", sLogText.c_str());
7 cycrow 71
	}
72
};