Logger.h

00001 /****************************************************************************************
00002 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS".
00003 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 
00004 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
00005 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00006 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
00007 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 
00008  
00009 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 
00010 
00011 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 
00012 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other
00013 trademarks contained herein are the property of their respective owners. 
00014 ****************************************************************************************/
00015 #ifndef __LOGGER_H__
00016 #define __LOGGER_H__
00017 
00018 #include <SIBCUtil.h>
00019 
00021 // Forward declaration
00023 class CSLLogger;
00025 
00028 
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 
00049 class XSIEXPORT CSLLogger
00050 {
00051 public:
00052 
00054 
00063     CSLLogger
00064     ( 
00065         SLLoggerCallBack OnInitFunc = StdOnInit,            
00066         SLLoggerCallBack OnFatalFunc = StdOnFatal,
00067         SLLoggerCallBack OnErrorFunc = StdOnError,
00068         SLLoggerCallBack OnWarningFunc = StdOnWarning,
00069         SLLoggerCallBack OnVerboseFunc = StdOnVerbose,
00070         SLLoggerCallBack OnTermFunc = StdOnTerm,
00071         SI_Void* in_pUserData = 0
00072     );
00073 
00075     enum ELogType
00076     {
00077         SI_LOG_INIT = 0,    
00078         SI_LOG_FATAL,       
00079         SI_LOG_ERROR,       
00080         SI_LOG_WARNING, 
00081         SI_LOG_VERBOSE, 
00082         SI_LOG_TERM     
00083     };
00084 
00086 
00091     SI_Bool Log( ELogType in_Type, SI_Void* in_pData );
00092 
00094     SI_Void* GetData();
00095 
00097 
00101     SI_Void* SetData( SI_Void* in_pData );
00102 
00104 
00109     SLLoggerCallBack SetCallBack( ELogType in_Callback, SLLoggerCallBack in_NewCallback );
00110     
00112 
00116     SLLoggerCallBack GetCallBack( ELogType in_Callback );
00117 
00118 
00119 private:
00120     SI_Void* m_pData;   // pointer to user-defined data
00121 
00122     SLLoggerCallBack m_pCallBacks[SI_LOG_TERM+1];
00123 };
00125 
00126 #endif //__LOGGER_H__