| 35 | |
| 36 | template<class ManTaskView> |
| 37 | forceinline ExecStatus |
| 38 | detectable(Space& home, TaskViewArray<ManTaskView>& t) { |
| 39 | sort<ManTaskView,STO_ECT,true>(t); |
| 40 | |
| 41 | Region r; |
| 42 | |
| 43 | OmegaTree<ManTaskView> o(r,t); |
| 44 | TaskViewIter<ManTaskView,STO_LST,true> q(r,t); |
| 45 | int* est = r.alloc<int>(t.size()); |
| 46 | |
| 47 | for (int i=0; i<t.size(); i++) { |
| 48 | while (q() && (t[i].ect() > t[q.task()].lst())) { |
| 49 | o.insert(q.task()); ++q; |
| 50 | } |
| 51 | est[i] = o.ect(i); |
| 52 | } |
| 53 | |
| 54 | for (int i=0; i<t.size(); i++) |
| 55 | GECODE_ME_CHECK(t[i].est(home,est[i])); |
| 56 | |
| 57 | return ES_OK; |
| 58 | } |
| 59 | |
| 60 | template<class ManTask> |
| 61 | ExecStatus |