/* ===========================================================================
	File:		GDEBUG.H

	Notes:		API for machine independant debugging

	Author:		Gary Liddon @ 73b

	Created:	Wednesday 27th March 1996

	Copyright (C) 1996 - 1997 Gary Liddon
	All rights reserved. 

  ============================================================================ */

#ifndef __GDEBUG_H__
#define __GDEBUG_H__

/* ---------------------------------------------------------------------------
	Includes
	-------- */

/*	Standard Lib
	------------ */
#include "stdarg.h"


/*	Glib Includes
	------------- */
#include "gtypes.h"


/* ---------------------------------------------------------------------------
	Defines
	------- */

/* ---------------------------------------------------------------------------
	Typedefs
	-------- */
#ifdef __GL_DEBUG__
#define ASSERT(p) ( (p) ? (void)0 : (void) DBG_Error(#p,__FILE__,__LINE__) )
#else
#define ASSERT(p) ( (p) ? (void)0 : (void) DBG_Error(NULL,__FILE__,__LINE__) )
#endif

#ifdef __GL_DEBUG__

#define DBG_MSG0(a)			DBG_SendMessage(a)
#define DBG_MSG1(a,b)		DBG_SendMessage(a,b)
#define DBG_MSG2(a,b,c)		DBG_SendMessage(a,b,c)
#define DBG_MSG3(a,b,c,d)	DBG_SendMessage(a,b,c,d)
#define DBG_MSG4(a,b,c,d,e)	DBG_SendMessage(a,b,c,d,e)

#else

#define DBG_MSG0(a)
#define DBG_MSG1(a,b)
#define DBG_MSG2(a,b,c)
#define DBG_MSG3(a,b,c,d)
#define DBG_MSG4(a,b,c,d,e)

#endif


/* ---------------------------------------------------------------------------
	Enums
	----- */

/* ---------------------------------------------------------------------------
	Id for each file
	---------------- */

/* ---------------------------------------------------------------------------
	Externs
	------- */

/* ---------------------------------------------------------------------------
	Structures
	---------- */

/* ---------------------------------------------------------------------------
	Supported Functions
	------------------- */


#ifdef __cplusplus
extern "C" {
#endif


GLIB_API BOOL	DBG_OpenModule(void);
GLIB_API void	DBG_Halt(void);
GLIB_API void	DBG_PollHost(void);

GLIB_API void	DBG_SendMessage(char *e,...);
GLIB_API void	DBG_SendErrorMessage(char *e,...);

GLIB_API void	DBG_SetMessageHandler(void (*Func)(char *e,va_list argptr));
GLIB_API void	DBG_SetErrorMessageHandler(void (*Func)(char *e,va_list argptr));

GLIB_API void	DBG_Error(char *Text,char *File,int Line);

GLIB_API void	DBG_SetErrorFunc(void (*EFunc)(char *Text,char *File,int Line));
GLIB_API void	DBG_SetPollRoutine(void (*Func)(void));

#ifdef __cplusplus
};
#endif

/* --------------------------------------------------------------------------- */
#endif
/* ---------------------------------------------------------------------------
	ends */