xref: /onnv-gate/usr/src/cmd/man/src/util/nsgmls.src/include/macros.h (revision 0:68f95e015346)
1 // Copyright (c) 1994 James Clark
2 // See the file COPYING for copying permission.
3 #pragma ident	"%Z%%M%	%I%	%E% SMI"
4 
5 #ifndef macros_INCLUDED
6 #define macros_INCLUDED 1
7 
8 #ifndef __GNUG__
9 #define __attribute__(args) /* as nothing */
10 #endif
11 
12 #ifdef NDEBUG
13 
14 #include <stdlib.h>
15 #define ASSERT(expr) ((void)0)
16 #define CANNOT_HAPPEN() ((void)abort())
17 
18 #else /* not NDEBUG */
19 
20 #ifdef SP_NAMESPACE
21 namespace SP_NAMESPACE {
22 #endif
23 extern SP_API void assertionFailed(const char *, const char *, int)
24      __attribute__((noreturn));
25 #ifdef SP_NAMESPACE
26 }
27 #endif
28 
29 #define ASSERT(expr) \
30   ((void)((expr) || \
31   (::SP_NAMESPACE_SCOPE assertionFailed(# expr, __FILE__, __LINE__), 0)))
32 #define CANNOT_HAPPEN() ASSERT(0)
33 
34 #endif /* not NDEBUG */
35 
36 #define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
37 
38 #endif /* not macros_INCLUDED */
39