58 template<
class View, PropCond pc>
88 template<
class View, PropCond pc>
118 template<
class View, PropCond pc>
129 View x0, View x1, View x2);
148 template<
class View, PropCond pc>
179 template<
class View, PropCond pc>
212 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
261 View0 x0, View1 x1, View2 x2);
281 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
311 template<
class View, PropCond pc>
315 x0.subscribe(home,*
this,pc);
318 template<
class View, PropCond pc>
323 x0.update(home,share,p.
x0);
326 template<
class View, PropCond pc>
331 x0.update(home,share,y0);
334 template<
class View, PropCond pc>
340 template<
class View, PropCond pc>
344 x0.reschedule(home,*
this,pc);
347 template<
class View, PropCond pc>
351 x0.cancel(home,*
this,pc);
352 (void) Propagator::dispose(home);
353 return sizeof(*this);
362 template<
class View, PropCond pc>
366 x0.subscribe(home,*
this,pc);
367 x1.subscribe(home,*
this,pc);
371 template<
class View, PropCond pc>
376 x0.update(home,share,p.
x0);
377 x1.update(home,share,p.
x1);
380 template<
class View, PropCond pc>
385 x0.update(home,share,y0);
386 x1.update(home,share,y1);
389 template<
class View, PropCond pc>
392 return PropCost::binary(PropCost::LO);
395 template<
class View, PropCond pc>
399 x0.reschedule(home,*
this,pc);
400 x1.reschedule(home,*
this,pc);
404 template<
class View, PropCond pc>
408 x0.cancel(home,*
this,pc);
409 x1.cancel(home,*
this,pc);
411 (void) Propagator::dispose(home);
412 return sizeof(*this);
420 template<
class View, PropCond pc>
422 (
Home home, View y0, View y1, View y2)
425 x0.subscribe(home,*
this,pc);
426 x1.subscribe(home,*
this,pc);
427 x2.subscribe(home,*
this,pc);
431 template<
class View, PropCond pc>
436 x0.update(home,share,p.
x0);
437 x1.update(home,share,p.
x1);
438 x2.update(home,share,p.
x2);
441 template<
class View, PropCond pc>
446 x0.update(home,share,y0);
447 x1.update(home,share,y1);
448 x2.update(home,share,y2);
451 template<
class View, PropCond pc>
454 return PropCost::ternary(PropCost::LO);;
457 template<
class View, PropCond pc>
461 x0.reschedule(home,*
this,pc);
462 x1.reschedule(home,*
this,pc);
463 x2.reschedule(home,*
this,pc);
467 template<
class View, PropCond pc>
471 x0.cancel(home,*
this,pc);
472 x1.cancel(home,*
this,pc);
473 x2.cancel(home,*
this,pc);
475 (void) Propagator::dispose(home);
476 return sizeof(*this);
484 template<
class View, PropCond pc>
489 x.subscribe(home,*
this,pc);
492 template<
class View, PropCond pc>
497 x.update(home,share,p.
x);
500 template<
class View, PropCond pc>
505 x.update(home,share,x0);
508 template<
class View, PropCond pc>
514 template<
class View, PropCond pc>
518 x.reschedule(home,*
this,pc);
521 template<
class View, PropCond pc>
525 x.cancel(home,*
this,pc);
526 (void) Propagator::dispose(home);
527 return sizeof(*this);
535 template<
class View, PropCond pc>
540 x.subscribe(home,*
this,pc);
545 template<
class View, PropCond pc>
550 x.update(home,share,p.
x);
554 template<
class View, PropCond pc>
559 x.update(home,share,x0);
563 template<
class View, PropCond pc>
569 template<
class View, PropCond pc>
573 x.reschedule(home,*
this,pc);
578 template<
class View, PropCond pc>
582 x.cancel(home,*
this,pc);
585 (void) Propagator::dispose(home);
586 return sizeof(*this);
594 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
596 (
Home home, View0 y0, View1 y1)
601 x1.subscribe(home,*
this,pc1);
604 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
610 x1.update(home,share,p.
x1);
613 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
619 x1.update(home,share,y1);
622 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
626 return PropCost::binary(PropCost::LO);
629 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
635 x1.reschedule(home,*
this,pc1);
638 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
642 x0.
cancel(home,*
this,pc0);
644 x1.cancel(home,*
this,pc1);
645 (void) Propagator::dispose(home);
646 return sizeof(*this);
662 x1.subscribe(home,*
this,pc1);
664 x2.subscribe(home,*
this,pc2);
675 x0.
update(home,share,p.x0);
676 x1.update(home,share,p.x1);
677 x2.update(home,share,p.x2);
687 x1.update(home,share,y1);
688 x2.update(home,share,y2);
696 return PropCost::ternary(PropCost::LO);
706 x1.reschedule(home,*
this,pc1);
708 x2.reschedule(home,*
this,pc2);
716 x0.
cancel(home,*
this,pc0);
718 x1.cancel(home,*
this,pc1);
720 x2.cancel(home,*
this,pc2);
721 (void) Propagator::dispose(home);
722 return sizeof(*this);
730 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
735 x.subscribe(home,*
this,pc0);
740 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
745 x.update(home,share,p.
x);
749 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
754 x.update(home,share,x0);
758 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
765 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
769 x.reschedule(home,*
this,pc0);
774 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
778 x.cancel(home,*
this,pc0);
781 (void) Propagator::dispose(home);
782 return sizeof(*this);
const PropCond PC_GEN_NONE
Propagation condition to be ignored (convenience)
void update(Space &, bool share, ViewArray< View > &a)
Update array to be a clone of array a.
void reschedule(Space &home, Propagator &p, PropCond pc)
Re-schedule propagator p with propagation condition pc.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatNum c)
Post propagator for .
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.
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, bool share, 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.
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.