/*************************************************************************
*									 *
*	 YAP Prolog    @(#)amidefs.h	1.3 3/15/90
*									 *
*	Yap Prolog was developed at NCCUP - Universidade do Porto	 *
*									 *
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997	 *
*									 *
**************************************************************************
*									 *
* File:		tracer.h						 *
* Last rev:								 *
* mods:									 *
* comments:	definitions for low level tracer			 *
*									 *
*************************************************************************/

#ifdef LOW_LEVEL_TRACER

typedef enum {
  enter_pred,
  try_or,
  retry_or,
  retry_pred,
  retry_table_generator,
  retry_table_consumer,
  retry_table_loader
} yap_low_level_port;

#ifdef saveregs
#define low_level_trace(Port, pred, args)                                      \
  {                                                                            \
    saveregs();                                                                \
    low_level_trace__(Port, pred, args);                                       \
    setregs();                                                                 \
  }
#else
#define low_level_trace(Port, pred, args) low_level_trace__(Port, pred, args)
#endif

extern bool low_level_trace__(yap_low_level_port, PredEntry *, CELL *);
extern void Yap_InitLowLevelTrace(void);
extern void toggle_low_level_trace(void);

#endif