#ifndef __CUT_C_H__
#define __CUT_C_H__

/* Some definitions */
#define Choice_Point_Type void *

/* necessary for not redefine NULL*/
#ifndef NULL
#define NULL nil
#endif

typedef struct cut_c_str *cut_c_str_ptr;
struct cut_c_str {
  cut_c_str_ptr before;
  void *try_userc_cut_yamop;
};

#define CUT_C_STR_SIZE ((sizeof(struct cut_c_str)) / (sizeof(CELL)))

#define EXTRA_CBACK_CUT_ARG(Type, Offset) EXTRA_CBACK_ARG(PP->ArityOfPE, Offset)

#define CBACK_CUT_ARG(Offset) B->cp_args[(Offset)-1]

#define CUT_C_PUSH(YAMOP, S_YREG)

#define POP_CHOICE_POINT(cp) false
#define POP_EXECUTE() 

#define POP_FAIL(handler) 
#define POP_FAIL_EXECUTE(handler) 

/*Initializes CUT_C_TOP*/
void cut_c_initialize(int wid);

/*Removes a choice_point from the stack*/
void cut_c_pop(void);

/*Insert a choice_point in the stack*/
void cut_c_push(cut_c_str_ptr);

#endif /*_CUT_C_H__*/