dom.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 #ifndef __GECODE_INT_DOM_HH__
00037 #define __GECODE_INT_DOM_HH__
00038
00039 #include <gecode/int.hh>
00040 #include <gecode/int/rel.hh>
00041
00047 namespace Gecode { namespace Int { namespace Dom {
00048
00055 template<class View, ReifyMode rm>
00056 class ReRange : public ReUnaryPropagator<View,PC_INT_DOM,BoolView> {
00057 protected:
00058 using ReUnaryPropagator<View,PC_INT_DOM,BoolView>::x0;
00059 using ReUnaryPropagator<View,PC_INT_DOM,BoolView>::b;
00061 int min;
00063 int max;
00065 ReRange(Space& home, ReRange& p);
00067 ReRange(Home home, View x, int min, int max, BoolView b);
00068 public:
00070 virtual Actor* copy(Space& home);
00072 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
00074 static ExecStatus post(Home home, View x, int min, int max, BoolView b);
00075 };
00076
00083 template<class View, ReifyMode rm>
00084 class ReIntSet : public ReUnaryPropagator<View,PC_INT_DOM,BoolView> {
00085 protected:
00086 using ReUnaryPropagator<View,PC_INT_DOM,BoolView>::x0;
00087 using ReUnaryPropagator<View,PC_INT_DOM,BoolView>::b;
00088
00090 IntSet is;
00092 ReIntSet(Space& home, ReIntSet& p);
00094 ReIntSet(Home home, View x, const IntSet& s, BoolView b);
00095 public:
00097 virtual Actor* copy(Space& home);
00099 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
00101 static ExecStatus post(Home home, View x, const IntSet& s, BoolView b);
00103 virtual size_t dispose(Space& home);
00104 };
00105
00106 }}}
00107
00108 #include <gecode/int/dom/range.hpp>
00109 #include <gecode/int/dom/set.hpp>
00110
00111 #endif
00112
00113
00114