sortedness.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 #ifndef __GECODE_INT_SORTEDNESS_HH__
00024 #define __GECODE_INT_SORTEDNESS_HH__
00025
00026
00027 #include "int.hh"
00028 #include "int/rel.hh"
00029 #include "int/distinct.hh"
00030
00036 namespace Gecode { namespace Int { namespace Sortedness {
00037
00053 template<class View, class Tuple, bool Perm, bool shared>
00054 class Sortedness : public Propagator {
00055 protected:
00056
00069 ViewArray<Tuple> xz;
00070
00072 ViewArray<View> y;
00074 ViewArray<View> w;
00076 int reachable;
00078 Sortedness(Space*,
00079 ViewArray<Tuple>&,
00080 ViewArray<View>&);
00081
00083 Sortedness(Space* home,
00084 bool share,
00085 Sortedness<View, Tuple, Perm, shared>& p);
00086
00087 public:
00089 virtual ~Sortedness(void);
00090
00092 virtual Actor* copy(Space* home, bool share);
00093
00097 virtual PropCost cost (void) const;
00098
00100 virtual ExecStatus propagate(Space* home);
00101
00103 static ExecStatus post(Space*,
00104 ViewArray<Tuple>&,
00105 ViewArray<View>&);
00106
00107 };
00108
00109
00110 }}}
00111
00112 #include "int/sortedness/sortsup.icc"
00113 #include "int/sortedness/order.icc"
00114 #include "int/sortedness/matching.icc"
00115 #include "int/sortedness/narrowing.icc"
00116 #include "int/sortedness/sortedness.icc"
00117
00118 #endif
00119
00120
00121
00122