My Project
debian-1:4.1.1-p2+ds-4build3
factory
cf_assert.h
Go to the documentation of this file.
1
/* emacs edit mode for this file is -*- C -*- */
2
3
/**
4
* @file cf_assert.h
5
*
6
* assertions for Factory
7
*
8
* @note needs --enable-assertions at configure
9
**/
10
11
/* This is for compatibility with standard cf_assert.h */
12
#if defined (SING_NDEBUG) && ! defined (NOASSERT)
13
#define NOASSERT
14
#endif
15
16
/* It should be possible to include this file multiple times for different */
17
/* settings of NOASSERT */
18
19
/* {{{ undefines */
20
#undef __ASSERT
21
#undef __ASSERT1
22
#undef STICKYASSERT
23
#undef STICKYASSERT1
24
#undef ASSERT
25
#undef ASSERT1
26
27
#undef __WARN
28
#undef STICKYWARN
29
#undef WARN
30
31
#undef PVIRT_VOID
32
#undef PVIRT_INTCF
33
#undef PVIRT_BOOL
34
#undef PVIRT_INT
35
#undef PVIRT_CHARCC
36
/* }}} */
37
38
#ifdef __cplusplus
39
#ifndef NOSTREAMIO
40
#ifdef HAVE_CSTDIO
41
#include <cstdio>
42
#include <cstdlib>
43
#else
44
extern
"C"
{
45
#include <stdio.h>
46
#include <stdlib.h>
47
}
48
#endif
49
#else
50
#include <stdio.h>
51
#include <stdlib.h>
52
#endif
53
#endif
54
55
/* {{{ permanent macro definitions */
56
#ifndef __GNUC__
57
#define __ASSERT(expression, message, file, line) \
58
(fprintf( stderr, "error: " message "\n%s:%u: failed assertion `%s'\n", \
59
file, line, expression ), abort(), 0 )
60
#define __ASSERT1(expression, message, parameter1, file, line) \
61
(fprintf( stderr, "error: " message "\n%s:%u: failed assertion `%s'\n", \
62
parameter1, file, line, expression ), abort(), 0 )
63
64
#define STICKYASSERT(expression, message) \
65
((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__)))
66
#define STICKYASSERT1(expression, message, parameter1) \
67
((void)((expression) ? 0 : __ASSERT1(#expression, message, parameter1, __FILE__, __LINE__)))
68
69
#define __WARN(expression, message, file, line) \
70
(fprintf( stderr, "warning: " message "\n%s:%u: failed assertion `%s'\n", \
71
file, line, expression ), 0 )
72
#define STICKYWARN(expression, message) \
73
((void)((expression) ? 0 : __WARN(#expression, message, __FILE__, __LINE__)))
74
#else
/* __GNUCC__ */
75
/* use preprocessor macro __PRETTY_FUNCTION__ for more informative output */
76
#define __ASSERT(expression, message, file, line, function) \
77
(fprintf( stderr, "error: " message "\n%s:%u: In function `%s':\nfailed assertion `%s'\n", \
78
file, line, function, expression ), abort(), 0 )
79
#define __ASSERT1(expression, message, parameter1, file, line, function) \
80
(fprintf( stderr, "error: " message "\n%s:%u: In function `%s':\nfailed assertion `%s'\n", \
81
parameter1, file, line, function, expression ), abort(), 0 )
82
83
#define STICKYASSERT(expression, message) \
84
((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__, __PRETTY_FUNCTION__)))
85
#define STICKYASSERT1(expression, message, parameter1) \
86
((void)((expression) ? 0 : __ASSERT1(#expression, message, parameter1, __FILE__, __LINE__, __PRETTY_FUNCTION__)))
87
88
#define __WARN(expression, message, file, line, function) \
89
(fprintf( stderr, "warning: " message "\n%s:%u: In function `%s':\nfailed assertion `%s'\n", \
90
file, line, function, expression ), 0 )
91
#define STICKYWARN(expression, message) \
92
((void)((expression) ? 0 : __WARN(#expression, message, __FILE__, __LINE__, __PRETTY_FUNCTION__)))
93
#endif
/* __GNUCC__ */
94
/* }}} */
95
96
/* {{{ macro definitions dependent on NOASSERT */
97
#ifndef NOASSERT
98
#ifndef __GNUC__
99
#define ASSERT(expression, message) \
100
((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__)))
101
#define ASSERT1(expression, message, parameter1) \
102
((void)((expression) ? 0 : __ASSERT1(#expression, message, parameter1, __FILE__, __LINE__)))
103
104
#define WARN(expression, message) \
105
((void)((expression) ? 0 : __WARN(#expression, message, __FILE__, __LINE__)))
106
#else
/* __GNUCC__ */
107
/* use preprocessor macro __PRETTY_FUNCTION__ for more informative output */
108
#define ASSERT(expression, message) \
109
((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__, __PRETTY_FUNCTION__)))
110
#define ASSERT1(expression, message, parameter1) \
111
((void)((expression) ? 0 : __ASSERT1(#expression, message, parameter1, __FILE__, __LINE__, __PRETTY_FUNCTION__)))
112
113
#define WARN(expression, message) \
114
((void)((expression) ? 0 : __WARN(#expression, message, __FILE__, __LINE__, __PRETTY_FUNCTION__)))
115
#endif
/* __GNUCC__ */
116
117
#define PVIRT_VOID(msg) \
118
{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); }
119
#define PVIRT_INTCF(msg) \
120
{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return 0; }
121
#define PVIRT_BOOL(msg) \
122
{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return false; }
123
#define PVIRT_INT(msg) \
124
{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return 0; }
125
#define PVIRT_CHARCC(msg) \
126
{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return 0; }
127
#else
/* NOASSERT */
128
#define ASSERT(expression, message) do {} while (0)
129
#define ASSERT1(expression, message, parameter1) do {} while (0)
130
131
#define WARN(expression, message) do {} while (0)
132
133
#define PVIRT_VOID(msg) = 0
134
#define PVIRT_INTCF(msg) = 0
135
#define PVIRT_BOOL(msg) = 0
136
#define PVIRT_INT(msg) = 0
137
#define PVIRT_CHARCC(msg) = 0
138
#endif
/* NOASSERT */
139
/* }}} */
Generated on Mon Aug 17 2020 08:20:08 for My Project by
doxygen 1.8.18
for
Singular debian-1:4.1.1-p2+ds-4build3