38 namespace Gecode {
namespace Int {
namespace Linear {
44 template<
class Val,
class A,
class B,
class C, PropCond pc>
48 x0.subscribe(home,*
this,pc);
49 x1.subscribe(home,*
this,pc);
50 x2.subscribe(home,*
this,pc);
53 template<
class Val,
class A,
class B,
class C, PropCond pc>
62 template<
class Val,
class A,
class B,
class C, PropCond pc>
65 A y0, B y1, C y2, Val c0)
72 template<
class Val,
class A,
class B,
class C, PropCond pc>
75 return PropCost::ternary(PropCost::LO);
78 template<
class Val,
class A,
class B,
class C, PropCond pc>
81 x0.reschedule(home,*
this,pc);
82 x1.reschedule(home,*
this,pc);
83 x2.reschedule(home,*
this,pc);
86 template<
class Val,
class A,
class B,
class C, PropCond pc>
89 x0.cancel(home,*
this,pc);
90 x1.cancel(home,*
this,pc);
91 x2.cancel(home,*
this,pc);
92 (void) Propagator::dispose(home);
101 template<
class Val,
class A,
class B,
class C>
106 template<
class Val,
class A,
class B,
class C>
114 template<
class Val,
class A,
class B,
class C>
119 template<
class Val,
class A,
class B,
class C>
125 template<
class Val,
class A,
class B,
class C>
142 #define GECODE_INT_PV(CASE,TELL,UPDATE) \ 144 bm -= (CASE); ModEvent me = (TELL); \ 145 if (me_failed(me)) return ES_FAILED; \ 146 if (me_modified(me)) bm |= (UPDATE); \ 149 template<
class Val,
class A,
class B,
class C>
167 return (
x0.assigned() &&
x1.assigned()) ?
180 template<
class Val,
class A,
class B,
class C>
185 template<
class Val,
class A,
class B,
class C>
193 template<
class Val,
class A,
class B,
class C>
198 template<
class Val,
class A,
class B,
class C>
204 template<
class Val,
class A,
class B,
class C>
211 template<
class Val,
class A,
class B,
class C>
214 if (
x0.assigned() &&
x1.assigned()) {
218 if (
x0.assigned() &&
x2.assigned()) {
222 if (
x1.assigned() &&
x2.assigned()) {
236 template<
class Val,
class A,
class B,
class C>
241 template<
class Val,
class A,
class B,
class C>
249 template<
class Val,
class A,
class B,
class C>
254 template<
class Val,
class A,
class B,
class C>
261 template<
class Val,
class A,
class B,
class C>
267 template<
class Val,
class A,
class B,
class C>
273 return (
x0.max()+
x1.max()+
x2.max() <=
c) ?
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 .
ExecStatus ES_SUBSUMED(Propagator &p)
NqTer(Space &home, NqTer &p)
Constructor for cloning p.
Propagator for bounds consistent ternary linear equality
Base-class for propagators.
Base-class for ternary linear propagators.
Propagation has computed fixpoint.
Base-class for both propagators and branchers.
Propagator for bounds consistent ternary linear less or equal
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
static ExecStatus post(Home home, A x0, B x1, C x2, Val c)
Post propagator for .
EqTer(Space &home, EqTer &p)
Constructor for cloning p.
TerMod
Describe which view has been modified how.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
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.
Gecode toplevel namespace
LqTer(Space &home, LqTer &p)
Constructor for cloning p.
void reschedule(Space &home, Propagator &p, IntSet &y)
virtual Actor * copy(Space &home)
Create copy during cloning.
Propagator for bounds consistent ternary linear disquality
LinTer(Space &home, LinTer &p)
Constructor for cloning p.
int ModEventDelta
Modification event deltas.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Home class for posting propagators
#define GECODE_INT_PV(CASE, TELL, UPDATE)
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)