#ifndef _H_LOWLEVEL_
#define _H_LOWLEVEL_

#if defined(_NO_PROTO_) || !(defined(__STDC__) || defined(__cplusplus))
#define _ANSI_PROTO_(x)	()
#else
#define _ANSI_PROTO_(x)	x
#endif

extern void fatal _ANSI_PROTO_((char*,int,char*,...));
extern void error _ANSI_PROTO_((char*,int,char*,...));
extern void warning _ANSI_PROTO_((char*,int,char*,...));
extern void inform _ANSI_PROTO_((char*,int,char*,...));
extern void assert_failed _ANSI_PROTO_((char*,int,char*));
extern void syserr _ANSI_PROTO_((char*,int));

#undef assert

#ifdef NDEBUG
#define assert(EX) ((void)0)
#else
#ifdef __ANSI_CPP__
#define assert(EX)  ((EX)?((void)0):assert_failed(__FILE__, __LINE__,  # EX ))
#else
#define assert(EX)  ((EX)?((void)0):assert_failed(__FILE__, __LINE__, "EX"))
#endif
#endif

#endif /* _H_LOWLEVEL_ */



syntax highlighted by Code2HTML, v. 0.9.1