variables.h 2.21 KB

// XXX: these declarations are also in fdc_int.h; one copy should be removed
extern int fd_variables_count;
extern __thread fd_int _fd_variables[];

extern fd_int *fd__label_vars;
extern int fd__label_vars_count;
extern bool *fd__var_labelled;

fd_int fd_new(int min, int max);
fd_int _fd_var_copy(fd_int variable);
void _fd_var_copy_domain(fd_int to, fd_int from);
void _fd_var_copy_domains(fd_int to[], fd_int from[]);
void _fd_var_copy_values(fd_int to[], int values[]);
void _fd_var_add_constraint(fd_int variable, fd_constraint constraint);
#ifndef fd_domain_empty
int fd_domain_empty(fd_int variable);
#endif
int fd_var_single(fd_int variable, int *value);
int fd_var_value(fd_int variable);
void _fd_revise_connected(fd_constraint constraint, fd_int variable);
void fd_print(fd_int variable);
void fd_println(fd_int variable);
void _fd_print(void);
void _fd_cprint(void);
void _fd_gprint(void);
int _fd_var_max(fd_int variable);
int _fd_var_min(fd_int variable);
int _fd_var_del_ge(int value, fd_int variable);
int _fd_var_del_gt(int value, fd_int variable);
int _fd_var_del_le(int value, fd_int variable);
int _fd_var_del_lt(int value, fd_int variable);
int _fd_var_del_val(int value, fd_int variable);
int _fd_var_del_other(fd_int variable, int value);
int _fd_var_intersect(fd_int variable1, fd_int variable2);
int _fd_var_contains_val(fd_int variable, int value);
void _fd_var_set_value(fd_int variable, int value);

// SEARCH
extern int (*fd__cmp_variables)(fd_int, fd_int);
int fd__cmp_var_size(fd_int, fd_int);
int fd__cmp_var_constraints(fd_int, fd_int);
int fd__cmp_var_size_degree(fd_int, fd_int);
int fd__cmp_var_connections(fd_int, fd_int);
int fd__cmp_var_min(fd_int, fd_int);
int fd__cmp_var_max(fd_int, fd_int);

extern fd_int (*_fd_var_select2)(fd_int _fd_variables[]);
fd_int _fd_select_first_var(fd_int _fd_variables[]);
fd_int _fd_select_first_fail(fd_int _fd_variables[]);
fd_int _fd_select_most_constrained(fd_int _fd_variables[]);
fd_int _fd_select_size_degree(fd_int _fd_variables[]);
fd_int _fd_select_most_connected(fd_int _fd_variables[]);
fd_int _fd_select_random_var(fd_int _fd_variables[]);
fd_int _fd_select_min_value(fd_int _fd_variables[]);
fd_int _fd_select_max_value(fd_int _fd_variables[]);
fd_int _fd_var_select(void);