00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "warner.hh"
00024
00025 void Warner::warn(int w) {
00026 if (bh != NULL)
00027 bh->vartouched(w,sp);
00028 }
00029
00030
00031 void Warner::setBH(BranchingHeuristic* b) {
00032 bh=b;
00033 }
00034
00035
00036 WarningProp::WarningProp(Space* home, int v, IntView vv, Warner* f, bool fd) : UnaryPropagator<IntView,PC_INT_DOM>(home,vv,fd) {
00037 var=v;
00038 toWarn=f;
00039 }
00040
00041 WarningProp::WarningProp(Space* home, bool share, WarningProp& p) : UnaryPropagator<IntView,PC_INT_DOM>(home,share,p) {
00042 var=p.var;
00043 toWarn=p.toWarn;
00044 }
00045
00046 WarningProp::~WarningProp(void) {}
00047
00048 PropCost WarningProp::cost(void) const {return PC_CRAZY_HI;}
00049
00050 ExecStatus WarningProp::propagate(Space * home) {
00051 toWarn->warn(var);
00052 return ES_NOFIX;
00053 }
00054
00055 Actor* WarningProp::copy(Space* home,bool share) {return new (home) WarningProp(home,share,*this);}
00056
00057 ExecStatus WarningProp::warning(Space* home, int v, IntView vv, Warner* f) {
00058 (void) new (home) WarningProp(home,v,vv,f);
00059 return ES_OK;
00060 }
00061
00062 void WarningProp::warning(Space* home, int v, IntVar iv, Warner* f) {
00063 IntView vv(iv);
00064 GECODE_ES_FAIL(home,warning(home,v,vv,f));
00065 }
00066
00067