aboutsummaryrefslogtreecommitdiffstats
path: root/src/pdclib/include/assert.h
blob: a5c1a8e24a05ebe14bcc6eb91235ff5a4f22d965 (plain)
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
/* Diagnostics <assert.h>

   This file is part of the Public Domain C Library (PDCLib).
   Permission is granted to use, modify, and / or redistribute at will.
*/

#include "pdclib/_PDCLIB_aux.h"

#ifndef _PDCLIB_ASSERT_H
#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H
void _PDCLIB_assert99( const char * const, const char * const, const char * const );
void _PDCLIB_assert89( const char * const );
#endif

/* If NDEBUG is set, assert() is a null operation. */
#undef assert

#ifdef NDEBUG
#define assert( ignore ) ( (void) 0 )
#else
#if __STDC_VERSION__ >= 199901L
#define assert( expression ) ( ( expression ) ? (void) 0 \
        : _PDCLIB_assert99( "Assertion failed: " #expression \
                            ", function ", __func__, \
                            ", file " __FILE__ \
                            ", line " _PDCLIB_symbol2string( __LINE__ ) \
                            "." _PDCLIB_endl ) )
#else
#define assert( expression ) ( ( expression ) ? (void) 0 \
        : _PDCLIB_assert89( "Assertion failed: " #expression \
                            ", file " __FILE__ \
                            ", line " _PDCLIB_symbol2string( __LINE__ ) \
                            "." _PDCLIB_endl ) )
#endif
#endif