man-prop.hpp
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 namespace Gecode { namespace Int { namespace Unary {
00035
00036 template<class ManTask, class PL>
00037 forceinline
00038 ManProp<ManTask,PL>::ManProp(Home home, TaskArray<ManTask>& t)
00039 : TaskProp<ManTask,PL>(home,t) {}
00040
00041 template<class ManTask, class PL>
00042 forceinline
00043 ManProp<ManTask,PL>::ManProp(Space& home, ManProp<ManTask,PL>& p)
00044 : TaskProp<ManTask,PL>(home,p) {}
00045
00046 template<class ManTask, class PL>
00047 forceinline ExecStatus
00048 ManProp<ManTask,PL>::post(Home home, TaskArray<ManTask>& t) {
00049 if (t.size() > 1)
00050 (void) new (home) ManProp<ManTask,PL>(home,t);
00051 return ES_OK;
00052 }
00053
00054 template<class ManTask, class PL>
00055 Actor*
00056 ManProp<ManTask,PL>::copy(Space& home) {
00057 return new (home) ManProp<ManTask,PL>(home,*this);
00058 }
00059
00060 template<class ManTask, class PL>
00061 ExecStatus
00062 ManProp<ManTask,PL>::propagate(Space& home, const ModEventDelta&) {
00063 GECODE_ES_CHECK(overload(t));
00064
00065 if (PL::basic)
00066 GECODE_ES_CHECK(timetabling(home,*this,t));
00067
00068 if (PL::advanced) {
00069 GECODE_ES_CHECK(detectable(home,t));
00070 GECODE_ES_CHECK(notfirstnotlast(home,t));
00071 GECODE_ES_CHECK(edgefinding(home,t));
00072 }
00073
00074 if (!PL::basic)
00075 GECODE_ES_CHECK(subsumed(home,*this,t));
00076
00077 return ES_NOFIX;
00078 }
00079
00080 }}}
00081
00082