blob: 20bbb049e288ddc0bdd7784c531ef7937ee8145b [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 Moolenaarebfec1c2023-01-22 21:14:53 +000018 if (!(c)) \
19 { \
Bram Moolenaar071d4272004-06-13 20:20:40 +000020 fprintf(stderr, "Assertion failed: line %d, file %s\n", \
21 __LINE__, __FILE__); \
22 fflush(stderr); \
23 abort(); \
24 }
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010025# endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000026
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010027# define nbdebug(a) nbdbg a
Bram Moolenaar071d4272004-06-13 20:20:40 +000028
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010029# define NB_TRACE 0x00000001
30# define NB_TRACE_VERBOSE 0x00000002
31# define NB_TRACE_COLONCMD 0x00000004
32# define NB_PRINT 0x00000008
33# define NB_DEBUG_ALL 0xffffffff
Bram Moolenaar071d4272004-06-13 20:20:40 +000034
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010035# define NBDLEVEL(flags) (nb_debug != NULL && (nb_dlevel & (flags)))
Bram Moolenaar071d4272004-06-13 20:20:40 +000036
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010037# define NBDEBUG_TRACE 1
Bram Moolenaar071d4272004-06-13 20:20:40 +000038
39typedef enum {
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010040 WT_ENV = 1, // look for env var if set
41 WT_WAIT, // look for ~/.gvimwait if set
42 WT_STOP // look for ~/.gvimstop if set
Bram Moolenaar071d4272004-06-13 20:20:40 +000043} WtWait;
44
45
Bram Moolenaar952d9d82021-08-02 18:07:18 +020046void nbdbg(char *, ...) ATTRIBUTE_FORMAT_PRINTF(1, 2);
Bram Moolenaar071d4272004-06-13 20:20:40 +000047
Bram Moolenaard99df422016-01-29 23:20:40 +010048void nbdebug_wait(u_int wait_flags, char *wait_var, u_int wait_secs);
49void nbdebug_log_init(char *log_var, char *level_var);
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
51extern FILE *nb_debug;
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010052extern u_int nb_dlevel; // nb_debug verbosity level
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010054#else // not NBDEBUG
Bram Moolenaar071d4272004-06-13 20:20:40 +000055
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010056# ifndef ASSERT
57# define ASSERT(c)
58# endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
60/*
Bram Moolenaar009b2592004-10-24 19:18:58 +000061 * The following 3 stubs are needed because a macro cannot be used because of
Bram Moolenaar071d4272004-06-13 20:20:40 +000062 * the variable number of arguments.
63 */
64
65void
66nbdbg(
67 char *fmt,
68 ...)
69{
70}
71
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010072#endif // NBDEBUG
73#endif // NBDEBUG_H