member.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 #ifndef __GECODE_INT_MEMBER_HH__
00035 #define __GECODE_INT_MEMBER_HH__
00036
00037 #include <gecode/int.hh>
00038 #include <gecode/int/val-set.hh>
00039
00045 namespace Gecode { namespace Int { namespace Member {
00046
00053 template<class View>
00054 class Prop : public NaryOnePropagator<View,PC_INT_DOM> {
00055 protected:
00056 using NaryOnePropagator<View,PC_INT_DOM>::x;
00057 using NaryOnePropagator<View,PC_INT_DOM>::y;
00059 ValSet vs;
00061 static void add(Space& home, ValSet& vs, ViewArray<View>& x);
00063 void eliminate(Space& home);
00065 Prop(Home home, ValSet& vs, ViewArray<View>& x, View y);
00067 Prop(Space& home, Prop<View>& p);
00068 public:
00070 virtual PropCost cost(const Space&, const ModEventDelta& med) const;
00072 virtual Propagator* copy(Space& home);
00074 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
00076 static ExecStatus post(Home home, ViewArray<View>& x, View y);
00078 static ExecStatus post(Home home, ValSet& vs, ViewArray<View>& x, View y);
00080 virtual size_t dispose(Space& home);
00081 };
00082
00089 template<class View, ReifyMode rm>
00090 class ReProp : public Prop<View> {
00091 protected:
00092 using Prop<View>::x;
00093 using Prop<View>::y;
00094 using Prop<View>::vs;
00095 using Prop<View>::add;
00096 using Prop<View>::eliminate;
00098 BoolView b;
00100 ReProp(Home home, ValSet& vs, ViewArray<View>& x, View y, BoolView b);
00102 ReProp(Space& home, ReProp<View,rm>& p);
00103 public:
00105 virtual Propagator* copy(Space& home);
00107 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
00109 static ExecStatus post(Home home, ViewArray<View>& x, View y, BoolView b);
00111 virtual size_t dispose(Space& home);
00112 };
00113
00114 }}}
00115
00116 #include <gecode/int/member/prop.hpp>
00117 #include <gecode/int/member/re-prop.hpp>
00118
00119 #endif
00120
00121