Commit acfea9573fd7a9b289e6d5abb58bc78ff73224d4
1 parent
65f52800
Exists in
master
new fd_update_domain{,_and_check} macros
Showing
1 changed file
with
18 additions
and
0 deletions
Show diff stats
src/variables.h
@@ -36,6 +36,24 @@ int _fd_var_intersect(fd_int variable1, fd_int variable2); | @@ -36,6 +36,24 @@ int _fd_var_intersect(fd_int variable1, fd_int variable2); | ||
36 | int _fd_var_contains_val(fd_int variable, int value); | 36 | int _fd_var_contains_val(fd_int variable, int value); |
37 | void _fd_var_set_value(fd_int variable, int value); | 37 | void _fd_var_set_value(fd_int variable, int value); |
38 | 38 | ||
39 | +#define fd_update_domain(op,var,value) \ | ||
40 | + { \ | ||
41 | + _fd_var_ ## op(var, value); \ | ||
42 | + \ | ||
43 | + _fd_revise_connected(var); \ | ||
44 | + } | ||
45 | + | ||
46 | +#define fd_update_domain_and_check(op, val, var) \ | ||
47 | + { \ | ||
48 | + if (_fd_var_ ## op(val, var)) \ | ||
49 | + { \ | ||
50 | + if (fd_domain_empty(var)) \ | ||
51 | + return FD_NOSOLUTION; \ | ||
52 | + \ | ||
53 | + _fd_revise_connected(this, var); \ | ||
54 | + } \ | ||
55 | + } | ||
56 | + | ||
39 | // SEARCH | 57 | // SEARCH |
40 | extern int (*fd__cmp_variables)(fd_int, fd_int); | 58 | extern int (*fd__cmp_variables)(fd_int, fd_int); |
41 | int fd__cmp_var_size(fd_int, fd_int); | 59 | int fd__cmp_var_size(fd_int, fd_int); |