X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=includes%2Fassert.h;fp=includes%2Fassert.h;h=d5d61ecc606b5c8a1bef80faab2ac6e1c8691f6a;hb=4c805021b487dff9bfc6341c998ba99636416ae7;hp=0000000000000000000000000000000000000000;hpb=a1bf72a143e4756b80c8306e6eef3deee215546c;p=pdclib diff --git a/includes/assert.h b/includes/assert.h new file mode 100644 index 0000000..d5d61ec --- /dev/null +++ b/includes/assert.h @@ -0,0 +1,51 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* 7.2 Diagnostics + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#ifndef _PDCLIB_AUX_H +#define _PDCLIB_AUX_H _PDCLIB_AUX_H +#include <_PDCLIB_aux.h> +#endif + +#ifndef _PDCLIB_CONFIG_H +#define _PDCLIB_CONFIG_H _PDCLIB_CONFIG_H +#include <_PDCLIB_config.h> +#endif + +#ifndef _PDCLIB_ASSERT_H +#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H +#if _PDCLIB_C_VERSION == 99 +void _PDCLIB_assert( char const * const, char const * const, char const * const ); +#else +void _PDCLIB_assert( char const * const ); +#endif +#endif + +/* If NDEBUG is set, assert() is a null operation. */ +#undef assert + +#ifdef NDEBUG +#define assert( ignore ) ( (void) 0 ) +#else +#if _PDCLIB_C_VERSION == 99 +#define assert( expression ) ( ( expression ) ? (void) 0 \ + : _PDCLIB_assert( "Assertion failed: " #expression \ + ", function ", __func__, \ + ", file " __FILE__ \ + ", line " _PDCLIB_symbol2string( __LINE__ ) \ + "." _PDCLIB_endl ) ) +#else +#define assert( expression ) ( ( expression ) ? (void) 0 \ + : _PDCLIB_assert( "Assertion failed: " #expression \ + ", file " __FILE__ \ + ", line " _PDCLIB_symbol2string( __LINE__ ) \ + "." _PDCLIB_endl ) ) +#endif +#endif +