/* * $Id: tmtrace.h,v 1.2 2004/09/15 11:39:27 jan Exp $ * * Copyright (c) 2002 Jan Algermissen * See the file "COPYING" for copying permission. * */ #ifndef TM_TRACE_H #define TM_TRACE_H #include "tmtk.h" #ifdef __cplusplus extern "C" { #endif /** * * * \defgroup Tracing * \ingroup LibraryCore * * @{ */ #ifndef NDEBUG TM_API(unsigned int) TM_TraceFlag; #define TM_TRACEFLAG (TM_TraceFlag) #else #define TM_TRACEFLAG 0 #endif typedef enum _TMTraceFlags { TM_SHOW_GRAPH_TRACE = 0x1, /* topic map, transaction */ TM_SHOW_STORAGE_TRACE = 0x2, /* storage components */ TM_SHOW_PARSE_TRACE = 0x4, /* syntax parsing */ TM_SHOW_POOL_TRACE = 0x8, /* tracing in memory pools */ TM_SHOW_X_TRACE = 0x10, /* extreme traces e.g. rets*/ TM_SHOW_APP_TRACE = 0x20, /* trace for applications */ TM_SHOW_OMNIVORE_TRACE = 0x40, /* trace for applications */ TM_SHOW_VALUE_TRACE = 0x80, /* trace for value stuff */ TM_SHOW_QUERY_TRACE = 0x100, /* trace for query stuff */ TM_SHOW_ALL_TRACE = (int) 0xFFFFFFFF } TMTraceFlags; #define TM_ANY_TRACE (1) #define TM_GRAPH_TRACE (TM_TRACEFLAG & TM_SHOW_GRAPH_TRACE) #define TM_STORAGE_TRACE (TM_TRACEFLAG & TM_SHOW_STORAGE_TRACE) #define TM_PARSE_TRACE (TM_TRACEFLAG & TM_SHOW_PARSE_TRACE) #define TM_POOL_TRACE (TM_TRACEFLAG & TM_SHOW_POOL_TRACE) #define TM_X_TRACE (TM_TRACEFLAG & TM_SHOW_X_TRACE) #define TM_APP_TRACE (TM_TRACEFLAG & TM_SHOW_APP_TRACE) #define TM_OMNIVORE_TRACE (TM_TRACEFLAG & TM_SHOW_OMNIVORE_TRACE) #define TM_VALUE_TRACE (TM_TRACEFLAG & TM_SHOW_VALUE_TRACE) #define TM_QUERY_TRACE (TM_TRACEFLAG & TM_SHOW_QUERY_TRACE) #ifndef NDEBUG # undef _ # define _ , # define TMTRACE(TYPE,FMT) do { if(TYPE) tm_trace(TM_TRACEFUNCTION,FMT); } while (0) # define TMTRACE_NOFUNC(TYPE,FMT) do { if(TYPE) tm_trace(NULL,FMT); } while (0) TM_API(int) tm_trace(const char *func,const char * fmt, ...); TM_API(int) tm_trace_str(const char *str, int len); #else # define TMTRACE(TYPE,FMT) /* empty */ # define TMTRACE_NOFUNC(TYPE,FMT) /* empty */ /* no prototype for tm_trace() ! */ /* no prototype for tm_trace_str() ! */ #endif /* !NDEBUG */ TM_API(int) tm_set_trace_mask(const char * shortnames); #define TM_ENTER TMTRACE(TM_X_TRACE,"enter\n") #define TM_RETURN(v) do { \ TMTRACE(TM_X_TRACE,"return %s in line %d\n" _ #v _ __LINE__ );\ return( (v) ); \ }while(0) #define TM_EXIT do { \ TMTRACE(TM_X_TRACE,"return void in line %d\n" _ __LINE__ );\ return; \ }while(0) /** @} */ #ifdef __cplusplus } // extern C #endif #endif