Generated on Mon Aug 25 11:35:49 2008 for Gecode by doxygen 1.5.6

Gecode::Propagator Class Reference
[Programming actors]

Inherits Gecode::Actor.

Inherited by Gecode::Int::Channel::Base< Gecode::Int::Channel::DomInfo< View >, PC_INT_DOM >, Gecode::Int::Channel::Base< Gecode::Int::Channel::ValInfo< View >, PC_INT_VAL >, Gecode::Int::Extensional::Base< View >, Gecode::Int::Extensional::Base< View, false >, Gecode::BinaryPropagator< BV, PC_BOOL_VAL >, Gecode::BinaryPropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::BinaryPropagator< View, PC_INT_BND >, Gecode::BinaryPropagator< View, PC_INT_DOM >, Gecode::BinaryPropagator< View, PC_INT_VAL >, Gecode::BinaryPropagator< VX, PC_INT_DOM >, Gecode::BinaryPropagator< VX, PC_INT_VAL >, Gecode::Int::Bool::BoolBinary< BV, BV >, Gecode::BinaryPropagator< View, pc >, Gecode::CpltSet::BinaryCpltSetPropagator< View0, View1 >, Gecode::CpltSet::NaryCpltSetPropagator< View >, Gecode::CpltSet::NaryTwoCpltSetPropagator< View0, View1 >, Gecode::CpltSet::Singleton< View1, View2 >, Gecode::CpltSet::UnaryCpltSetPropagator< View >, Gecode::Int::Bool::BoolBinary< BVA, BVB >, Gecode::Int::Bool::BoolTernary< BVA, BVB, BVC >, Gecode::Int::Channel::Base< Info, pc >, Gecode::Int::Count::BaseInt< VX, VY >, Gecode::Int::Count::BaseView< VX, VY, VZ, shr >, Gecode::Int::Cumulatives::Val< ViewM, ViewD, ViewH, View >, Gecode::Int::Distinct::Bnd< View >, Gecode::Int::Element::Int< ViewA, ViewB >, Gecode::Int::Element::View< VA, VB, VC, pc_ac >, Gecode::Int::Extensional::Base< View, subscribe >, Gecode::Int::Extensional::LayeredGraph< View >, Gecode::Int::GCC::BndImp< View, Card, isView, shared >, Gecode::Int::GCC::Dom< View, Card, isView >, Gecode::Int::GCC::Val< View, Card, isView >, Gecode::Int::Linear::Lin< Val, P, N, pc >, Gecode::Int::Linear::LinBin< Val, A, B, pc >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, pcx >, Gecode::Int::Linear::LinBoolView< XV, YV >, Gecode::Int::Linear::LinTer< Val, A, B, C, pc >, Gecode::Int::Linear::MemoryLinBoolInt< VX >, Gecode::Int::Linear::ReLinBin< Val, A, B, pc, Ctrl >, Gecode::Int::Linear::SpeedLinBoolInt< VX >, Gecode::Int::Rel::Lex< View >, Gecode::Int::Sorted::Sorted< View, Perm >, Gecode::IntSetPropagator< View, pcs, pci >, Gecode::MixBinaryPropagator< View0, pc0, View1, pc1 >, Gecode::MixNaryOnePropagator< View0, pc0, View1, pc1 >, Gecode::MixTernaryPropagator< View0, pc0, View1, pc1, View2, pc2 >, Gecode::NaryOnePropagator< View, pc >, Gecode::NaryPropagator< View, pc >, Gecode::ReBinaryPropagator< View, pc, CtrlView >, Gecode::ReUnaryPropagator< View, pc, CtrlView >, Gecode::Set::Element::ElementDisjoint, Gecode::Set::Element::ElementIntersection< SView, RView >, Gecode::Set::Element::ElementUnion< SView, RView >, Gecode::Set::Element::ElementUnionConst< SView, RView >, Gecode::Set::Int::ChannelInt< View >, Gecode::Set::Int::Match< View >, Gecode::Set::Int::Weights< View >, Gecode::Set::Projection::CardProjection, Gecode::Set::Projection::NaryProjection< negated >, Gecode::Set::Projection::ReNaryProjection, Gecode::Set::Rel::ReEq< View0, View1 >, Gecode::Set::Rel::ReSubset< View0, View1 >, Gecode::TernaryPropagator< View, pc >, Gecode::UnaryPropagator< View, pc >, Gecode::IntSetPropagator< View, PC_SET_ANY, Gecode::Int::PC_INT_BND >, Gecode::IntSetPropagator< View, PC_SET_CARD, Gecode::Int::PC_INT_BND >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, P, N, pc >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, P, N, PC_INT_BND >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, P, N, PC_INT_VAL >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, View, View, PC_INT_DOM >, Gecode::Int::Linear::LinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_BND >, Gecode::Int::Linear::LinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_VAL >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_BND >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_VAL >, Gecode::Int::Linear::LinTer< Gecode::Int::GCC::Val< View, Card, isView >, A, B, C, PC_INT_BND >, Gecode::Int::Linear::LinTer< Gecode::Int::GCC::Val< View, Card, isView >, A, B, C, PC_INT_VAL >, Gecode::MixBinaryPropagator< Gecode::Int::BoolView, PC_BOOL_VAL, Gecode::Int::IntView, PC_INT_VAL >, Gecode::MixBinaryPropagator< VA, PC_INT_BND, Gecode::VB< P, b >, PC_INT_BND >, Gecode::MixBinaryPropagator< VA, PC_INT_DOM, Gecode::VB< P, b >, PC_INT_DOM >, Gecode::MixBinaryPropagator< View0, PC_INT_BND, View1, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_DOM, View1, PC_INT_DOM >, Gecode::MixBinaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, Gecode::MixBinaryPropagator< View0, PC_SET_CGLB, View1, PC_SET_CLUB >, Gecode::MixBinaryPropagator< View0, PC_SET_CLUB, View1, PC_SET_CGLB >, Gecode::MixBinaryPropagator< View0, PC_SET_VAL, View1, PC_SET_VAL >, Gecode::MixNaryOnePropagator< Gecode::Int::BoolView, Gecode::Int::PC_BOOL_VAL, View, PC_GEN_NONE >, Gecode::MixNaryOnePropagator< Gecode::Int::BoolView, PC_BOOL_VAL, Gecode::Int::IntView, PC_INT_DOM >, Gecode::MixNaryOnePropagator< View, PC_INT_DOM, View, PC_INT_BND >, Gecode::MixNaryOnePropagator< View0, PC_CPLTSET_DOM, View1, PC_CPLTSET_DOM >, Gecode::MixNaryOnePropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, Gecode::MixTernaryPropagator< VA, PC_INT_BND, Gecode::VB< P, b >, PC_INT_BND, VC, PC_INT_BND >, Gecode::MixTernaryPropagator< VA, PC_INT_DOM, Gecode::VB< P, b >, PC_INT_DOM, VC, PC_INT_DOM >, Gecode::MixTernaryPropagator< View, PC_INT_DOM, View, PC_INT_DOM, View, PC_INT_BND >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_ANY >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_CLUB >, Gecode::NaryOnePropagator< BV, PC_BOOL_VAL >, Gecode::NaryOnePropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::NaryOnePropagator< View, PC_INT_BND >, Gecode::NaryPropagator< BV, PC_BOOL_VAL >, Gecode::NaryPropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::NaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< View, PC_INT_DOM >, Gecode::NaryPropagator< View, PC_INT_VAL >, Gecode::ReBinaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::ReBinaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::Int::Linear::ReLinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_BND, Ctrl >, Gecode::Int::Linear::ReLinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_BND, Gecode::Int::BoolView >, Gecode::ReUnaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::ReUnaryPropagator< View, PC_INT_BND, Gecode::Int::BoolView >, Gecode::ReUnaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::ReUnaryPropagator< View, PC_INT_DOM, Gecode::Int::BoolView >, Gecode::TernaryPropagator< View, PC_INT_BND >, Gecode::TernaryPropagator< View, PC_INT_DOM >, Gecode::UnaryPropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::UnaryPropagator< View0, PC_SET_ANY >, Gecode::Int::Element::View< VA, Gecode::VB< P, b >, VC, pc_ac >, Gecode::Int::Element::View< VA, Gecode::VB< P, b >, VC, PC_INT_BND >, and Gecode::Int::Element::View< VA, Gecode::VB< P, b >, VC, PC_INT_DOM >.

List of all members.


Detailed Description

Base-class for propagators.

Definition at line 664 of file core.icc.


Propagation

virtual ExecStatus propagate (Space *home, ModEventDelta med)=0
 Propagation function.
virtual PropCost cost (ModEventDelta med) const =0
 Cost function.
virtual ExecStatus advise (Space *home, Advisor *a, const Delta *d)
 Advise function.

Protected Member Functions

 Propagator (Space *home)
 Constructor for creation.
 Propagator (Space *home, bool share, Propagator &p)
 Constructor for cloning p.

Friends

ExecStatus ES_SUBSUMED (Propagator *, size_t)
 Propagator p is subsumed
ExecStatus ES_SUBSUMED (Propagator *, Space *)
 Propagator p is subsumed
ExecStatus ES_FIX_PARTIAL (Propagator *, ModEventDelta)
 Propagator p has computed partial fixpoint
ExecStatus ES_NOFIX_PARTIAL (Propagator *, ModEventDelta)
 Propagator p has not computed partial fixpoint

Constructor & Destructor Documentation

Gecode::Propagator::Propagator ( Space home  )  [inline, protected]

Constructor for creation.

Definition at line 1624 of file core.icc.

Gecode::Propagator::Propagator ( Space home,
bool  share,
Propagator p 
) [inline, protected]

Constructor for cloning p.

Definition at line 1631 of file core.icc.


Member Function Documentation

virtual ExecStatus Gecode::Propagator::propagate ( Space home,
ModEventDelta  med 
) [pure virtual]

Propagation function.

The propagation function must return an execution status as follows:

  • ES_FAILED: the propagator has detected failure
  • ES_NOFIX: the propagator has done propagation
  • ES_FIX: the propagator has done propagation and has computed a fixpoint. That is, running the propagator immediately again will do nothing.

Apart from the above values, a propagator can return the result from calling one of the functions

  • ES_SUBSUMED: the propagator is subsumed and has been already deleted.
  • ES_NOFIX_PARTIAL: the propagator has consumed some of its propagation events.
  • ES_FIX_PARTIAL: the propagator has consumed some of its propagation events and with respect to these events is at fixpoint For more details, see the individual functions.

Implemented in Gecode::CpltSet::NaryCpltSetPropagator< View >, Gecode::CpltSet::BinaryCpltSetPropagator< View0, View1 >, Gecode::CpltSet::UnaryCpltSetPropagator< View >, Gecode::CpltSet::NaryOneCpltSetPropagator< View0, View1 >, Gecode::CpltSet::NaryTwoCpltSetPropagator< View0, View1 >, Gecode::CpltSet::BinRelDisj< View0, View1 >, Gecode::CpltSet::Singleton< View1, View2 >, Gecode::Int::Arithmetic::AbsBnd< View >, Gecode::Int::Arithmetic::AbsDom< View >, Gecode::Int::Arithmetic::MaxBnd< View >, Gecode::Int::Arithmetic::NaryMaxBnd< View >, Gecode::Int::Arithmetic::MaxDom< View >, Gecode::Int::Arithmetic::NaryMaxDom< View >, Gecode::Int::Arithmetic::SqrPlusBnd< VA, VB >, Gecode::Int::Arithmetic::SqrBnd< View >, Gecode::Int::Arithmetic::SqrPlusDom< VA, VB >, Gecode::Int::Arithmetic::SqrDom< View >, Gecode::Int::Arithmetic::SqrtBnd< View >, Gecode::Int::Arithmetic::SqrtDom< View >, Gecode::Int::Arithmetic::MultZeroOne< View, pc >, Gecode::Int::Arithmetic::MultPlusBnd< Val, VA, VB, VC >, Gecode::Int::Arithmetic::MultBnd< View >, Gecode::Int::Arithmetic::MultPlusDom< Val, VA, VB, VC >, Gecode::Int::Arithmetic::MultDom< View >, Gecode::Int::Arithmetic::DivPlusBnd< Val, VA, VB, VC, towardsMinInf >, Gecode::Int::Arithmetic::DivBnd< View >, Gecode::Int::Arithmetic::DivMod< View >, Gecode::Int::Bool::OrTrueSubsumed< BV >, Gecode::Int::Bool::Eq< BVA, BVB >, Gecode::Int::Bool::NaryEq< BV >, Gecode::Int::Bool::Lq< BV >, Gecode::Int::Bool::BinOrTrue< BVA, BVB >, Gecode::Int::Bool::TerOrTrue< BV >, Gecode::Int::Bool::QuadOrTrue< BV >, Gecode::Int::Bool::Or< BVA, BVB, BVC >, Gecode::Int::Bool::NaryOr< BV >, Gecode::Int::Bool::NaryOrTrue< BV >, Gecode::Int::Bool::Eqv< BVA, BVB, BVC >, Gecode::Int::Channel::Val< View, shared >, Gecode::Int::Channel::Dom< View, shared >, Gecode::Int::Channel::LinkSingle, Gecode::Int::Channel::LinkMulti, Gecode::Int::Circuit::Val< View >, Gecode::Int::Circuit::Dom< View >, Gecode::Int::Count::EqInt< VX, VY >, Gecode::Int::Count::GqInt< VX, VY >, Gecode::Int::Count::LqInt< VX, VY >, Gecode::Int::Count::NqInt< VX, VY >, Gecode::Int::Count::EqView< VX, VY, VZ, shr >, Gecode::Int::Count::NqView< VX, VY, VZ, shr >, Gecode::Int::Count::LqView< VX, VY, VZ, shr >, Gecode::Int::Count::GqView< VX, VY, VZ, shr >, Gecode::Int::Cumulatives::Val< ViewM, ViewD, ViewH, View >, Gecode::Int::Distinct::Val< View >, Gecode::Int::Distinct::Bnd< View >, Gecode::Int::Distinct::Dom< View >, Gecode::Int::Distinct::TerDom< View >, Gecode::Int::Dom::ReRange< View >, Gecode::Int::Dom::ReIntSet< View >, Gecode::Int::Element::Int< ViewA, ViewB >, Gecode::Int::Element::ViewBnd< VA, VB, VC >, Gecode::Int::Element::ViewDom< VA, VB, VC >, Gecode::Int::Extensional::LayeredGraph< View >, Gecode::Int::Extensional::Basic< View >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::GCC::BndImp< View, Card, isView, shared >, Gecode::Int::GCC::Dom< View, Card, isView >, Gecode::Int::GCC::Val< View, Card, isView >, Gecode::Int::Linear::EqBin< Val, A, B >, Gecode::Int::Linear::ReEqBin< Val, A, B, Ctrl >, Gecode::Int::Linear::NqBin< Val, A, B >, Gecode::Int::Linear::LqBin< Val, A, B >, Gecode::Int::Linear::GqBin< Val, A, B >, Gecode::Int::Linear::ReLqBin< Val, A, B >, Gecode::Int::Linear::EqTer< Val, A, B, C >, Gecode::Int::Linear::NqTer< Val, A, B, C >, Gecode::Int::Linear::LqTer< Val, A, B, C >, Gecode::Int::Linear::Eq< Val, P, N >, Gecode::Int::Linear::DomEq< Val, View >, Gecode::Int::Linear::ReEq< Val, P, N, Ctrl >, Gecode::Int::Linear::Nq< Val, P, N >, Gecode::Int::Linear::Lq< Val, P, N >, Gecode::Int::Linear::ReLq< Val, P, N >, Gecode::Int::Linear::EqBoolInt< VX >::Memory, Gecode::Int::Linear::EqBoolInt< VX >::Speed, Gecode::Int::Linear::GqBoolInt< VX >::Memory, Gecode::Int::Linear::GqBoolInt< VX >::Speed, Gecode::Int::Linear::NqBoolInt< VX >, Gecode::Int::Linear::EqBoolView< XV, YV >, Gecode::Int::Linear::NqBoolView< XV, YV >, Gecode::Int::Linear::GqBoolView< XV, YV >, Gecode::Int::Linear::ReEqBoolView< XV, YV, BV >, Gecode::Int::Linear::ReGqBoolView< XV, YV, BV >, Gecode::Int::Linear::EqBoolScale< SBAP, SBAN, VX >, Gecode::Int::Linear::LqBoolScale< SBAP, SBAN, VX >, Gecode::Int::Linear::NqBoolScale< SBAP, SBAN, VX >, Gecode::Int::Rel::EqDom< View0, View1 >, Gecode::Int::Rel::EqBnd< View0, View1 >, Gecode::Int::Rel::NaryEqDom< View >, Gecode::Int::Rel::NaryEqBnd< View >, Gecode::Int::Rel::ReEqDom< View, CtrlView >, Gecode::Int::Rel::ReEqBnd< View, CtrlView >, Gecode::Int::Rel::ReEqDomInt< View, CtrlView >, Gecode::Int::Rel::ReEqBndInt< View, CtrlView >, Gecode::Int::Rel::Nq< View >, Gecode::Int::Rel::Lq< View >, Gecode::Int::Rel::Le< View >, Gecode::Int::Rel::ReLq< View, CtrlView >, Gecode::Int::Rel::ReLqInt< View, CtrlView >, Gecode::Int::Rel::Lex< View >, Gecode::Int::Sorted::Sorted< View, Perm >, Gecode::Set::Convex::Convex, Gecode::Set::Convex::ConvexHull, Gecode::Set::Distinct::AtmostOne, Gecode::Set::Element::ElementIntersection< SView, RView >, Gecode::Set::Element::ElementUnion< SView, RView >, Gecode::Set::Element::ElementUnionConst< SView, RView >, Gecode::Set::Element::ElementDisjoint, Gecode::Set::Int::MinElement< View >, Gecode::Set::Int::MaxElement< View >, Gecode::Set::Int::Card< View >, Gecode::Set::Int::Match< View >, Gecode::Set::Int::ChannelInt< View >, Gecode::Set::Int::ChannelBool< View >, Gecode::Set::Int::Weights< View >, Gecode::Set::Projection::NaryProjection< negated >, Gecode::Set::Projection::ReNaryProjection, Gecode::Set::Projection::CardProjection, Gecode::Set::RelOp::SuperOfInter< View0, View1, View2 >, Gecode::Set::RelOp::SubOfUnion< View0, View1, View2 >, Gecode::Set::RelOp::Intersection< View0, View1, View2 >, Gecode::Set::RelOp::Union< View0, View1, View2 >, Gecode::Set::RelOp::IntersectionN< View0, View1 >, Gecode::Set::RelOp::UnionN< View0, View1 >, Gecode::Set::RelOp::PartitionN< View0, View1 >, Gecode::Set::Rel::SubSet< View0, View1 >, Gecode::Set::Rel::NoSubSet< View0, View1 >, Gecode::Set::Rel::ReSubset< View0, View1 >, Gecode::Set::Rel::Eq< View0, View1 >, Gecode::Set::Rel::ReEq< View0, View1 >, Gecode::Set::Rel::Distinct< View0, View1 >, Gecode::Set::Rel::DistinctDoit< View0 >, Gecode::Set::Sequence::Seq, and Gecode::Set::Sequence::SeqU.

virtual PropCost Gecode::Propagator::cost ( ModEventDelta  med  )  const [pure virtual]

Cost function.

Implemented in Gecode::CpltSet::NaryCpltSetPropagator< View >, Gecode::CpltSet::BinaryCpltSetPropagator< View0, View1 >, Gecode::CpltSet::UnaryCpltSetPropagator< View >, Gecode::CpltSet::NaryTwoCpltSetPropagator< View0, View1 >, Gecode::CpltSet::Singleton< View1, View2 >, Gecode::Int::Arithmetic::AbsBnd< View >, Gecode::Int::Arithmetic::AbsDom< View >, Gecode::Int::Arithmetic::MaxDom< View >, Gecode::Int::Arithmetic::NaryMaxDom< View >, Gecode::Int::Arithmetic::SqrPlusDom< VA, VB >, Gecode::Int::Arithmetic::SqrDom< View >, Gecode::Int::Arithmetic::SqrtDom< View >, Gecode::Int::Arithmetic::MultPlusDom< Val, VA, VB, VC >, Gecode::Int::Arithmetic::MultDom< View >, Gecode::Int::Bool::BoolBinary< BVA, BVB >, Gecode::Int::Bool::BoolTernary< BVA, BVB, BVC >, Gecode::Int::Bool::NaryEq< BV >, Gecode::Int::Bool::NaryOrTrue< BV >, Gecode::Int::Channel::Base< Info, pc >, Gecode::Int::Channel::Dom< View, shared >, Gecode::Int::Channel::LinkSingle, Gecode::Int::Channel::LinkMulti, Gecode::Int::Circuit::Val< View >, Gecode::Int::Circuit::Dom< View >, Gecode::Int::Count::BaseInt< VX, VY >, Gecode::Int::Count::NqInt< VX, VY >, Gecode::Int::Count::BaseView< VX, VY, VZ, shr >, Gecode::Int::Cumulatives::Val< ViewM, ViewD, ViewH, View >, Gecode::Int::Distinct::Bnd< View >, Gecode::Int::Distinct::Dom< View >, Gecode::Int::Element::Int< ViewA, ViewB >, Gecode::Int::Element::View< VA, VB, VC, pc_ac >, Gecode::Int::Element::ViewDom< VA, VB, VC >, Gecode::Int::Extensional::LayeredGraph< View >, Gecode::Int::Extensional::Base< View, subscribe >, Gecode::Int::Extensional::Basic< View >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::GCC::BndImp< View, Card, isView, shared >, Gecode::Int::GCC::Dom< View, Card, isView >, Gecode::Int::GCC::Val< View, Card, isView >, Gecode::Int::Linear::LinBin< Val, A, B, pc >, Gecode::Int::Linear::ReLinBin< Val, A, B, pc, Ctrl >, Gecode::Int::Linear::NqBin< Val, A, B >, Gecode::Int::Linear::LinTer< Val, A, B, C, pc >, Gecode::Int::Linear::Lin< Val, P, N, pc >, Gecode::Int::Linear::DomEq< Val, View >, Gecode::Int::Linear::MemoryLinBoolInt< VX >, Gecode::Int::Linear::SpeedLinBoolInt< VX >, Gecode::Int::Linear::NqBoolInt< VX >, Gecode::Int::Linear::LinBoolView< XV, YV >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, pcx >, Gecode::ReUnaryPropagator< View, pc, CtrlView >, Gecode::ReBinaryPropagator< View, pc, CtrlView >, Gecode::Int::Rel::EqDom< View0, View1 >, Gecode::Int::Rel::NaryEqDom< View >, Gecode::Int::Rel::NaryEqBnd< View >, Gecode::Int::Rel::Nq< View >, Gecode::Int::Rel::Lex< View >, Gecode::Int::Sorted::Sorted< View, Perm >, Gecode::UnaryPropagator< View, pc >, Gecode::BinaryPropagator< View, pc >, Gecode::TernaryPropagator< View, pc >, Gecode::NaryPropagator< View, pc >, Gecode::NaryOnePropagator< View, pc >, Gecode::MixBinaryPropagator< View0, pc0, View1, pc1 >, Gecode::MixTernaryPropagator< View0, pc0, View1, pc1, View2, pc2 >, Gecode::MixNaryOnePropagator< View0, pc0, View1, pc1 >, Gecode::Set::Element::ElementIntersection< SView, RView >, Gecode::Set::Element::ElementUnion< SView, RView >, Gecode::Set::Element::ElementUnionConst< SView, RView >, Gecode::Set::Element::ElementDisjoint, Gecode::Set::Int::Match< View >, Gecode::Set::Int::ChannelInt< View >, Gecode::Set::Int::ChannelBool< View >, Gecode::Set::Int::Weights< View >, Gecode::Set::Projection::NaryProjection< negated >, Gecode::Set::Projection::ReNaryProjection, Gecode::Set::Projection::CardProjection, Gecode::IntSetPropagator< View, pcs, pci >, Gecode::Set::RelOp::IntersectionN< View0, View1 >, Gecode::Set::RelOp::UnionN< View0, View1 >, Gecode::Set::RelOp::PartitionN< View0, View1 >, Gecode::Set::Rel::ReSubset< View0, View1 >, Gecode::Set::Rel::ReEq< View0, View1 >, Gecode::Int::Bool::BoolBinary< BV, BV >, Gecode::Int::Channel::Base< Gecode::Int::Channel::ValInfo< View >, PC_INT_VAL >, Gecode::Int::Channel::Base< Gecode::Int::Channel::DomInfo< View >, PC_INT_DOM >, Gecode::Int::Element::View< VA, Gecode::VB< P, b >, VC, pc_ac >, Gecode::Int::Element::View< VA, Gecode::VB< P, b >, VC, PC_INT_DOM >, Gecode::Int::Element::View< VA, Gecode::VB< P, b >, VC, PC_INT_BND >, Gecode::Int::Extensional::Base< View, false >, Gecode::Int::Extensional::Base< View >, Gecode::Int::Linear::LinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_BND >, Gecode::Int::Linear::LinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_VAL >, Gecode::Int::Linear::ReLinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_BND, Gecode::Int::BoolView >, Gecode::Int::Linear::ReLinBin< Gecode::Int::GCC::Val< View, Card, isView >, A, B, PC_INT_BND, Ctrl >, Gecode::Int::Linear::LinTer< Gecode::Int::GCC::Val< View, Card, isView >, A, B, C, PC_INT_BND >, Gecode::Int::Linear::LinTer< Gecode::Int::GCC::Val< View, Card, isView >, A, B, C, PC_INT_VAL >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, P, N, PC_INT_VAL >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, P, N, PC_INT_BND >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, View, View, PC_INT_DOM >, Gecode::Int::Linear::Lin< Gecode::Int::GCC::Val< View, Card, isView >, P, N, pc >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_VAL >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_BND >, Gecode::ReUnaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::ReUnaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::ReUnaryPropagator< View, PC_INT_DOM, Gecode::Int::BoolView >, Gecode::ReUnaryPropagator< View, PC_INT_BND, Gecode::Int::BoolView >, Gecode::ReBinaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::ReBinaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::UnaryPropagator< View0, PC_SET_ANY >, Gecode::UnaryPropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::BinaryPropagator< VX, PC_INT_VAL >, Gecode::BinaryPropagator< View, PC_INT_DOM >, Gecode::BinaryPropagator< View, PC_INT_VAL >, Gecode::BinaryPropagator< VX, PC_INT_DOM >, Gecode::BinaryPropagator< View, PC_INT_BND >, Gecode::BinaryPropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::BinaryPropagator< BV, PC_BOOL_VAL >, Gecode::TernaryPropagator< View, PC_INT_DOM >, Gecode::TernaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< View, PC_INT_DOM >, Gecode::NaryPropagator< View, PC_INT_VAL >, Gecode::NaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::NaryPropagator< BV, PC_BOOL_VAL >, Gecode::NaryOnePropagator< View, PC_INT_BND >, Gecode::NaryOnePropagator< Gecode::Set::SetView, PC_SET_ANY >, Gecode::NaryOnePropagator< BV, PC_BOOL_VAL >, Gecode::MixBinaryPropagator< VA, PC_INT_DOM, Gecode::VB< P, b >, PC_INT_DOM >, Gecode::MixBinaryPropagator< View0, PC_SET_CGLB, View1, PC_SET_CLUB >, Gecode::MixBinaryPropagator< Gecode::Int::BoolView, PC_BOOL_VAL, Gecode::Int::IntView, PC_INT_VAL >, Gecode::MixBinaryPropagator< View0, PC_SET_VAL, View1, PC_SET_VAL >, Gecode::MixBinaryPropagator< View0, PC_INT_DOM, View1, PC_INT_DOM >, Gecode::MixBinaryPropagator< View0, PC_INT_BND, View1, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, Gecode::MixBinaryPropagator< VA, PC_INT_BND, Gecode::VB< P, b >, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_CLUB, View1, PC_SET_CGLB >, Gecode::MixTernaryPropagator< View, PC_INT_DOM, View, PC_INT_DOM, View, PC_INT_BND >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_CLUB >, Gecode::MixTernaryPropagator< VA, PC_INT_DOM, Gecode::VB< P, b >, PC_INT_DOM, VC, PC_INT_DOM >, Gecode::MixTernaryPropagator< VA, PC_INT_BND, Gecode::VB< P, b >, PC_INT_BND, VC, PC_INT_BND >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_ANY >, Gecode::MixNaryOnePropagator< View, PC_INT_DOM, View, PC_INT_BND >, Gecode::MixNaryOnePropagator< Gecode::Int::BoolView, PC_BOOL_VAL, Gecode::Int::IntView, PC_INT_DOM >, Gecode::MixNaryOnePropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, Gecode::MixNaryOnePropagator< View0, PC_CPLTSET_DOM, View1, PC_CPLTSET_DOM >, Gecode::MixNaryOnePropagator< Gecode::Int::BoolView, Gecode::Int::PC_BOOL_VAL, View, PC_GEN_NONE >, Gecode::IntSetPropagator< View, PC_SET_ANY, Gecode::Int::PC_INT_BND >, and Gecode::IntSetPropagator< View, PC_SET_CARD, Gecode::Int::PC_INT_BND >.

ExecStatus Gecode::Propagator::advise ( Space home,
Advisor a,
const Delta d 
) [virtual]

Advise function.

The advisor is passed as argument a.

A propagator must specialize this advise function, if it uses advisors. The advise function must return an execution status as follows:

  • ES_FAILED: the advisor has detected failure
  • ES_FIX: the advisor's propagator (that is, this propagator) does not need to be run
  • ES_NOFIX: the advisor's propagator (that is, this propagator) must be run

Apart from the above values, an advisor can return the result from calling the function

  • ES_SUBSUMED_FIX: the advisor is subsumed, the advisor's propagator does not need to be run
  • ES_SUBSUMED_NOFIX: the advisor is subsumed, the advisor's propagator must be run For more details, see the function documentation.

The delta d describes how the variable has been changed by an operation on the advisor's variable. Typically, the delta information can only be utilized by either static or member functions of views as the actual delta information is both domain and view dependent.

Reimplemented in Gecode::Int::Extensional::LayeredGraph< View >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::Linear::EqBoolInt< VX >::Speed, Gecode::Int::Linear::GqBoolInt< VX >::Speed, and Gecode::Set::Int::ChannelBool< View >.

Definition at line 79 of file core.cc.


Friends And Related Function Documentation

ExecStatus ES_SUBSUMED ( Propagator p,
size_t  s 
) [friend]

Propagator p is subsumed

The size of the propagator is s.

Note that the propagator must be subsumed and also disposed. So in general, there should be code such as

 return ES_SUBSUMED(this,dispose(home)) 
.

However, in case the propagator has nothing to dispose (all its views are assigned and no external resources) it is sufficient to do

 return ES_SUBSUMED(this,sizeof(*this)) 
.

Warning:
Has a side-effect on the propagator. Overwrites the modification event delta of a propagator. Use only directly with returning from propagation.

ExecStatus ES_SUBSUMED ( Propagator p,
Space home 
) [friend]

Propagator p is subsumed

First disposes the propagator and then returns subsumption.

Warning:
Has a side-effect on the propagator. Overwrites the modification event delta of a propagator. Use only directly with returning from propagation.

ExecStatus ES_FIX_PARTIAL ( Propagator p,
ModEventDelta  med 
) [friend]

Propagator p has computed partial fixpoint

Set modification event delta to med and schedule propagator accordingly.

Warning:
Has a side-effect on the propagator. Use only directly with returning from propagation.

ExecStatus ES_NOFIX_PARTIAL ( Propagator p,
ModEventDelta  med 
) [friend]

Propagator p has not computed partial fixpoint

Combine current modification event delta with and schedule propagator accordingly.

Warning:
Has a side-effect on the propagator. Use only directly with returning from propagation.


Member Data Documentation

A set of modification events (used during propagation).

Definition at line 677 of file core.icc.

The size of the propagator (used during subsumption).

Definition at line 679 of file core.icc.

A list of advisors (used during cloning).

Definition at line 681 of file core.icc.


The documentation for this class was generated from the following files: