58 template<
class View, PropCond pc>
86 template<
class View, PropCond pc>
114 template<
class View, PropCond pc>
125 View x0, View x1, View x2);
142 template<
class View, PropCond pc>
171 template<
class View, PropCond pc>
202 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
249 View0 x0, View1 x1, View2 x2);
267 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
295 template<
class View, PropCond pc>
299 x0.subscribe(home,*
this,pc);
302 template<
class View, PropCond pc>
307 x0.update(home,share,p.
x0);
310 template<
class View, PropCond pc>
315 x0.update(home,share,y0);
318 template<
class View, PropCond pc>
324 template<
class View, PropCond pc>
328 x0.cancel(home,*
this,pc);
330 return sizeof(*this);
339 template<
class View, PropCond pc>
343 x0.subscribe(home,*
this,pc);
344 x1.subscribe(home,*
this,pc);
348 template<
class View, PropCond pc>
353 x0.update(home,share,p.
x0);
354 x1.update(home,share,p.
x1);
357 template<
class View, PropCond pc>
362 x0.update(home,share,y0);
363 x1.update(home,share,y1);
366 template<
class View, PropCond pc>
372 template<
class View, PropCond pc>
376 x0.cancel(home,*
this,pc);
377 x1.cancel(home,*
this,pc);
380 return sizeof(*this);
388 template<
class View, PropCond pc>
390 (
Home home, View y0, View y1, View y2)
393 x0.subscribe(home,*
this,pc);
394 x1.subscribe(home,*
this,pc);
395 x2.subscribe(home,*
this,pc);
399 template<
class View, PropCond pc>
404 x0.update(home,share,p.
x0);
405 x1.update(home,share,p.
x1);
406 x2.update(home,share,p.
x2);
409 template<
class View, PropCond pc>
414 x0.update(home,share,y0);
415 x1.update(home,share,y1);
416 x2.update(home,share,y2);
419 template<
class View, PropCond pc>
425 template<
class View, PropCond pc>
429 x0.cancel(home,*
this,pc);
430 x1.cancel(home,*
this,pc);
431 x2.cancel(home,*
this,pc);
434 return sizeof(*this);
442 template<
class View, PropCond pc>
447 x.subscribe(home,*
this,pc);
450 template<
class View, PropCond pc>
455 x.update(home,share,p.
x);
458 template<
class View, PropCond pc>
463 x.update(home,share,x0);
466 template<
class View, PropCond pc>
472 template<
class View, PropCond pc>
476 x.cancel(home,*
this,pc);
478 return sizeof(*this);
486 template<
class View, PropCond pc>
491 x.subscribe(home,*
this,pc);
496 template<
class View, PropCond pc>
501 x.update(home,share,p.
x);
505 template<
class View, PropCond pc>
510 x.update(home,share,x0);
514 template<
class View, PropCond pc>
520 template<
class View, PropCond pc>
524 x.cancel(home,*
this,pc);
528 return sizeof(*this);
536 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
538 (
Home home, View0 y0, View1 y1)
543 x1.subscribe(home,*
this,pc1);
546 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
552 x1.update(home,share,p.
x1);
555 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
561 x1.update(home,share,y1);
564 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
571 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
575 x0.
cancel(home,*
this,pc0);
577 x1.cancel(home,*
this,pc1);
579 return sizeof(*this);
595 x1.subscribe(home,*
this,pc1);
597 x2.subscribe(home,*
this,pc2);
608 x0.
update(home,share,p.x0);
609 x1.update(home,share,p.x1);
610 x2.update(home,share,p.x2);
620 x1.update(home,share,y1);
621 x2.update(home,share,y2);
637 x0.
cancel(home,*
this,pc0);
639 x1.cancel(home,*
this,pc1);
641 x2.cancel(home,*
this,pc2);
643 return sizeof(*this);
651 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
656 x.subscribe(home,*
this,pc0);
661 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
666 x.update(home,share,p.
x);
670 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
675 x.update(home,share,x0);
679 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
686 template<
class View0, PropCond pc0,
class View1, PropCond pc1>
690 x.cancel(home,*
this,pc0);
694 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.
NaryOnePropagator(Space &home, bool share, NaryOnePropagator &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low ternary)
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
ViewArray< View > x
Array of views.
TernaryPropagator(Space &home, bool share, TernaryPropagator &p)
Constructor for cloning p.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
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.
MixBinaryPropagator(Space &home, bool, MixBinaryPropagator &)
Constructor for cloning.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
ViewArray< View0 > x
Array of views.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
View1 x1
View of type View1.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
virtual size_t dispose(Space &home)
Delete propagator and return its size.
View0 x0
View of type View0.
int p
Number of positive literals for node type.
void subscribe(Space &home, Propagator &p, PropCond pc, bool process=true)
Subscribe propagator p with propagation condition pc to variable.
Mixed ternary propagator.
MixNaryOnePropagator(Space &home, bool share, MixNaryOnePropagator &p)
Constructor for cloning p.
int PropCond
Type for propagation conditions.
ModEventDelta med
A set of modification events (used during propagation)
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low ternary)
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)
UnaryPropagator(Space &home, bool share, UnaryPropagator &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as PC_UNARY_LO)
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.
virtual size_t dispose(Space &home)
Delete actor and return its size.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
NaryPropagator(Space &home, bool share, NaryPropagator &p)
Constructor for cloning p.
static PropCost ternary(PropCost::Mod m)
Three variables for modifier pcm.
Gecode toplevel namespace
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
int ModEventDelta
Modification event deltas.
Home class for posting propagators
virtual size_t dispose(Space &home)
Delete propagator and return its size.
BinaryPropagator(Space &home, bool share, BinaryPropagator &p)
Constructor for cloning p.
static PropCost binary(PropCost::Mod m)
Two variables for modifier pcm.
View1 x1
View of type View1.
MixTernaryPropagator(Space &home, bool share, MixTernaryPropagator &p)
Constructor for cloning.