/*  DO NOT EDIT THIS FILE.

    It has been auto-edited by fixincludes from:

	"fixinc/tests/inc/assert.h"

    This had to be done to correct non-standard usages in the
    original, manufacturer supplied header file.  */

#ifndef FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB
#define FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB 1

#ifdef __cplusplus
#include <stdlib.h>
#endif
#ifndef FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO
#define FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO 1

#include <stdio.h>


#if defined( AIX_ASSERT_CHECK )
#ifndef __cplusplus
#define static_assert _Static_assert
#endif
#endif  /* AIX_ASSERT_CHECK */


#if defined( ALPHA___ASSERT_CHECK )
extern void __assert(const char *, const char *, int);
#endif  /* ALPHA___ASSERT_CHECK */


#if defined( ALPHA_ASSERT_CHECK )
#define assert(EX) ((EX) ? (void)0 : __assert(#EX, __FILE__, __LINE__))
#endif  /* ALPHA_ASSERT_CHECK */


#if defined( BROKEN_ASSERT_STDIO_CHECK )
extern FILE* stderr;
#endif  /* BROKEN_ASSERT_STDIO_CHECK */


#if defined( BROKEN_ASSERT_STDLIB_CHECK )
extern void exit ( int );
#endif  /* BROKEN_ASSERT_STDLIB_CHECK */

#endif  /* FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO */

#endif  /* FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB */
