]> pd.if.org Git - pdclib/blobdiff - includes/assert.h
Various updates. Made assert() no longer rely on standard version. Removed _PDCLIB_C_...
[pdclib] / includes / assert.h
index f99ccd785fbb7431c47b2b71d4c25e6c6369ae40..c6054e916ec0cf68efb16aa67f4cf4fa6d8837dd 100644 (file)
@@ -1,35 +1,35 @@
-// ----------------------------------------------------------------------------
-// $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().
-// ----------------------------------------------------------------------------
+/* Diagnostics <assert.h>
 
-#ifndef __ASSERT_H
-#define __ASSERT_H __ASSERT_H
+   This file is part of the Public Domain C Library (PDCLib).
+   Permission is granted to use, modify, and / or redistribute at will.
+*/
 
-// ----------------------------------------------------------------------------
-// AUXILIARY
+#include <_PDCLIB_aux.h>
 
-// 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
-
-// ----------------------------------------------------------------------------
-// DEFINES
-
-// TODO: Check the macro for if-compatibility.
+#ifndef _PDCLIB_ASSERT_H
+#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H
+void _PDCLIB_assert99( char const * const, char const * const, char const * const );
+void _PDCLIB_assert89( char const * const );
+#endif
 
+/* If NDEBUG is set, assert() is a null operation. */
 #undef assert
-#if defined NDEBUG
-#define assert( x ) ( (void) 0 )
+
+#ifdef NDEBUG
+#define assert( ignore ) ( (void) 0 )
 #else
-#define assert( x ) ( x ) ? ( (void) 0 ) \
-                          :  __assert( #x, __FILE__, __func__, __LINE__ )
+#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
-
-#endif // __ASSERT_H