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);
342 (void) Propagator::dispose(home);
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>
382 return PropCost::binary(PropCost::LO);
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);
401 (void) Propagator::dispose(home);
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>
444 return PropCost::ternary(PropCost::LO);;
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);
465 (void) Propagator::dispose(home);
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);
516 (void) Propagator::dispose(home);
517 return sizeof(*this);
525 template<
class View, PropCond pc>
530 x.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);
568 template<
class View, PropCond pc>
572 x.cancel(home,*
this,pc);
575 (void) Propagator::dispose(home);
576 return sizeof(*this);
584 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
586 (
Home home, View0 y0, View1 y1)
591 x1.subscribe(home,*
this,pc1);
594 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
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>
616 return PropCost::binary(PropCost::LO);
619 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
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);
635 (void) Propagator::dispose(home);
636 return sizeof(*this);
652 x1.subscribe(home,*
this,pc1);
654 x2.subscribe(home,*
this,pc2);
666 x1.update(home,p.x1);
667 x2.update(home,p.x2);
686 return PropCost::ternary(PropCost::LO);
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);
711 (void) Propagator::dispose(home);
712 return sizeof(*this);
720 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
725 x.subscribe(home,*
this,pc0);
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);
764 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
768 x.cancel(home,*
this,pc0);
771 (void) Propagator::dispose(home);
772 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.