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 _CSP_FILTERS_RP_H
00025 #define _CSP_FILTERS_RP_H
00026
00027
00028 CSP_NAMESPACE_BEGIN(csp);
00029 CSP_NAMESPACE_BEGIN(filters);
00030
00031
00040 class CSP_API RP :
00041 public Filter
00042 {
00043 public:
00044 RP(Problem& problem, Retraction& retraction) :
00045 Filter(L"Recursive Propagation", L"RP", problem, retraction) {}
00046 virtual ~RP() {}
00047
00048
00049 virtual bool restoresArcConsistency() const { return false; }
00050
00051 virtual bool propagate(
00052 const vlist_type& uninstantiatedVariables,
00053 const vlist_type& modifiedVariables,
00054 const bool keepChanges = true);
00055
00056 private:
00058 RP(const RP&);
00059
00061 RP& operator=(const RP&);
00062 };
00063
00064
00065 CSP_NAMESPACE_END(filters);
00066 CSP_NAMESPACE_END(csp);
00067
00068
00069 #endif // _CSP_FILTERS_RP_H
00070
00071
00072
00073