Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

/* vi:set ts=8 sts=8 sw=8:
 *
 * VIM - Vi IMproved    by Bram Moolenaar
 *                      Visual Workshop integration by Gordon Prieur
 *
 * Do ":help uganda"  in Vim to read copying and usage conditions.
 * Do ":help credits" in Vim to see a list of people who contributed.
 */


#ifndef NBDEBUG_H
#define NBDEBUG_H

#ifdef NBDEBUG

#ifndef ASSERT
#define ASSERT(c) \
    if (!(c)) { \
        fprintf(stderr, "Assertion failed: line %d, file %s\n", \
                __LINE__, __FILE__); \
        fflush(stderr); \
        abort(); \
    }
#endif

#define nbdebug(a) nbdbg##a

#define NB_TRACE                0x00000001
#define NB_TRACE_VERBOSE        0x00000002
#define NB_TRACE_COLONCMD       0x00000004
#define NB_PRINT                0x00000008
#define NB_DEBUG_ALL            0xffffffff

#define NBDLEVEL(flags)         (nb_debug != NULL && (nb_dlevel & (flags)))

#define NBDEBUG_TRACE   1

typedef enum {
                WT_ENV = 1,             /* look for env var if set */
                WT_WAIT,                /* look for ~/.gvimwait if set */
                WT_STOP                 /* look for ~/.gvimstop if set */
} WtWait;


void             nbdbg(char *, ...);
void             nbprt(char *, ...);
void             nbtrace(char *, ...);

void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
void nbdebug_log_init __ARGS((char *log_var, char *level_var));

extern FILE     *nb_debug;
extern u_int     nb_dlevel;             /* nb_debug verbosity level */

# else          /* not NBDEBUG */

#ifndef ASSERT
# define ASSERT(c)
#endif

/*
 * The following 3 stubs are needed because a macro cannot be used because of
 * the variable number of arguments.
 */

void
nbdbg(
        char            *fmt,
        ...)
{
}

void
nbprt(
        char            *fmt,
        ...)
{
}

void
nbtrace(
        char            *fmt,
        ...)
{
}

#endif /* NBDEBUG */
#endif /* NBDEBUG_H */