40 template<
class Val,
class A,
class B,
class C, PropCond pc>
44 x0.subscribe(home,*
this,pc);
45 x1.subscribe(home,*
this,pc);
46 x2.subscribe(home,*
this,pc);
49 template<
class Val,
class A,
class B,
class C, PropCond pc>
58 template<
class Val,
class A,
class B,
class C, PropCond pc>
61 A y0, B y1, C y2,
Val c0)
68 template<
class Val,
class A,
class B,
class C, PropCond pc>
74 template<
class Val,
class A,
class B,
class C, PropCond pc>
77 x0.reschedule(home,*
this,pc);
78 x1.reschedule(home,*
this,pc);
79 x2.reschedule(home,*
this,pc);
82 template<
class Val,
class A,
class B,
class C, PropCond pc>
85 x0.cancel(home,*
this,pc);
86 x1.cancel(home,*
this,pc);
87 x2.cancel(home,*
this,pc);
97 template<
class Val,
class A,
class B,
class C>
102 template<
class Val,
class A,
class B,
class C>
110 template<
class Val,
class A,
class B,
class C>
115 template<
class Val,
class A,
class B,
class C>
121 template<
class Val,
class A,
class B,
class C>
138#define GECODE_INT_PV(CASE,TELL,UPDATE) \
140 bm -= (CASE); ModEvent me = (TELL); \
141 if (me_failed(me)) return ES_FAILED; \
142 if (me_modified(me)) bm |= (UPDATE); \
145 template<
class Val,
class A,
class B,
class C>
163 return (
x0.assigned() &&
x1.assigned()) ?
176 template<
class Val,
class A,
class B,
class C>
181 template<
class Val,
class A,
class B,
class C>
189 template<
class Val,
class A,
class B,
class C>
194 template<
class Val,
class A,
class B,
class C>
200 template<
class Val,
class A,
class B,
class C>
207 template<
class Val,
class A,
class B,
class C>
210 if (
x0.assigned() &&
x1.assigned()) {
214 if (
x0.assigned() &&
x2.assigned()) {
218 if (
x1.assigned() &&
x2.assigned()) {
232 template<
class Val,
class A,
class B,
class C>
237 template<
class Val,
class A,
class B,
class C>
245 template<
class Val,
class A,
class B,
class C>
250 template<
class Val,
class A,
class B,
class C>
257 template<
class Val,
class A,
class B,
class C>
263 template<
class Val,
class A,
class B,
class C>
269 return (
x0.max()+
x1.max()+
x2.max() <=
c) ?
Base-class for both propagators and branchers.
virtual size_t dispose(Space &home)
Delete actor and return its size.
Home class for posting propagators
Propagator for bounds consistent ternary linear equality
EqTer(Space &home, EqTer &p)
Constructor for cloning p.
static ExecStatus post(Home home, A x0, B x1, C x2, Val c)
Post propagator for .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Create copy during cloning.
Base-class for ternary linear propagators.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low ternary)
LinTer(Space &home, LinTer &p)
Constructor for cloning p.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual void reschedule(Space &home)
Schedule function.
Propagator for bounds consistent ternary linear less or equal
virtual Actor * copy(Space &home)
Create copy during cloning.
static ExecStatus post(Home home, A x0, B x1, C x2, Val c)
Post propagator for .
LqTer(Space &home, LqTer &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Propagator for bounds consistent ternary linear disquality
virtual Actor * copy(Space &home)
Create copy during cloning.
static ExecStatus post(Home home, A x0, B x1, C x2, Val c)
Post propagator for .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
NqTer(Space &home, NqTer &p)
Constructor for cloning p.
static PropCost ternary(PropCost::Mod m)
Three variables for modifier pcm.
Base-class for propagators.
Propagator(Home home)
Constructor for posting.
ExecStatus ES_SUBSUMED(Propagator &p)
Propagator p is subsumed
int ModEventDelta
Modification event deltas.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
#define GECODE_INT_PV(CASE, TELL, UPDATE)
TerMod
Describe which view has been modified how.
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
Gecode toplevel namespace
@ ES_OK
Execution is okay.
@ ES_FIX
Propagation has computed fixpoint.