1 /* vi:set ts=8 sw=8 noet:
2 *
3 * VIM - Vi IMproved by Bram Moolenaar
4 * Visual Workshop integration by Gordon Prieur
5 *
6 * Do ":help uganda" in Vim to read copying and usage conditions.
7 * Do ":help credits" in Vim to see a list of people who contributed.
8 */
9
10
11 #ifndef NBDEBUG_H
12 #define NBDEBUG_H
13
14 #ifdef NBDEBUG
15
16 # ifndef ASSERT
17 # define ASSERT(c) \
18 if (!(c)) { \
19 fprintf(stderr, "Assertion failed: line %d, file %s\n", \
20 __LINE__, __FILE__); \
21 fflush(stderr); \
22 abort(); \
23 }
24 # endif
25
26 # define nbdebug(a) nbdbg a
27
28 # define NB_TRACE 0x00000001
29 # define NB_TRACE_VERBOSE 0x00000002
30 # define NB_TRACE_COLONCMD 0x00000004
31 # define NB_PRINT 0x00000008
32 # define NB_DEBUG_ALL 0xffffffff
33
34 # define NBDLEVEL(flags) (nb_debug != NULL && (nb_dlevel & (flags)))
35
36 # define NBDEBUG_TRACE 1
37
38 typedef enum {
39 WT_ENV = 1, // look for env var if set
40 WT_WAIT, // look for ~/.gvimwait if set
41 WT_STOP // look for ~/.gvimstop if set
42 } WtWait;
43
44
45 void nbdbg(char *, ...) ATTRIBUTE_FORMAT_PRINTF(1, 2);
46
47 void nbdebug_wait(u_int wait_flags, char *wait_var, u_int wait_secs);
48 void nbdebug_log_init(char *log_var, char *level_var);
49
50 extern FILE *nb_debug;
51 extern u_int nb_dlevel; // nb_debug verbosity level
52
53 #else // not NBDEBUG
54
55 # ifndef ASSERT
56 # define ASSERT(c)
57 # endif
58
59 /*
60 * The following 3 stubs are needed because a macro cannot be used because of
61 * the variable number of arguments.
62 */
63
64 void
nbdbg(char * fmt,...)65 nbdbg(
66 char *fmt,
67 ...)
68 {
69 }
70
71 #endif // NBDEBUG
72 #endif // NBDEBUG_H
73