/*
 * Freya remote debug IL definitions Ver1.0
 *	author: c.mos@zob.ne.jp
 */

#ifndef _DEBUG_H_
#define _DEBUG_H_

#include <sys/types.h>
#include <sys/indirect.h>
#include <sys/process.h>

typedef struct {
	IL super;
	int (far *_exec)(int argc, char far *argv[]);
	void (far *_set_trace_mode)(BOOL mode);
	BOOL (far *_get_trace_mode)();
} DebugIL;

//extern DebugIL debugIL;

DebugIL debugIL;

#define set_trace_mode		debugIL._set_trace_mode
#define get_trace_mode		debugIL._get_trace_mode

#define open_debug_il(debugILp) (ilibIL->_open("@frdeb", (IL far *)debugILp)) 

#ifdef _DEBUG
  #define INIT_BREAK if(open_debug_il(&debugIL) == E_FS_SUCCESS) set_trace_mode(1)
  #ifndef BREAK
	#ifdef __TURBOC__
	  #define BREAK		__int__(3)
	#else
	  #define BREAK		_asm_inline("\tint\t3")
	#endif
	#define STATIC
  #endif
#else
  #define INIT_BREAK
  #ifndef BREAK
	#define BREAK
	#define STATIC static
  #endif
#endif

#endif _DEBUG_H_
