MCPcopy Create free account
hub / github.com/Gecode/gecode / propagate

Method propagate

gecode/kernel/branch/chb.hpp:439–467  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

437
438 template<class View>
439 ExecStatus
440 CHB::Recorder<View>::propagate(Space& home, const ModEventDelta&) {
441 // Lock chb information
442 chb.acquire();
443 if (home.failed()) {
444 chb.bump();
445 for (Advisors<Idx> as(c); as(); ++as) {
446 int i = as.advisor().idx();
447 if (as.advisor().marked()) {
448 as.advisor().unmark();
449 chb.update(i,true);
450 if (x[i].assigned())
451 as.advisor().dispose(home,c);
452 }
453 }
454 } else {
455 for (Advisors<Idx> as(c); as(); ++as) {
456 int i = as.advisor().idx();
457 if (as.advisor().marked()) {
458 as.advisor().unmark();
459 chb.update(i,false);
460 if (x[i].assigned())
461 as.advisor().dispose(home,c);
462 }
463 }
464 }
465 chb.release();
466 return c.empty() ? home.ES_SUBSUMED(*this) : ES_FIX;
467 }
468
469
470}

Callers 1

statusMethod · 0.45

Calls 12

bumpMethod · 0.80
unmarkMethod · 0.80
ES_SUBSUMEDMethod · 0.80
acquireMethod · 0.45
failedMethod · 0.45
idxMethod · 0.45
markedMethod · 0.45
updateMethod · 0.45
assignedMethod · 0.45
disposeMethod · 0.45
releaseMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected