precede.hh
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef __GECODE_INT_PRECEDE_HH__
00039 #define __GECODE_INT_PRECEDE_HH__
00040
00041 #include <gecode/int.hh>
00042
00048 namespace Gecode { namespace Int { namespace Precede {
00049
00060 template<class View>
00061 class Single : public NaryPropagator<View,PC_INT_NONE> {
00062 protected:
00063 using NaryPropagator<View,PC_INT_NONE>::x;
00065 class Index : public Advisor {
00066 public:
00068 int i;
00070 Index(Space& home, Propagator& p, Council<Index>& c, int i);
00072 Index(Space& home, Index& a);
00073 };
00075 Council<Index> c;
00077 int s, t;
00079 int alpha, beta, gamma;
00081 ExecStatus updateAlpha(Space& home);
00083 ExecStatus updateBeta(Space& home);
00085 Single(Home home, ViewArray<View>& x, int s, int t, int beta, int gamma);
00087 Single(Space& home, Single<View>& p);
00088 public:
00090 virtual Propagator* copy(Space& home);
00092 virtual PropCost cost(const Space&, const ModEventDelta&) const;
00094 virtual void reschedule(Space& home);
00096 virtual size_t dispose(Space& home);
00098 virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
00100 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
00102 static ExecStatus post(Home home, ViewArray<View>& x, int s, int t);
00103 };
00104
00105 }}}
00106
00107 #include <gecode/int/precede/single.hpp>
00108
00109 #endif
00110
00111