File: trace.h

package info (click to toggle)
universal-ctags 6.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 37,612 kB
  • sloc: ansic: 158,498; sh: 8,621; lisp: 7,742; vhdl: 6,518; cpp: 2,583; perl: 2,578; python: 2,324; javascript: 2,054; cs: 1,193; lex: 1,015; sql: 897; makefile: 787; ruby: 764; php: 755; cobol: 741; f90: 566; ada: 559; asm: 509; yacc: 465; fortran: 412; xml: 405; objc: 289; tcl: 280; java: 173; erlang: 65; pascal: 58; ml: 49; awk: 44; haskell: 42
file content (100 lines) | stat: -rw-r--r-- 2,776 bytes parent folder | download | duplicates (2)
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
97
98
99
100
#ifndef ctags_trace_h_
#define ctags_trace_h_
/*
*   Copyright (c) 2016, Szymon Tomasz Stefanek
*
*   This source code is released for free distribution under the terms of the
*   GNU General Public License version 2 or (at your option) any later version.
*
*   Tracing facility.
*/

#include "general.h"
#include "debug.h"

//
// Master tracing switch.
//
// Uncomment this to enable extensive debugging to stderr in code.
// Use only for development as tracing reduces performance.
//
// "./configure --enable-debugging" defines DEBUG.
// When running ctags, pass --_trace=<LANG>[,<LANG>]* option.
//
#ifdef DEBUG
#define DO_TRACING
#endif

bool isTraced (void);
void traceLanguage (langType language);
bool isLanguageTraced (langType language);

void traceEnter(const char * szFunction,const char * szFormat,...);
void traceLeave(const char * szFunction,const char * szFormat,...);
void tracePrint(const char * szFunction,const char * szFormat,...);

void tracePrintPrefix(const char * szFunction);
void tracePrintFmt(const char * szFormat,...);
void tracePrintNewline(void);

void traceMain(void);
bool isMainTraced(void);

#ifdef DO_TRACING

	#define TRACE_ENTER() traceEnter(ASSERT_FUNCTION,"")
	#define TRACE_LEAVE() traceLeave(ASSERT_FUNCTION,"")

	#define TRACE_ENTER_TEXT(_szFormat,...) \
		traceEnter(ASSERT_FUNCTION,_szFormat,## __VA_ARGS__)

	#define TRACE_LEAVE_TEXT(_szFormat,...) \
		traceLeave(ASSERT_FUNCTION,_szFormat,## __VA_ARGS__)

	#define TRACE_PRINT(_szFormat,...) \
		tracePrint(ASSERT_FUNCTION,_szFormat,## __VA_ARGS__)

	/* TRACE_PRINT prints line at once.
	 * If you want to print a trace line incrementally,
	 * use following macros.
	 *
	 * TRACE_PRINT_PREFIX: just print a trace prefix. No newline.
	 * TRACE_PRINT_FMT: print as a format. No prefix, no newline.
	 * TRACE_PRINT_NEWLINE: just print a newline.
	 */
	#define TRACE_PRINT_PREFIX() \
		tracePrintPrefix(ASSERT_FUNCTION)
	#define TRACE_PRINT_FMT(_szFormat,...) \
		tracePrintFmt(_szFormat,## __VA_ARGS__)
	#define TRACE_PRINT_NEWLINE() \
		tracePrintNewline()

	#define TRACE_ASSERT(_condition,_szFormat,...) \
		do { \
			if(!(_condition)) \
			{ \
				tracePrint(ASSERT_FUNCTION,_szFormat,## __VA_ARGS__); \
				Assert(false); \
			} \
		} while(0)

#else //!DO_TRACING

	#define TRACE_ENTER() do { } while(0)
	#define TRACE_LEAVE() do { } while(0)

	#define TRACE_ENTER_TEXT(_szFormat,...) do { } while(0)
	#define TRACE_LEAVE_TEXT(_szFormat,...) do { } while(0)

	#define TRACE_PRINT(_szFormat,...) do { } while(0)

	#define TRACE_PRINT_PREFIX() do { } while(0)
	#define TRACE_PRINT_FMT(_szFormat,...) do { } while(0)
	#define TRACE_PRINT_NEWLINE() do { } while(0)

	#define TRACE_ASSERT(_condition,_szFormat,...) do { } while(0)

#endif //!DO_TRACING


#endif //!ctags_trace_h_