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 | 36 | int _fd_var_contains_val(fd_int variable, int value); |
| 37 | 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 | 57 | // SEARCH |
| 40 | 58 | extern int (*fd__cmp_variables)(fd_int, fd_int); |
| 41 | 59 | int fd__cmp_var_size(fd_int, fd_int); | ... | ... |