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 #ifndef __GECODE_INT_DOM_HH__
00025 #define __GECODE_INT_DOM_HH__
00026
00027 #include "gecode/int.hh"
00028 #include "gecode/int/rel.hh"
00029 #include "gecode/iter.hh"
00030
00036 namespace Gecode { namespace Int { namespace Dom {
00037
00044 template <class View>
00045 class ReRange : public ReUnaryPropagator<View,PC_INT_BND,BoolView> {
00046 protected:
00047 using ReUnaryPropagator<View,PC_INT_BND,BoolView>::x0;
00048 using ReUnaryPropagator<View,PC_INT_BND,BoolView>::b;
00050 int min;
00052 int max;
00054 ReRange(Space* home, bool share, ReRange& p);
00056 ReRange(Space* home, View x, int min, int max, BoolView b);
00057 public:
00059 virtual Actor* copy(Space* home, bool share);
00061 virtual ExecStatus propagate(Space* home);
00063 static ExecStatus post(Space* home, View x, int min, int max, BoolView b);
00064 };
00065
00072 template <class View>
00073 class ReIntSet : public ReUnaryPropagator<View,PC_INT_DOM,BoolView> {
00074 protected:
00075 using ReUnaryPropagator<View,PC_INT_DOM,BoolView>::x0;
00076 using ReUnaryPropagator<View,PC_INT_DOM,BoolView>::b;
00077
00079 IntSet is;
00081 ReIntSet(Space* home, bool share, ReIntSet& p);
00083 ReIntSet(Space* home, View x, const IntSet& s, BoolView b);
00084 public:
00086 virtual Actor* copy(Space* home, bool share);
00088 virtual ExecStatus propagate(Space* home);
00090 static ExecStatus post(Space* home, View x, const IntSet& s, BoolView b);
00091 };
00092
00093 }}}
00094
00095 #include "gecode/int/dom/range.icc"
00096 #include "gecode/int/dom/spec.icc"
00097
00098 #endif
00099
00100
00101