MCPcopy Create free account
hub / github.com/Gecode/gecode / ExecStatus subsumed

Function ExecStatus subsumed

gecode/int/cumulative/subsumption.hpp:37–65  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35
36 template<class Task>
37 forceinline ExecStatus
38 subsumed(Space& home, Propagator& p, int c, TaskArray<Task>& t) {
39 Region r;
40
41 if (Event* e = Event::events(r,t)) {
42 // Process events, use ccur as the capacity that is still free
43 do {
44 // Current time
45 int time = e->time();
46 // Process events for completion of required part
47 for ( ; (e->type() == Event::LRT) && (e->time() == time); e++)
48 c += t[e->idx()].c();
49 // Process events for zero-length task
50 for ( ; (e->type() == Event::ZRO) && (e->time() == time); e++)
51 if (c < t[e->idx()].c())
52 return ES_FAILED;
53 // Process events for start of required part
54 for ( ; (e->type() == Event::ERT) && (e->time() == time); e++) {
55 c -= t[e->idx()].c();
56 if (c < 0)
57 return ES_FAILED;
58 }
59 } while (e->type() != Event::END);
60 } else {
61 return ES_OK;
62 }
63
64 return home.ES_SUBSUMED(p);
65 }
66
67}}}
68

Callers

nothing calls this directly

Calls 5

ES_SUBSUMEDMethod · 0.80
timeMethod · 0.45
typeMethod · 0.45
cMethod · 0.45
idxMethod · 0.45

Tested by

no test coverage detected