#ifndef __ACE_CUBE_H__
#define __ACE_CUBE_H__

#include "ace.h"
//#include "avl.h"
//#include "espresso.h"

//////////////// Espresso Cube Functions //////////////////
#define fail(why) {\
		(void) fprintf(stderr, "Fatal error: file %s, line %d\n%s\n",\
				__FILE__, __LINE__, why);\
				(void) fflush(stdout);\
				abort();\
				}

#define LOOPINIT(size)		((size <= BPI) ? 1 : WHICH_WORD((size)-1))

#define BPI            32
#define LOGBPI          5

#define WHICH_WORD(element)     (((element) >> LOGBPI) + 1)
#define WHICH_BIT(element)      ((element) & (BPI-1))

#define GETINPUT(c, pos)\
    ((c[WHICH_WORD(2*pos)] >> WHICH_BIT(2*pos)) & 3)

#define node_get_literal(c_, j_) 					\
		((c_) ? GETINPUT((c_), (j_)) :  node_error(2))

#define TWO     3
#define DASH    3
#define ONE     2
#define ZERO    1

typedef unsigned int *pset;

#define ALLOC(type, num)	\
    ((type *) malloc(sizeof(type) * (num)))

#define set_remove(set, e)      (set[WHICH_WORD(e)] &= ~ (1 << WHICH_BIT(e)))
#define set_insert(set, e)      (set[WHICH_WORD(e)] |= 1 << WHICH_BIT(e))
#define set_new(size)			ALLOC(unsigned int, SET_SIZE(size)), size

/* # of ints needed to allocate a set with "size" elements */
#define SET_SIZE(size)          ((size) <= BPI ? 2 : (WHICH_WORD((size)-1) + 1))

typedef struct {
	pset cube;
	int num_literals;
	double static_prob;
} ace_cube_t;

ace_cube_t * ace_cube_new_dc(int num_literals);
ace_cube_t * ace_cube_dup(ace_cube_t * cube);
void ace_cube_free(ace_cube_t * cube);

#endif
