blob: 9a47c3a890b97e8c2d7c63d90060d4d7ffc1876a [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 Moolenaar952d9d82021-08-02 18:07:18 +020045void nbdbg(char *, ...) ATTRIBUTE_FORMAT_PRINTF(1, 2);
Bram Moolenaar071d4272004-06-13 20:20:40 +000046
Bram Moolenaard99df422016-01-29 23:20:40 +010047void nbdebug_wait(u_int wait_flags, char *wait_var, u_int wait_secs);
48void nbdebug_log_init(char *log_var, char *level_var);
Bram Moolenaar071d4272004-06-13 20:20:40 +000049
50extern FILE *nb_debug;
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010051extern u_int nb_dlevel; // nb_debug verbosity level
Bram Moolenaar071d4272004-06-13 20:20:40 +000052
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010053#else // not NBDEBUG
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010055# ifndef ASSERT
56# define ASSERT(c)
57# endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000058
59/*
Bram Moolenaar009b2592004-10-24 19:18:58 +000060 * The following 3 stubs are needed because a macro cannot be used because of
Bram Moolenaar071d4272004-06-13 20:20:40 +000061 * the variable number of arguments.
62 */
63
64void
65nbdbg(
66 char *fmt,
67 ...)
68{
69}
70
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010071#endif // NBDEBUG
72#endif // NBDEBUG_H