Subversion Repositories spk

Rev

Rev 1 | Rev 8 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#pragma once

#include "../CyString.h"
#include <vector>

typedef struct {
        CyString        sText;
} SLog;

class SPKEXPORT CLog
{
public:
        typedef std::vector<SLog *> LogList;
        typedef LogList::iterator   LogListItr;

protected:
        // private constructor
        CLog(void);
        virtual ~CLog(void);

private:
        LogList m_lLogs;

public:
        static CLog *m_pInstance;
        static CLog *create();
        static void release();

        static void log(const CyString &sLogText);
        static void logf(const char *sLogText, ...);
        void _log(const CyString &sLogText);
        void _logf(const char *sLogText, ...);

        virtual void displayLog(const CyString &sLogText) const;

        void clear();
        SLog *firstLog();
};

//TODO: move this
class SPKEXPORT CConsoleLog : public CLog 
{
public:
        static CLog *create()
        {
                if ( !CLog::m_pInstance ) {
                        CLog::m_pInstance = new CConsoleLog();
                }
                return CLog::m_pInstance;
        }

        virtual ~CConsoleLog(void)
        {
        }
        virtual void displayLog(const CyString &sLogText) const
        {
                printf("%s", ((CyString)sLogText).c_str());
        }
};