-// implementation of Log functions
-//
-// NB: unfortunately we need all these distinct functions, we can't make them
-// macros and not all compilers inline vararg functions.
-// ----------------------------------------------------------------------------
-
-// generic log function
-void wxLogGeneric(wxLogLevel level, const wxChar *szFormat, ...)
-{
- if ( wxLog::GetActiveTarget() != NULL ) {
- wxCRIT_SECT_LOCKER(locker, gs_csLogBuf);
-
- va_list argptr;
- va_start(argptr, szFormat);
- wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr);
- va_end(argptr);
-
- wxLog::OnLog(level, s_szBuf, time(NULL));
- }
-}
-
-#define IMPLEMENT_LOG_FUNCTION(level) \
- void wxLog##level(const wxChar *szFormat, ...) \
- { \
- if ( wxLog::GetActiveTarget() != NULL ) { \
- wxCRIT_SECT_LOCKER(locker, gs_csLogBuf); \
- \
- va_list argptr; \
- va_start(argptr, szFormat); \
- wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr); \
- va_end(argptr); \
- \
- wxLog::OnLog(wxLOG_##level, s_szBuf, time(NULL)); \
- } \
- }
-
-IMPLEMENT_LOG_FUNCTION(FatalError)
-IMPLEMENT_LOG_FUNCTION(Error)
-IMPLEMENT_LOG_FUNCTION(Warning)
-IMPLEMENT_LOG_FUNCTION(Message)
-IMPLEMENT_LOG_FUNCTION(Info)
-IMPLEMENT_LOG_FUNCTION(Status)
-
-// same as info, but only if 'verbose' mode is on
-void wxLogVerbose(const wxChar *szFormat, ...)
-{
- wxLog *pLog = wxLog::GetActiveTarget();
- if ( pLog != NULL && pLog->GetVerbose() ) {
- wxCRIT_SECT_LOCKER(locker, gs_csLogBuf);
-
- va_list argptr;
- va_start(argptr, szFormat);
- wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr);
- va_end(argptr);
-
- wxLog::OnLog(wxLOG_Info, s_szBuf, time(NULL));
- }
-}
-
-// debug functions
-#ifdef __WXDEBUG__
-#define IMPLEMENT_LOG_DEBUG_FUNCTION(level) \
- void wxLog##level(const wxChar *szFormat, ...) \
- { \
- if ( wxLog::GetActiveTarget() != NULL ) { \
- wxCRIT_SECT_LOCKER(locker, gs_csLogBuf); \
- \
- va_list argptr; \
- va_start(argptr, szFormat); \
- wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr); \
- va_end(argptr); \
- \
- wxLog::OnLog(wxLOG_##level, s_szBuf, time(NULL)); \
- } \
- }
-
- void wxLogTrace(const wxChar *mask, const wxChar *szFormat, ...)
- {
- wxLog *pLog = wxLog::GetActiveTarget();
-
- if ( pLog != NULL && wxLog::IsAllowedTraceMask(mask) ) {
- wxCRIT_SECT_LOCKER(locker, gs_csLogBuf);
-
- wxChar *p = s_szBuf;
- size_t len = WXSIZEOF(s_szBuf);
- strncpy(s_szBuf, _T("("), len);
- len -= 2; // strlen("(")
- p += 2;
- strncat(p, mask, len);
- size_t lenMask = wxStrlen(mask);
- len -= lenMask;
- p += lenMask;
-
- strncat(p, _T("): "), len);
- len -= 3;
- p += 3;
-
- va_list argptr;
- va_start(argptr, szFormat);
- wxVsnprintf(p, len, szFormat, argptr);
- va_end(argptr);
-
- wxLog::OnLog(wxLOG_Trace, s_szBuf, time(NULL));
- }
- }
-
- void wxLogTrace(wxTraceMask mask, const wxChar *szFormat, ...)
- {
- wxLog *pLog = wxLog::GetActiveTarget();
-
- // we check that all of mask bits are set in the current mask, so
- // that wxLogTrace(wxTraceRefCount | wxTraceOle) will only do something
- // if both bits are set.
- if ( pLog != NULL && ((pLog->GetTraceMask() & mask) == mask) ) {
- wxCRIT_SECT_LOCKER(locker, gs_csLogBuf);
-
- va_list argptr;
- va_start(argptr, szFormat);
- wxVsnprintf(s_szBuf, WXSIZEOF(s_szBuf), szFormat, argptr);
- va_end(argptr);
-
- wxLog::OnLog(wxLOG_Trace, s_szBuf, time(NULL));
- }
- }
-
-#else // release
- #define IMPLEMENT_LOG_DEBUG_FUNCTION(level)