42 namespace Gecode {
namespace Int {
namespace Precede {
89 int s0,
int t0,
int b,
int g)
92 for (
int i=
x.size();
i--; )
103 while ((alpha <
x.size()) && !
x[alpha].in(s))
110 int beta = 0, gamma = 0;
114 }
while ((gamma <
x.size()) && !
assigned(
x[gamma],
t));
117 }
while ((beta <
x.size()) && !
x[beta].in(s));
122 if (gamma <
x.size())
135 alpha(
p.alpha), beta(
p.beta), gamma(
p.gamma) {
136 c.update(home, share,
p.c);
149 alpha -=
i; beta -=
i; gamma -=
i;
152 if (gamma <
x.size()) {
167 x[as.advisor().i].cancel(home,as.advisor());
170 return sizeof(*this);
188 Index&
a(static_cast<Index&>(a0));
197 }
else if ((
i < alpha) || (
i > gamma)) {
204 if ((alpha ==
i) || (beta ==
i)) {
207 if ((
x[
i].
min(
d) <= s) && (s <=
x[
i].max(
d)))
221 if ((alpha <
n) && !
x[alpha].in(s)) {
229 }
else if ((beta <
n) && !
x[beta].in(s)) {
int s
The value s must precede t.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
Single(Home home, ViewArray< View > &x, int s, int t, int beta, int gamma)
Constructor for posting.
Council< Index > c
The advisor council.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
ExecStatus ES_SUBSUMED(Propagator &p)
Advisors for views (by position in array)
bool any(const View &x)
Test whether x is neither positive nor negative.
bool assigned(void) const
Test whether view is assigned.
ViewArray< View > x
Array of views.
Base-class for propagators.
Class to iterate over advisors of a council.
Propagation has computed fixpoint.
#define GECODE_ES_CHECK(es)
Check whether execution status es is failed or subsumed, and forward failure or subsumption.
virtual void reschedule(Space &home)
Schedule function.
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
const Gecode::PropCond PC_INT_NONE
Propagation condition to be ignored (convenience)
void subscribe(Space &home, Propagator &p, IntSet &y)
virtual PropCost cost(const Space &, const ModEventDelta &) const
Cost function.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
const Gecode::ModEvent ME_INT_BND
Domain operation has changed the minimum or maximum of the domain.
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Give advice to propagator.
int alpha
Pointers updated during propagation.
static ExecStatus post(Home home, ViewArray< View > &x, int s, int t)
Post propagator that s precedes t in x.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
Index(Space &home, Propagator &p, Council< Index > &c, int i)
Create index advisor.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Generic domain change information to be supplied to advisors.
bool assigned(View x, int v)
Whether x is assigned to value v.
ExecStatus updateAlpha(Space &home)
Update the alpha pointer.
Post propagator for SetVar x
Propagation has not computed fixpoint.
Single value precedence propagator.
ExecStatus updateBeta(Space &home)
Update the beta pointer.
Gecode toplevel namespace
int ModEventDelta
Modification event deltas.
Home class for posting propagators
virtual Propagator * copy(Space &home, bool share)
Copy propagator during cloning.