Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef TRACE_H
00029 #define TRACE_H
00030
00031 #include "QGpCoreToolsDLLExport.h"
00032 #include "TraceStamp.h"
00033
00034 namespace QGpCoreTools {
00035
00036 #if defined(Q_WS_WIN) || defined(Q_WS_MAC)
00037 #define TRACE_ENABLED
00038 #else
00039 #define TRACE_DISABLED
00040 #endif
00041
00042 #ifdef TRACE_ENABLED
00043
00044 #define TRACE \
00045 static TraceStamp _traceStamp_(__PRETTY_FUNCTION__, __LINE__); \
00046 Trace _trace_0(&_traceStamp_);
00047
00048
00049 #define TRACE_N(index) \
00050 static TraceStamp _traceStamp_##index(__PRETTY_FUNCTION__, __LINE__); \
00051 Trace _trace_##index(&_traceStamp_##index);
00052
00053 class QGPCORETOOLS_EXPORT Trace
00054 {
00055 public:
00056 Trace(const TraceStamp * stamp);
00057 ~Trace();
00058
00059 static QStack<const TraceStamp *> * mainStack() {return &_mainStack;}
00060 static QString backTrace(const QStack<const TraceStamp *> * stack);
00061 private:
00062 QStack<const TraceStamp *> * _myStack;
00063 static QStack<const TraceStamp *> _mainStack;
00064 };
00065
00066 #else
00067 #define TRACE
00068 #endif
00069
00070 }
00071
00072 #endif // TRACE_H