| 258 | } |
| 259 | |
| 260 | forceinline Gecode::ModEvent |
| 261 | IntVarImpBase::notify(Gecode::Space& home, Gecode::ModEvent me, Gecode::Delta& d) { |
| 262 | switch (me) { |
| 263 | case ME_INT_VAL: |
| 264 | // Conditions: VAL, BND, DOM |
| 265 | Gecode::VarImp<Gecode::Int::IntVarImpConf>::schedule(home,PC_INT_VAL,PC_INT_DOM,ME_INT_VAL); |
| 266 | if (!Gecode::VarImp<Gecode::Int::IntVarImpConf>::advise(home,ME_INT_VAL,d)) |
| 267 | return ME_INT_FAILED; |
| 268 | cancel(home); |
| 269 | break; |
| 270 | case ME_INT_BND: |
| 271 | // Conditions: BND, DOM |
| 272 | Gecode::VarImp<Gecode::Int::IntVarImpConf>::schedule(home,PC_INT_BND,PC_INT_DOM,ME_INT_BND); |
| 273 | if (!Gecode::VarImp<Gecode::Int::IntVarImpConf>::advise(home,ME_INT_BND,d)) |
| 274 | return ME_INT_FAILED; |
| 275 | break; |
| 276 | case ME_INT_DOM: |
| 277 | // Conditions: DOM |
| 278 | Gecode::VarImp<Gecode::Int::IntVarImpConf>::schedule(home,PC_INT_DOM,PC_INT_DOM,ME_INT_DOM); |
| 279 | if (!Gecode::VarImp<Gecode::Int::IntVarImpConf>::advise(home,ME_INT_DOM,d)) |
| 280 | return ME_INT_FAILED; |
| 281 | break; |
| 282 | default: GECODE_NEVER; |
| 283 | } |
| 284 | return me; |
| 285 | } |
| 286 | |
| 287 | }} |
| 288 | #endif |