Logger.h

Go to the documentation of this file.
00001 //***************************************************************************************
00002 // File supervisor: Crosswalk team
00012 //***************************************************************************************
00013 
00014 #ifndef __LOGGER_H__
00015 #define __LOGGER_H__
00016 
00017 #include <SIBCUtil.h>
00018 
00020 // Forward declaration
00022 class CSLLogger;
00024 
00026 
00033 typedef SI_Bool (*SLLoggerCallBack)( CSLLogger* in_pLogger, SI_Int in_nErrorType,  SI_Void* in_pData);
00035 
00037 // default CSLLogger callbacks
00039 XSIEXPORT SI_Bool StdOnInit( CSLLogger *in_pLogger, SI_Int, SI_Void* in_pData );            // writes "Start" to stdout
00040 XSIEXPORT SI_Bool StdOnFatal( CSLLogger *in_pLogger, SI_Int, SI_Void* in_pData );       // writes "Fatal Error: " in_pData to stderr
00041 XSIEXPORT SI_Bool StdOnError( CSLLogger *in_pLogger, SI_Int, SI_Void* in_pData );       // writes "Error: " in_pData to stderr
00042 XSIEXPORT SI_Bool StdOnWarning( CSLLogger *in_pLogger, SI_Int, SI_Void* in_pData );     // writes "Warning: " in_pData to stderr
00043 XSIEXPORT SI_Bool StdOnVerbose( CSLLogger *in_pLogger, SI_Int, SI_Void* in_pData );     // writes "Info: " in_pData to stdout
00044 XSIEXPORT SI_Bool StdOnTerm( CSLLogger *in_pLogger, SI_Int, SI_Void* in_pData );            // writes "End" to stdout
00046 
00048 
00050 class XSIEXPORT CSLLogger
00051 {
00052 public:
00053 
00064     CSLLogger
00065     (
00066         SLLoggerCallBack OnInitFunc = StdOnInit,
00067         SLLoggerCallBack OnFatalFunc = StdOnFatal,
00068         SLLoggerCallBack OnErrorFunc = StdOnError,
00069         SLLoggerCallBack OnWarningFunc = StdOnWarning,
00070         SLLoggerCallBack OnVerboseFunc = StdOnVerbose,
00071         SLLoggerCallBack OnTermFunc = StdOnTerm,
00072         SI_Void* in_pUserData = 0
00073     );
00074 
00077     enum ELogType
00078     {
00079         SI_LOG_INIT = 0,    
00080         SI_LOG_FATAL,       
00081         SI_LOG_ERROR,       
00082         SI_LOG_WARNING, 
00083         SI_LOG_VERBOSE, 
00084         SI_LOG_TERM     
00085     };
00086 
00093     SI_Bool Log( ELogType in_Type, SI_Void* in_pData );
00094 
00097     SI_Void* GetData();
00098 
00104     SI_Void* SetData( SI_Void* in_pData );
00105 
00112     SLLoggerCallBack SetCallBack( ELogType in_Callback, SLLoggerCallBack in_NewCallback );
00113 
00119     SLLoggerCallBack GetCallBack( ELogType in_Callback );
00120 
00121 
00122 private:
00123     SI_Void* m_pData;   // pointer to user-defined data
00124 
00125     SLLoggerCallBack m_pCallBacks[SI_LOG_TERM+1];
00126 };
00128 
00129 #endif //__LOGGER_H__