52#ifdef GECODE_HAS_INT_VARS
98#ifdef GECODE_HAS_INT_VARS
99namespace Gecode {
namespace Int {
144#ifdef GECODE_HAS_SET_VARS
190#ifdef GECODE_HAS_FLOAT_VARS
191namespace Gecode {
namespace Float {
236#ifdef GECODE_HAS_INT_VARS
237namespace Gecode {
namespace Int {
297#ifdef GECODE_HAS_INT_VARS
298namespace Gecode {
namespace Int {
340#ifdef GECODE_HAS_SET_VARS
341namespace Gecode {
namespace Set {
432#ifdef GECODE_HAS_FLOAT_VARS
433namespace Gecode {
namespace Float {
490 Space::recover_noidx(
void) {
493 while (x !=
nullptr) {
495 x->b.base =
nullptr; x->u.idx[0] = 0;
496 if (
sizeof(ActorLink**) >
sizeof(
unsigned int))
497 *(1+&x->u.idx[0]) = 0;
504#ifdef GECODE_HAS_INT_VARS
505 Gecode::VarImp<Gecode::Int::IntVarImpConf>::update(*
this,sub);
507#ifdef GECODE_HAS_INT_VARS
508 Gecode::VarImp<Gecode::Int::BoolVarImpConf>::update(*
this,sub);
510#ifdef GECODE_HAS_SET_VARS
511 Gecode::VarImp<Gecode::Set::SetVarImpConf>::update(*
this,sub);
513#ifdef GECODE_HAS_FLOAT_VARS
514 Gecode::VarImp<Gecode::Float::FloatVarImpConf>::update(*
this,sub);
519 Space::recover(
Space& source) {
520 ActorLink* clone_lists[2] = {&pl, &bl};
521 for (
int i=0; i<2; i++) {
522 ActorLink* l = clone_lists[i];
523 ActorLink*
c = l->next();
525 ActorLink* n =
c->next();
526 (void) Actor::cast(
c)->dispose(*
this);
531 while (pc.c.local !=
nullptr) {
533 ActorLink* n = l->next();
534 pc.c.local = (n ==
nullptr) ?
nullptr :
LocalObject::cast(n);
535 ActorLink* fwd = l->prev();
536 if (fwd !=
nullptr) {
537 (void) Actor::cast(fwd)->dispose(*
this);
543 for (
int i=0; i<2; i++) {
544 ActorLink* l = lists[i];
546 ActorLink* c_a = p_a->next();
550 if (
p->u.advisors !=
nullptr) {
551 ActorLink* a =
p->u.advisors;
552 p->u.advisors =
nullptr;
554 a->prev(
p); a = a->next();
555 }
while (a !=
nullptr);
558 ActorLink* fwd = c_a->prev();
562 p_a = c_a; c_a = c_a->next();
566 ActorLink** sub =
static_cast<ActorLink**
>(mm.subscriptions());
568#ifdef GECODE_HAS_INT_VARS
569 Gecode::VarImp<Gecode::Int::IntVarImpConf>::recover(*
this,sub);
571#ifdef GECODE_HAS_INT_VARS
572 Gecode::VarImp<Gecode::Int::BoolVarImpConf>::recover(*
this,sub);
574#ifdef GECODE_HAS_SET_VARS
575 Gecode::VarImp<Gecode::Set::SetVarImpConf>::recover(*
this,sub);
577#ifdef GECODE_HAS_FLOAT_VARS
578 Gecode::VarImp<Gecode::Float::FloatVarImpConf>::recover(*
this,sub);
Double-linked list for actors.
Generic domain change information to be supplied to advisors.
void subscribe(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned, bool schedule)
Subscribe propagator p with propagation condition pc.
FloatVarImpBase(Gecode::Space &home, FloatVarImpBase &x)
Constructor for cloning x.
FloatVarImpBase(void)
Constructor for creating static instance of variable.
static void schedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::ModEvent me)
Schedule propagator p.
Gecode::ModEvent notify(Gecode::Space &home, Gecode::ModEvent me, Gecode::Delta &d)
Notify that variable implementation has been modified with modification event me and delta informatio...
void reschedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned)
Re-schedule propagator p.
Configuration for Float-variable implementations.
BoolVarImpBase(void)
Constructor for creating static instance of variable.
Gecode::ModEvent notify(Gecode::Space &home, Gecode::ModEvent me, Gecode::Delta &d)
Notify that variable implementation has been modified with modification event me and delta informatio...
void subscribe(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned, bool schedule)
Subscribe propagator p with propagation condition pc.
BoolVarImpBase(Gecode::Space &home, BoolVarImpBase &x)
Constructor for cloning x.
static void schedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::ModEvent me)
Schedule propagator p.
void reschedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned)
Re-schedule propagator p.
Configuration for Bool-variable implementations.
void subscribe(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned, bool schedule)
Subscribe propagator p with propagation condition pc.
IntVarImpBase(void)
Constructor for creating static instance of variable.
static void schedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::ModEvent me)
Schedule propagator p.
IntVarImpBase(Gecode::Space &home, IntVarImpBase &x)
Constructor for cloning x.
void reschedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned)
Re-schedule propagator p.
Gecode::ModEvent notify(Gecode::Space &home, Gecode::ModEvent me, Gecode::Delta &d)
Notify that variable implementation has been modified with modification event me and delta informatio...
Configuration for Int-variable implementations.
Base-class for propagators.
SetVarImpBase(Gecode::Space &home, SetVarImpBase &x)
Constructor for cloning x.
void reschedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned)
Re-schedule propagator p.
Gecode::ModEvent notify(Gecode::Space &home, Gecode::ModEvent me, Gecode::Delta &d)
Notify that variable implementation has been modified with modification event me and delta informatio...
SetVarImpBase(void)
Constructor for creating static instance of variable.
void subscribe(Gecode::Space &home, Gecode::Propagator &p, Gecode::PropCond pc, bool assigned, bool schedule)
Subscribe propagator p with propagation condition pc.
static void schedule(Gecode::Space &home, Gecode::Propagator &p, Gecode::ModEvent me)
Schedule propagator p.
Configuration for Set-variable implementations.
Space * source
Source space during clone construction.
struct Gecode::Space::@055132133326276162005044145100211202071356247106::@275070317317120154232063063134255170030071110047 p
Data only available during propagation or branching.
struct Gecode::Space::@055132133326276162005044145100211202071356247106::@155123175027073262103111264343315000271204104107 c
Data available only during copying.
Base-class for variable implementations.
void subscribe(Space &home, Propagator &p, PropCond pc, bool assigned, ModEvent me, bool schedule)
Subscribe propagator p with propagation condition pc.
bool advise(Space &home, ModEvent me, Delta &d)
Run advisors when variable implementation has been modified with modification event me and domain cha...
static void reschedule(Space &home, Propagator &p, PropCond pc, bool assigned, ModEvent me)
Schedule propagator p.
static void schedule(Space &home, Propagator &p, ModEvent me, bool force=false)
Schedule propagator p with modification event me.
static ModEvent me(const ModEventDelta &med)
const Gecode::ModEvent ME_FLOAT_VAL
Domain operation has resulted in a value (assigned variable).
const Gecode::PropCond PC_FLOAT_VAL
Propagate when a view becomes assigned (single value).
const Gecode::ModEvent ME_FLOAT_BND
Domain operation has changed the minimum or maximum of the domain.
const Gecode::ModEvent ME_FLOAT_FAILED
Domain operation has resulted in failure.
const Gecode::PropCond PC_FLOAT_BND
Propagate when minimum or maximum of a view changes.
const Gecode::ModEvent ME_INT_BND
Domain operation has changed the minimum or maximum of the domain.
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.
const Gecode::ModEvent ME_BOOL_FAILED
Domain operation has resulted in failure.
const Gecode::ModEvent ME_INT_FAILED
Domain operation has resulted in failure.
const Gecode::ModEvent ME_BOOL_VAL
Domain operation has resulted in a value (assigned variable).
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value).
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
const Gecode::ModEvent ME_INT_VAL
Domain operation has resulted in a value (assigned variable).
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
const Gecode::ModEvent ME_SET_CLUB
Domain operation has changed the least upper bound and the cardinality.
const Gecode::ModEvent ME_SET_VAL
Domain operation has resulted in a value (assigned variable).
const Gecode::ModEvent ME_SET_GLB
Domain operation has changed the greatest lower bound.
const Gecode::ModEvent ME_SET_CGLB
Domain operation has changed the greatest lower bound and the cardinality.
const Gecode::PropCond PC_SET_CARD
Propagate when the cardinality of a view changes.
const Gecode::PropCond PC_SET_CLUB
Propagate when the cardinality or the least upper bound of a view changes.
const Gecode::ModEvent ME_SET_CARD
Domain operation has changed the variable cardinality.
const Gecode::PropCond PC_SET_VAL
Propagate when a view becomes assigned (single value).
const Gecode::PropCond PC_SET_ANY
Propagate when any bound or the cardinality of a view changes.
const Gecode::ModEvent ME_SET_LUB
Domain operation has changed the least upper bound.
const Gecode::ModEvent ME_SET_BB
Domain operation has changed both greatest lower and least upper bound.
const Gecode::ModEvent ME_SET_FAILED
Domain operation has resulted in failure.
const Gecode::ModEvent ME_SET_CBB
Domain operation has changed both the greatest lower bound and the least upper bound,...
const Gecode::PropCond PC_SET_CGLB
Propagate when the cardinality or the greatest lower bound of a view changes.
Gecode toplevel namespace
int PropCond
Type for propagation conditions.
int ModEvent
Type for modification events.
#define GECODE_NEVER
Assert that this command is never executed.