1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#include <stdio.h>
#include <stdarg.h>
#include <qdir.h>
#if !defined(NDEBUG)
#include "TraceManager.h"
#include "TraceModule.h"
CTraceModule::CTraceModule(CTraceManager *mgr, const QString &name, int level)
{
m_pManager = mgr;
ModuleName = name;
m_Level = level;
}
QString CTraceModule::GetName() const
{
return ModuleName;
}
int CTraceModule::GetLevel() const
{
return m_Level;
}
void CTraceModule::Enter(const QString &function_name)
{
m_pManager->Log(">> " + function_name);
m_pManager->IncIndent();
}
void CTraceModule::Enter(const QString &file_name, int line_number)
{
int sep;
//Enter(file_name.section(QDir::separator(), -1) + ":" + QString::number(line_number));
sep = file_name.findRev(QDir::separator());
Enter(file_name.mid(sep + 1) + ":" + QString::number(line_number));
}
void CTraceModule::Leave(const QString &function_name)
{
m_pManager->DecIndent();
m_pManager->Log("<< " + function_name);
}
void CTraceModule::Leave(const QString &file_name, int line_number)
{
int sep;
//Leave(file_name.section(QDir::separator(), - 1) + ":" + QString::number(line_number));
sep = file_name.findRev(QDir::separator());
Leave(file_name.mid(sep + 1) + ":" + QString::number(line_number));
}
void CTraceModule::Log(int level, const char *fmt, ...)
{
va_list args;
if (level > m_Level)
return;
/* Unfortunately we cannot propagate the ellipses (...), so we must build
the string here */
va_start(args, fmt);
#if defined(_WIN32)
_vsnprintf(LargeBuffer, 2048, fmt, args);
#else
vsnprintf(LargeBuffer, 2048, fmt, args);
#endif
va_end(args);
m_pManager->Log(LargeBuffer);
}
void CTraceModule::IncLevel()
{
m_Level++;
}
void CTraceModule::DecLevel()
{
if (m_Level > 0)
m_Level--;
}
void CTraceModule::SetLevel(int level)
{
if (level >= 0)
m_Level = level;
}
#endif
|