#ifndef SML3__ASSERT_H_
#define SML3__ASSERT_H_

/* ++++++++++++++++++++
 * +++ Beschreibung +++
 * ++++++++++++++++++++

  assert()-Funktion mit Fehlerausgabe nach stderr.
+++ */


/* ++++++++++++++++++ */
/* +++ Funktionen +++ */
/* ++++++++++++++++++ */

#include <sys/types.h>
#include <stdarg.h>


/** SML3_assert [thread-sicher]:
 * prueft Bedingung, wenn falsch, gibt Fehlermeldung nach stderr aus und ruft abort() auf
 * 1.Arg: Bedingung
 * 2.Arg: Format (oder NULL = keine Fehlerausgabe)
 * weitere Arg: Formatvariablen (falls 2.Arg != NULL)
 *
 * Bsp:  SML3_assert(ival != 0, "ival = %d", ival);
 */
#define SML3_assert(condit, ...)  _SML3_assert(__FILE__, SML3_funcname, __LINE__, condit, __VA_ARGS__)

/* wird nicht direkt aufgerufen */
extern void _SML3_assert(const char *, const char *, int, int, ...);

#endif /* SML3__ASSERT_H_ */
