values.h 1.69 KB
fd_value fd_new_value(int min, int max);
bool _fd_val_empty(fd_value domain);
int _fd_val_single(fd_value domain, int *value);
void _fd_free_value(fd_value value);
int _fd_val_max(fd_value domain);
int _fd_val_min(fd_value domain);
int _fd_val_del_min(DOMAIN_REF_T(domain));
int _fd_val_del_max(DOMAIN_REF_T(domain));
int _fd_val_contains_val(fd_value domain, int value);
void _fd_val_set_value(DOMAIN_REF_T(domain), int value);
int _fd_val_del_ge(int value, DOMAIN_REF_T(domain));
int _fd_val_del_gt(int value, DOMAIN_REF_T(domain));
int _fd_val_del_le(int value, DOMAIN_REF_T(domain));
int _fd_val_del_lt(int value, DOMAIN_REF_T(domain));
int _fd_val_del_val(int value, DOMAIN_REF_T(domain));
int _fd_val_del_other(DOMAIN_REF_T(domain), int value);
int _fd_val_intersect(DOMAIN_REF_T(domain1), fd_value domain2);
fd_value _fd_val_clone(fd_value value);
void _fd_val_copy(DOMAIN_REF_T(to), fd_value from);
int _fd_val_size(fd_value domain);
void _fd_val_print(fd_value value);

int (*_fd_val_select)(fd_value domain);
int (*_fd_val_del_select)(DOMAIN_REF_T(domain));

fd_iterator _fd_val_iterator(fd_value);
int _fd_val_has_next(fd_iterator);
int _fd_val_next_element(fd_iterator);
void _fd_val_iterator_dispose(fd_iterator);

void _fd_val_set_value(DOMAIN_REF_T(domain), int value);

#ifdef COMPACT_DOMAINS
void _fd_val_split(DOMAIN_REF_T(src), DOMAIN_REF_T(remaining));
#endif

#if !defined(USE_STORE) || !defined(COMPACT_DOMAINS) || defined(INLINE_DOMAINS)
#  define _fd_init_domain(d, l, u) (d = fd_new_value(l, u))
#else
void _fd_init_domain(DOMAIN_REF_T(domain), int min, int max);
#endif

#ifdef INLINE_DOMAINS
#  define _fd_copy_value(v1, v2) ((v1) = (v2))
#else
#  define _fd_copy_value(v1, v2) _fd_val_copy(v1, v2)
#endif