blob: e1bb1717baadcf7a030f14467355563bad2c8139 [file] [log] [blame]
Bram Moolenaaredf3f972016-08-29 22:49:24 +02001/* vi:set ts=8 sw=8 noet:
Bram Moolenaar071d4272004-06-13 20:20:40 +00002 *
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
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010016# ifndef ASSERT
17# define ASSERT(c) \
Bram Moolenaar071d4272004-06-13 20:20:40 +000018 if (!(c)) { \
19 fprintf(stderr, "Assertion failed: line %d, file %s\n", \
20 __LINE__, __FILE__); \
21 fflush(stderr); \
22 abort(); \
23 }
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010024# endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000025
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010026# define nbdebug(a) nbdbg a
Bram Moolenaar071d4272004-06-13 20:20:40 +000027
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010028# 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000033
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010034# define NBDLEVEL(flags) (nb_debug != NULL && (nb_dlevel & (flags)))
Bram Moolenaar071d4272004-06-13 20:20:40 +000035
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010036# define NBDEBUG_TRACE 1
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
38typedef enum {
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010039 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000042} WtWait;
43
44
Bram Moolenaarc85c8fc2019-02-17 19:12:21 +010045void nbdbg(char *, ...)
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010046# ifdef USE_PRINTF_FORMAT_ATTRIBUTE
Bram Moolenaarc85c8fc2019-02-17 19:12:21 +010047 __attribute__((format(printf, 1, 2)))
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010048# endif
Bram Moolenaarc85c8fc2019-02-17 19:12:21 +010049;
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
Bram Moolenaard99df422016-01-29 23:20:40 +010051void nbdebug_wait(u_int wait_flags, char *wait_var, u_int wait_secs);
52void nbdebug_log_init(char *log_var, char *level_var);
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
54extern FILE *nb_debug;
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010055extern u_int nb_dlevel; // nb_debug verbosity level
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010057#else // not NBDEBUG
Bram Moolenaar071d4272004-06-13 20:20:40 +000058
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010059# ifndef ASSERT
60# define ASSERT(c)
61# endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000062
63/*
Bram Moolenaar009b2592004-10-24 19:18:58 +000064 * The following 3 stubs are needed because a macro cannot be used because of
Bram Moolenaar071d4272004-06-13 20:20:40 +000065 * the variable number of arguments.
66 */
67
68void
69nbdbg(
70 char *fmt,
71 ...)
72{
73}
74
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010075#endif // NBDEBUG
76#endif // NBDEBUG_H