58 template<
class View, PropCond pc>
87 template<
class View, PropCond pc>
116 template<
class View, PropCond pc>
145 template<
class View, PropCond pc>
175 template<
class View, PropCond pc>
207 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
255 View0 x0, View1 x1, View2 x2);
275 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
305 template<
class View, PropCond pc>
309 x0.subscribe(home,*
this,pc);
312 template<
class View, PropCond pc>
317 x0.update(home,p.
x0);
320 template<
class View, PropCond pc>
328 template<
class View, PropCond pc>
334 template<
class View, PropCond pc>
338 x0.reschedule(home,*
this,pc);
341 template<
class View, PropCond pc>
345 x0.cancel(home,*
this,pc);
346 (void) Propagator::dispose(home);
347 return sizeof(*this);
356 template<
class View, PropCond pc>
360 x0.subscribe(home,*
this,pc);
361 x1.subscribe(home,*
this,pc);
365 template<
class View, PropCond pc>
370 x0.update(home,p.
x0);
371 x1.update(home,p.
x1);
374 template<
class View, PropCond pc>
383 template<
class View, PropCond pc>
386 return PropCost::binary(PropCost::LO);
389 template<
class View, PropCond pc>
393 x0.reschedule(home,*
this,pc);
394 x1.reschedule(home,*
this,pc);
398 template<
class View, PropCond pc>
402 x0.cancel(home,*
this,pc);
403 x1.cancel(home,*
this,pc);
405 (void) Propagator::dispose(home);
406 return sizeof(*this);
414 template<
class View, PropCond pc>
416 (
Home home, View y0, View y1, View y2)
419 x0.subscribe(home,*
this,pc);
420 x1.subscribe(home,*
this,pc);
421 x2.subscribe(home,*
this,pc);
425 template<
class View, PropCond pc>
430 x0.update(home,p.
x0);
431 x1.update(home,p.
x1);
432 x2.update(home,p.
x2);
435 template<
class View, PropCond pc>
445 template<
class View, PropCond pc>
448 return PropCost::ternary(PropCost::LO);;
451 template<
class View, PropCond pc>
455 x0.reschedule(home,*
this,pc);
456 x1.reschedule(home,*
this,pc);
457 x2.reschedule(home,*
this,pc);
461 template<
class View, PropCond pc>
465 x0.cancel(home,*
this,pc);
466 x1.cancel(home,*
this,pc);
467 x2.cancel(home,*
this,pc);
469 (void) Propagator::dispose(home);
470 return sizeof(*this);
478 template<
class View, PropCond pc>
483 x.subscribe(home,*
this,pc);
486 template<
class View, PropCond pc>
494 template<
class View, PropCond pc>
502 template<
class View, PropCond pc>
508 template<
class View, PropCond pc>
512 x.reschedule(home,*
this,pc);
515 template<
class View, PropCond pc>
519 x.cancel(home,*
this,pc);
520 (void) Propagator::dispose(home);
521 return sizeof(*this);
529 template<
class View, PropCond pc>
534 x.subscribe(home,*
this,pc);
539 template<
class View, PropCond pc>
548 template<
class View, PropCond pc>
557 template<
class View, PropCond pc>
563 template<
class View, PropCond pc>
567 x.reschedule(home,*
this,pc);
572 template<
class View, PropCond pc>
576 x.cancel(home,*
this,pc);
579 (void) Propagator::dispose(home);
580 return sizeof(*this);
588 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
590 (
Home home, View0 y0, View1 y1)
595 x1.subscribe(home,*
this,pc1);
598 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
604 x1.update(home,p.
x1);
607 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
616 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
620 return PropCost::binary(PropCost::LO);
623 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
629 x1.reschedule(home,*
this,pc1);
632 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
636 x0.
cancel(home,*
this,pc0);
638 x1.cancel(home,*
this,pc1);
639 (void) Propagator::dispose(home);
640 return sizeof(*this);
656 x1.subscribe(home,*
this,pc1);
658 x2.subscribe(home,*
this,pc2);
670 x1.update(home,p.x1);
671 x2.update(home,p.x2);
690 return PropCost::ternary(PropCost::LO);
700 x1.reschedule(home,*
this,pc1);
702 x2.reschedule(home,*
this,pc2);
710 x0.
cancel(home,*
this,pc0);
712 x1.cancel(home,*
this,pc1);
714 x2.cancel(home,*
this,pc2);
715 (void) Propagator::dispose(home);
716 return sizeof(*this);
724 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
729 x.subscribe(home,*
this,pc0);
734 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
743 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
752 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
759 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
763 x.reschedule(home,*
this,pc0);
768 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
772 x.cancel(home,*
this,pc0);
775 (void) Propagator::dispose(home);
776 return sizeof(*this);
const PropCond PC_GEN_NONE
Propagation condition to be ignored (convenience)
void reschedule(Space &home, Propagator &p, PropCond pc)
Re-schedule propagator p with propagation condition pc.
void update(Space &home, ViewArray< View > &a)
Update array to be a clone of array a.
ViewArray< View > x
Array of views.
View0 x0
View of type View0.
View2 x2
View of type View2.
Mixed (n+1)-ary propagator.
ViewArray< View > x
Array of views.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
Post propagator for .
Base-class for propagators.
void subscribe(Space &home, Propagator &p, PropCond pc, bool schedule=true)
Subscribe propagator p with propagation condition pc to variable.
ViewArray< View0 > x
Array of views.
View1 x1
View of type View1.
virtual void reschedule(Space &home)
Schedule function.
View0 x0
View of type View0.
int p
Number of positive literals for node type.
Mixed ternary propagator.
int PropCond
Type for propagation conditions.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as PC_UNARY_LO)
ModEventDelta med
A set of modification events (used during propagation)
UnaryPropagator(Space &home, UnaryPropagator &p)
Constructor for cloning p.
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p with propagation condition pc to all views.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Post propagator for SetVar SetOpType SetVar y
Node * x
Pointer to corresponding Boolean expression node.
Gecode toplevel namespace
void reschedule(Space &home, Propagator &p, IntSet &y)
int ModEventDelta
Modification event deltas.
Home class for posting propagators
void unary(Home home, const IntVarArgs &s, const IntArgs &p, IntPropLevel ipl)
Post propagators for scheduling tasks on unary resources.
View1 x1
View of type View1.