 
#ifndef __dl_debug_h
#define __dl_debug_h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __dl_core_h
#include "Core.h"
#endif
#ifndef __dl_error_h
#include "Error.h"
#endif
typedef void (*debug_signalhandlerfn)( int sig, void *reference);
#if !defined( DeskLib_DEBUG) && !defined( _DeskLib_Debug)
#define Debug_Initialise()
#define Debug_InitialiseSignal()
#define Debug_ReleaseSignal()
#define Debug_Print( text)
#define Debug_ClaimSignal( fn, reference)
#define Debug_Assert( expression)
#define Debug_Error_CheckFatal( errfn) Error_CheckFatal( errfn);
#define Debug_Printf Debug_Dummyf
#else
void Debug_Initialise( void);
void Debug_InitialiseSignal( void);
void Debug_ClaimSignal( debug_signalhandlerfn fn, void *reference);
void Debug_ReleaseSignal( void);
int Debug_Printf( const char *format, ...);
void Debug_Print( const char *text);
#define Debug_Error_CheckFatal( errfn) \
do { \
os_error *debug__e = errfn; \
if ( debug__e) { \
Error_ReportFatal( \
debug__e->errnum, \
error_PLACE "%s", \
debug__e->errmess \
); \
} \
} \
while (0)
void Debug__Assert( const char *expression, char *sourcefile, int line);
#define Debug_Assert( expression) \
( \
(expression) \
? \
(void) 0 \
: \
Debug__Assert( #expression, __FILE__, __LINE__) \
)
#endif
int Debug__Dummyf( const char *format, ...);
#define Debug_Dummyf (TRUE) ? 0 : Debug__Dummyf
extern int debug_level;
#define Debug1_Printf (debug_level<1) ? 0 : Debug_Printf
#define Debug2_Printf (debug_level<2) ? 0 : Debug_Printf
#define Debug3_Printf (debug_level<3) ? 0 : Debug_Printf
#define Debug4_Printf (debug_level<4) ? 0 : Debug_Printf
#define Debug5_Printf (debug_level<5) ? 0 : Debug_Printf
#ifdef __cplusplus
}
#endif
#endif
