54 template<
class View, PropCond pc>
83 template<
class View, PropCond pc>
112 template<
class View, PropCond pc>
141 template<
class View, PropCond pc>
171 template<
class View, PropCond pc>
203 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
251 View0
x0, View1
x1, View2
x2);
271 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
301 template<
class View, PropCond pc>
305 x0.subscribe(home,*
this,pc);
308 template<
class View, PropCond pc>
313 x0.update(home,
p.x0);
316 template<
class View, PropCond pc>
324 template<
class View, PropCond pc>
330 template<
class View, PropCond pc>
334 x0.reschedule(home,*
this,pc);
337 template<
class View, PropCond pc>
341 x0.cancel(home,*
this,pc);
343 return sizeof(*this);
352 template<
class View, PropCond pc>
356 x0.subscribe(home,*
this,pc);
357 x1.subscribe(home,*
this,pc);
361 template<
class View, PropCond pc>
366 x0.update(home,
p.x0);
367 x1.update(home,
p.x1);
370 template<
class View, PropCond pc>
379 template<
class View, PropCond pc>
385 template<
class View, PropCond pc>
389 x0.reschedule(home,*
this,pc);
390 x1.reschedule(home,*
this,pc);
394 template<
class View, PropCond pc>
398 x0.cancel(home,*
this,pc);
399 x1.cancel(home,*
this,pc);
402 return sizeof(*this);
410 template<
class View, PropCond pc>
412 (
Home home, View y0, View y1, View y2)
415 x0.subscribe(home,*
this,pc);
416 x1.subscribe(home,*
this,pc);
417 x2.subscribe(home,*
this,pc);
421 template<
class View, PropCond pc>
426 x0.update(home,
p.x0);
427 x1.update(home,
p.x1);
428 x2.update(home,
p.x2);
431 template<
class View, PropCond pc>
441 template<
class View, PropCond pc>
447 template<
class View, PropCond pc>
451 x0.reschedule(home,*
this,pc);
452 x1.reschedule(home,*
this,pc);
453 x2.reschedule(home,*
this,pc);
457 template<
class View, PropCond pc>
461 x0.cancel(home,*
this,pc);
462 x1.cancel(home,*
this,pc);
463 x2.cancel(home,*
this,pc);
466 return sizeof(*this);
474 template<
class View, PropCond pc>
479 x.subscribe(home,*
this,pc);
482 template<
class View, PropCond pc>
490 template<
class View, PropCond pc>
498 template<
class View, PropCond pc>
504 template<
class View, PropCond pc>
508 x.reschedule(home,*
this,pc);
511 template<
class View, PropCond pc>
515 x.cancel(home,*
this,pc);
517 return sizeof(*this);
525 template<
class View, PropCond pc>
530 x.subscribe(home,*
this,pc);
531 y.subscribe(home,*
this,pc);
535 template<
class View, PropCond pc>
544 template<
class View, PropCond pc>
553 template<
class View, PropCond pc>
559 template<
class View, PropCond pc>
563 x.reschedule(home,*
this,pc);
564 y.reschedule(home,*
this,pc);
568 template<
class View, PropCond pc>
572 x.cancel(home,*
this,pc);
573 y.cancel(home,*
this,pc);
576 return sizeof(*this);
584 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
586 (
Home home, View0 y0, View1 y1)
589 x0.subscribe(home,*
this,pc0);
591 x1.subscribe(home,*
this,pc1);
594 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
599 x0.update(home,
p.x0);
600 x1.update(home,
p.x1);
603 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
612 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
619 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
623 x0.reschedule(home,*
this,pc0);
625 x1.reschedule(home,*
this,pc1);
628 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
632 x0.cancel(home,*
this,pc0);
634 x1.cancel(home,*
this,pc1);
636 return sizeof(*this);
650 x0.subscribe(home,*
this,pc0);
652 x1.subscribe(home,*
this,pc1);
654 x2.subscribe(home,*
this,pc2);
665 x0.update(home,
p.x0);
666 x1.update(home,
p.x1);
667 x2.update(home,
p.x2);
694 x0.reschedule(home,*
this,pc0);
696 x1.reschedule(home,*
this,pc1);
698 x2.reschedule(home,*
this,pc2);
706 x0.cancel(home,*
this,pc0);
708 x1.cancel(home,*
this,pc1);
710 x2.cancel(home,*
this,pc2);
712 return sizeof(*this);
720 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
727 y.subscribe(home,*
this,pc1);
730 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
739 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
748 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
755 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
759 x.reschedule(home,*
this,pc0);
761 y.reschedule(home,*
this,pc1);
764 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
768 x.cancel(home,*
this,pc0);
770 y.cancel(home,*
this,pc1);
772 return sizeof(*this);
int p
Number of positive literals for node type.
virtual size_t dispose(Space &home)
Delete actor and return its size.
BinaryPropagator(Space &home, BinaryPropagator &p)
Constructor for cloning p.
virtual void reschedule(Space &home)
Schedule function.
BinaryPropagator(Space &home, Propagator &p, View x0, View x1)
Constructor for rewriting p during cloning.
BinaryPropagator(Home home, View x0, View x1)
Constructor for creation.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
Home class for posting propagators
MixBinaryPropagator(Home home, View0 x0, View1 x1)
Constructor for creation.
virtual void reschedule(Space &home)
Schedule function.
View1 x1
View of type View1.
MixBinaryPropagator(Space &home, Propagator &p, View0 x0, View1 x1)
Constructor for rewriting p during cloning.
MixBinaryPropagator(Space &home, MixBinaryPropagator &p)
Constructor for cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
View0 x0
View of type View0.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Mixed (n+1)-ary propagator.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
MixNaryOnePropagator(Space &home, MixNaryOnePropagator &p)
Constructor for cloning p.
ViewArray< View0 > x
Array of views.
MixNaryOnePropagator(Home home, ViewArray< View0 > &x, View1 y)
Constructor for creation.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
virtual void reschedule(Space &home)
Schedule function.
MixNaryOnePropagator(Space &home, Propagator &p, ViewArray< View0 > &x, View1 y)
Constructor for rewriting p during cloning.
Mixed ternary propagator.
MixTernaryPropagator(Space &home, Propagator &p, View0 x0, View1 x1, View2 x2)
Constructor for rewriting p during cloning.
View0 x0
View of type View0.
View1 x1
View of type View1.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
MixTernaryPropagator(Home home, View0 x0, View1 x1, View2 x2)
Constructor for creation.
View2 x2
View of type View2.
virtual void reschedule(Space &home)
Schedule function.
MixTernaryPropagator(Space &home, MixTernaryPropagator &p)
Constructor for cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low ternary)
ViewArray< View > x
Array of views.
NaryOnePropagator(Space &home, NaryOnePropagator &p)
Constructor for cloning p.
virtual void reschedule(Space &home)
Schedule function.
NaryOnePropagator(Space &home, Propagator &p, ViewArray< View > &x, View y)
Constructor for rewriting p during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
NaryOnePropagator(Home home, ViewArray< View > &x, View y)
Constructor for creation.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
NaryPropagator(Home home, ViewArray< View > &x)
Constructor for creation.
NaryPropagator(Space &home, Propagator &p, ViewArray< View > &x)
Constructor for rewriting p during cloning.
virtual void reschedule(Space &home)
Schedule function.
ViewArray< View > x
Array of views.
NaryPropagator(Space &home, NaryPropagator &p)
Constructor for cloning p.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
static PropCost ternary(PropCost::Mod m)
Three variables for modifier pcm.
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
static PropCost binary(PropCost::Mod m)
Two variables for modifier pcm.
Base-class for propagators.
ModEventDelta med
A set of modification events (used during propagation)
virtual size_t dispose(Space &home)
Delete propagator and return its size.
TernaryPropagator(Space &home, Propagator &p, View x0, View x1, View x2)
Constructor for rewriting p during cloning.
TernaryPropagator(Space &home, TernaryPropagator &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low ternary)
virtual void reschedule(Space &home)
Schedule function.
TernaryPropagator(Home home, View x0, View x1, View x2)
Constructor for creation.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as PC_UNARY_LO)
virtual void reschedule(Space &home)
Schedule function.
UnaryPropagator(Home home, View x0)
Constructor for creation.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
UnaryPropagator(Space &home, Propagator &p, View x0)
Constructor for rewriting p during cloning.
UnaryPropagator(Space &home, UnaryPropagator &p)
Constructor for cloning p.
void update(Space &home, ViewArray< View > &a)
Update array to be a clone of array a.
void subscribe(Space &home, Propagator &p, PropCond pc, bool schedule=true)
Subscribe propagator p with propagation condition pc to variable.
int ModEventDelta
Modification event deltas.
Gecode toplevel namespace
Post propagator for SetVar SetOpType SetVar y
int PropCond
Type for propagation conditions.
Post propagator for SetVar x
const PropCond PC_GEN_NONE
Propagation condition to be ignored (convenience)