File: ctdebug.h

package info (click to toggle)
libconvert-binary-c-perl 0.85-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 13,260 kB
  • sloc: ansic: 47,820; perl: 4,980; yacc: 2,143; makefile: 61
file content (92 lines) | stat: -rw-r--r-- 2,635 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*******************************************************************************
*
* HEADER: ctdebug.h
*
********************************************************************************
*
* DESCRIPTION: Debugging support
*
********************************************************************************
*
* Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved.
* This program is free software; you can redistribute it and/or modify
* it under the same terms as Perl itself.
*
*******************************************************************************/

#ifndef _CTLIB_CTDEBUG_H
#define _CTLIB_CTDEBUG_H

/*===== GLOBAL INCLUDES ======================================================*/

#include <stdarg.h>

/*===== LOCAL INCLUDES =======================================================*/

#include "util/ccattr.h"

/*===== DEFINES ==============================================================*/

#define DB_CTLIB_MAIN    0x00000001
#define DB_CTLIB_PARSER  0x00000002
#define DB_CTLIB_CLEXER  0x00000004
#define DB_CTLIB_YACC    0x00000008
#define DB_CTLIB_PRAGMA  0x00000010
#define DB_CTLIB_CTLIB   0x00000020
#define DB_CTLIB_HASH    0x00000040
#define DB_CTLIB_TYPE    0x00000080
#define DB_CTLIB_PREPROC 0x00000100

#ifdef CTLIB_DEBUGGING

#define DEBUG_FLAG( flag )                                       \
          (g_CT_dbfunc && ((DB_CTLIB_ ## flag) & g_CT_dbflags))

#ifdef CTLIB_FORMAT_CHECK
# define CTLIB_DEBUG_FUNC CT_dbfunc_check
#else
# define CTLIB_DEBUG_FUNC g_CT_dbfunc
#endif

#define CT_DEBUG( flag, out )                                    \
          do {                                                   \
            if( DEBUG_FLAG( flag ) )                             \
              CTLIB_DEBUG_FUNC out ;                             \
          } while(0)

#else

#define DEBUG_FLAG( flag )      0
#define CT_DEBUG( flag, out )   (void) 0

#endif

/*===== TYPEDEFS =============================================================*/

/*===== FUNCTION PROTOTYPES ==================================================*/

#ifdef CTLIB_DEBUGGING
extern void (*g_CT_dbfunc)(const char *, ...);
extern unsigned long g_CT_dbflags;
#endif

#ifdef CTLIB_DEBUGGING

# ifdef CTLIB_FORMAT_CHECK
void CT_dbfunc_check( const char *str, ... )
     __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ ));
# endif

int SetDebugCType( void (*dbfunc)(const char *, ...),
                   void (*dbvprintf)(const char *, va_list *),
                   unsigned long dbflags );

void BisonDebugFunc( void *dummy, const char *fmt, ... );

#else

# define SetDebugCType( func, flags ) 0

#endif

#endif