// Rowley C Compiler, runtime support.
//
// Copyright (c) 2001, 2002, 2010 Rowley Associates Limited.
//
// This file may be distributed under the terms of the License Agreement
// provided with this software.
//
// THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// Can include <assert.h> multiple times, so this doesn't use the standard
// #ifndef/#define idiom.
#ifndef __assert_h
#define __assert_h
#ifdef __cplusplus
extern "C" {
#endif
/*! \brief User defined behaviour for the assert macro \ingroup Functions \synopsis
\desc There is no default implementation of \b \this. Keeping \b \this
out of the library means that you can can customize its behaviour without rebuilding
the library. You must implement this function where \a expression is the stringized
expression, \a filename is the filename of the source file and \a line
is the linenumber of the failed assertion.
*/
extern void __assert(const char *__expression, const char *__filename, int __line);
#ifdef __cplusplus
}
#endif
#else
#undef assert
#endif
#ifdef NDEBUG
#define assert(ignore) ((void)0)
#else
#define assert(e) ((e) ? (void)0 : __assert(#e, __FILE__, __LINE__))
#endif
#ifdef __CROSSWORKS_DOCUMENTATION
/*! \brief Allows you to place assertions and diagnostic tests into programs \ingroup Macros \synopsis
\desc If \b NDEBUG is defined as a macro name at the point in the source file
where \b <assert.h> is included, the \b \this macro is defined
as:
\code #define assert(ignore) ((void)0) \endcode
If \b NDEBUG is not defined as a macro name at the point in the source
file where \b <assert.h> is included, the \b \this macro expands
to a \b void expression that calls \b __assert.
\code #define assert(e) ((e) ? (void)0 : __assert(#e, __FILE__, __LINE__)) \endcode
When such an \b \this
is executed and \b e is false, \b \this calls the \b __assert
function with information about the particular call that failed: the text of
the argument, the name of the source file, and the source line number. These
are the stringized expression and the values of the preprocessing macros \b __FILE__
and \b__LINE__.
\note The \b \this macro is redefined according to the current state of \b NDEBUG
each time that \b <assert.h> is included.
*/
#define assert(e) ..
#endif