38 namespace Gecode {
namespace Int {
45 BoolVarImp::BoolVarImp(
int n) {
47 bits() |= (n << 1) | n;
53 bits() |= (max << 1) | min;
67 return static_cast<int>(
bits() & 1);
71 return static_cast<int>((
bits() & 2) >> 1);
122 return (n >=
min()) && (n <=
max());
126 return (n >=
min()) && (n <=
max());
229 return (n == 0) ?
zero(home):
one(home);
234 return (n == 0) ?
zero(home):
one(home);
240 return (n == 0) ?
one(home):
zero(home);
245 return (n == 0) ?
one(home):
zero(home);
266 return new (home)
BoolVarImp(home,share,*
this);
280 assert((i.min() == 0) || (i.min() == 1));
281 assert((i.max() == 0) || (i.max() == 1));
299 while (
i() && (i.max() < 0))
302 if (!
i() || (i.min() > 1))
304 assert(i.min() <= 1);
309 assert((i.min() <= 0) && (i.max() >= 1));
316 while (
i() && (i.max() < 0))
319 if (!
i() || (i.min() > 1))
321 assert(i.min() <= 1);
326 assert((i.min() <= 0) && (i.max() >= 1));
340 }
while (
i() && (i.val() == 0));
345 assert(i.val() == 1);
352 while (
i() && (i.val() < 0))
354 if (!
i() || (i.val() > 1))
359 }
while (
i() && (i.val() == 0));
360 if (!
i() || (i.val() > 1))
364 assert(i.val() == 1);
371 while (
i() && (i.val() < 0))
373 if (!
i() || (i.val() > 1))
378 }
while (
i() && (i.val() == 0));
379 if (!
i() || (i.val() > 1))
383 assert(i.val() == 1);
ModEvent minus_r(Space &home, I &i, bool depends=true)
Remove from domain the ranges described by i.
bool assigned(void) const
Test whether variable is assigned.
ModEvent gq(Space &home, int n)
Restrict domain values to be greater or equal than n.
unsigned int width(void) const
Return width of domain (distance between maximum and minimum)
unsigned int regret_max(void) const
Return regret of domain maximum (distance to next smaller value)
unsigned int regret_min(void) const
Return regret of domain minimum (distance to next larger value)
int med(void) const
Return median of domain (greatest element not greater than the median)
unsigned int BoolStatus
Type for status of a Boolean variable.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
static const BoolStatus NONE
Status of domain not yet assigned.
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p with propagation condition pc.
ModEvent zero_none(Space &home)
Assign unassigned variable to zero.
int min(void) const
Return minimum of domain.
const ModEvent ME_GEN_ASSIGNED
Generic modification event: variable is assigned a value.
int ModEvent
Type for modification events.
static void schedule(Space &home, Propagator &p, ModEvent me, bool force=false)
Schedule propagator p with modification event me.
bool zero(void) const
Test whether variable is assigned to zero.
ModEvent minus_v(Space &home, I &i, bool depends=true)
Remove from domain the values described by i.
static bool any(const Delta &d)
Test whether arbitrary values got pruned.
Base-class for propagators.
bool range(void) const
Test whether domain is a range.
static ModEventDelta med(ModEvent me)
Translate modification event me into modification event delta.
void cancel(Space &home)
Cancel all subscriptions when variable implementation is assigned.
Boolean variable implementation.
bool one(void) const
Test whether variable is assigned to one.
const Gecode::ModEvent ME_INT_FAILED
Domain operation has resulted in failure.
BoolStatus status(void) const
Return current domain status.
int p
Number of positive literals for node type.
Gecode::IntArgs i(4, 1, 2, 3, 4)
bool copied(void) const
Is variable already copied.
int n
Number of negative literals for node type.
int PropCond
Type for propagation conditions.
bool none(void) const
Test whether variable is not yet assigned.
const Gecode::ModEvent ME_BOOL_NONE
Domain operation has not changed domain.
void subscribe(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned, bool schedule)
Subscribe propagator p with propagation condition pc.
bool in(int n) const
Test whether n is contained in domain.
BoolVarImp * copy(Space &home, bool share)
Return copy of this variable.
void subscribe(Space &home, Propagator &p, PropCond pc, bool schedule=true)
Subscribe propagator p to variable with propagation condition pc.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Integer delta information for advisors.
ModEvent inter_v(Space &home, I &i, bool depends=true)
Intersect domain with values described by i.
Node * x
Pointer to corresponding Boolean expression node.
Generic domain change information to be supplied to advisors.
ModEvent one_none(Space &home)
Assign unassigned variable to one.
ModEvent inter_r(Space &home, I &i, bool depends=true)
Intersect domain with ranges described by i.
int val(void) const
Return assigned value (only if assigned)
Base-class for Bool-variable implementations.
ModEvent nq(Space &home, int n)
Restrict domain values to be different from n.
unsigned int size(void) const
Return size (cardinality) of domain.
const Gecode::ModEvent ME_BOOL_FAILED
Domain operation has resulted in failure.
unsigned int bits(void) const
Provide access to free bits.
Gecode toplevel namespace
ModEvent lq(Space &home, int n)
Restrict domain values to be less or equal than n.
int max(void) const
Return maximum of domain.
static void schedule(Space &home, Propagator &p, ModEvent me)
Schedule propagator p with modification event me.
ModEvent narrow_v(Space &home, I &i, bool depends=true)
Replace domain by values described by i.
static ModEvent modevent(const Delta &d)
Return modification event.
int ModEventDelta
Modification event deltas.
const Gecode::ModEvent ME_INT_NONE
Domain operation has not changed domain.
struct Gecode::@518::NNF::@57::@59 a
For atomic nodes.
VarImp * forward(void) const
Use forward pointer if variable already copied.
ModEvent eq(Space &home, int n)
Restrict domain values to be equal to n.
ModEvent narrow_r(Space &home, I &i, bool depends=true)
Replace domain by ranges described by i.
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value)
const Gecode::ModEvent ME_BOOL_VAL
Domain operation has resulted in a value (assigned variable)