]> pd.if.org Git - pdclib/blobdiff - includes/assert.h
* Change the style of inclusion of the internal/ headers. Modern preprocessors
[pdclib] / includes / assert.h
index fb6dbf1b1b63a5118cf523c3f2c6567b953b580f..7874167258675dcb713b9e2f69328db9f2e2b4ad 100644 (file)
@@ -6,44 +6,40 @@
    Permission is granted to use, modify, and / or redistribute at will.
 */
 
-#ifndef _PDCLIB_AUX_H
-#define _PDCLIB_AUX_H _PDCLIB_AUX_H
+#ifndef _PDCLIB_ASSERT_H
+#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H
 #include <_PDCLIB_aux.h>
-#endif
-
-#ifndef _PDCLIB_CONFIG_H
-#define _PDCLIB_CONFIG_H _PDCLIB_CONFIG_H
 #include <_PDCLIB_config.h>
-#endif
+_PDCLIB_BEGIN_EXTERN_C
 
-#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
+void _PDCLIB_assert99( char const * const, char const * const, char const * const );
+void _PDCLIB_assert89( char const * const );
 
 /* If NDEBUG is set, assert() is a null operation. */
 #undef assert
 
 #ifdef NDEBUG
 #define assert( ignore ) ( (void) 0 )
+#elif _PDCLIB_C_VERSION >= 99
+#define assert(expression) \
+    do { if(!(expression)) \
+        _PDCLIB_assert99("Assertion failed: " #expression \
+                         ", function ", __func__, \
+                         ", file " __FILE__ \
+                         ", line " _PDCLIB_symbol2string( __LINE__ ) \
+                         "." _PDCLIB_endl ); \
+    } while(0)
 #else
-#if _PDCLIB_C_VERSION == 99
-#define assert( expression ) ( ( expression ) ? (void) 0 \
-        : _PDCLIB_assert( "Assertion failed: " #expression \
-                          ", function ", __func__, \
+#define assert(expression) \
+    do { \
+        if(!(expression)) \
+            _PDCLIB_assert89( "Assertion failed: " #expression \
                           ", 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 ) )
+                          "." _PDCLIB_endl ); \
+    } while(0)
 #endif
+
+_PDCLIB_END_EXTERN_C
 #endif