X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=includes%2Fassert.h;h=d5d61ecc606b5c8a1bef80faab2ac6e1c8691f6a;hb=d7b8babd5baa57655500362845a6bf78a79a8e16;hp=e4363f510f42ad4768d35ed28cd523452da61fa8;hpb=3f035390c831709593428e88bb1c640604434d60;p=pdclib.old diff --git a/includes/assert.h b/includes/assert.h index e4363f5..d5d61ec 100644 --- a/includes/assert.h +++ b/includes/assert.h @@ -1,38 +1,51 @@ -// ---------------------------------------------------------------------------- -// $Id$ -// ---------------------------------------------------------------------------- -// Public Domain C Library - http://pdclib.sourceforge.net -// This code is Public Domain. Use, modify, and redistribute at will. -// ---------------------------------------------------------------------------- -// Provides the debug macro assert(). -// ---------------------------------------------------------------------------- +/* $Id$ */ -#ifndef __ASSERT_H -#define __ASSERT_H __ASSERT_H +/* Release $Name$ */ -// ---------------------------------------------------------------------------- -// AUXILIARY +/* 7.2 Diagnostics -// Helper function doing the print to stderr and call to abort(). -void __assert( char const * const expression, // the tested expression - char const * const file, // name of source file - char const * const function, // name of function - int const line ); // number of source file line + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ -// ---------------------------------------------------------------------------- -// DEFINES +#ifndef _PDCLIB_AUX_H +#define _PDCLIB_AUX_H _PDCLIB_AUX_H +#include <_PDCLIB_aux.h> +#endif -// TODO: is given as (void) 0, which might give a "C style -// cast" warning under C++. Find a void expression that does not give warnings. +#ifndef _PDCLIB_CONFIG_H +#define _PDCLIB_CONFIG_H _PDCLIB_CONFIG_H +#include <_PDCLIB_config.h> +#endif -// TODO: Check the macro for if-compatibility. +#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 -#if defined NDEBUG -#define assert( x ) + +#ifdef NDEBUG +#define assert( ignore ) ( (void) 0 ) #else -#define assert( x ) ( x ) ? \ - : __assert( #x, __FILE__, __func__, __LINE__ ) +#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 -#endif // __ASSERT_H