62 if ((q < 1) || (q >
x.size()))
68 l=std::max(0,l); u=std::min(q,u);
76 if ((0 == l) && (q == u))
81 for (
int i=0; i<
x.size(); i++) {
91 for (
int i=0; i<
x.size(); i++) {
103 (home,xv,s.
min(),q,l,u)));
114 if ((s.
min() < 0) || (s.
max() > 1))
127 if ((q < 1) || (q >
x.size()))
133 l=std::max(0,l); u=std::min(q,u);
141 if ((0 == l) && (q == u))
145 if ((s.
min() == 0) && (s.
max() == 1)) {
146 if ((l > 0) || (u < q))
150 assert(s.
min() == s.
max());
155 for (
int i=0; i<
x.size(); i++) {
159 assert(s.
min() == 1);
160 for (
int i=0; i<
x.size(); i++) {
170 for (
int i=0; i<
x.size(); i++) {
174 assert(s.
min() == 1);
175 for (
int i=0; i<
x.size(); i++) {
186 (home,xv,s.
min(),q,l,u)));
Passing Boolean variables.
Home class for posting propagators
void fail(void)
Mark space as failed.
Range iterator for integer sets.
int min(int i) const
Return minimum of range at position i.
int max(int i) const
Return maximum of range at position i.
unsigned int size(void) const
Return size (cardinality) of set.
Passing integer variables.
Exception: Arguments contain same variable multiply
Boolean view for Boolean variables.
bool zero(void) const
Test whether view is assigned to be zero.
bool one(void) const
Test whether view is assigned to be one.
Integer view for integer variables.
ModEvent inter_r(Space &home, I &i, bool depends=true)
Intersect domain with ranges described by i.
ModEvent minus_r(Space &home, I &i, bool depends=true)
Remove from domain the ranges described by i.
Exception: Not 0/1 integer
Exception: Value out of limits
static ExecStatus post(Home home, ViewArray< View > &x, Val s, int q, int l, int u)
Post propagator for.
Exception: Too few arguments available in argument array
#define GECODE_POST
Check for failure in a constraint post function.
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
#define GECODE_ME_FAIL(me)
Check whether modification event me is failed, and fail space home.
IntPropLevel
Propagation levels for integer propagators.
void check(int n, const char *l)
Check whether n is in range, otherwise throw out of limits with information l.
Gecode toplevel namespace
void sequence(Home home, const IntVarArgs &x, const IntSet &s, int q, int l, int u, IntPropLevel ipl=IPL_DEF)
Post propagator for .
bool same(VarArgArray< Var > x, VarArgArray< Var > y)
Post propagator for SetVar x