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

Method events

gecode/int/task/event.hpp:82–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80
81 template<class Task>
82 forceinline Event*
83 Event::events(Region& r, const TaskArray<Task>& t, bool& assigned) {
84 Event* e = r.alloc<Event>(4*t.size()+1);
85
86 // Initialize events
87 assigned=true;
88 bool required=false;
89
90 int n=0;
91 for (int i=0; i<t.size(); i++)
92 if (t[i].assigned()) {
93 // Only add required part
94 if (t[i].pmin() > 0) {
95 required = true;
96 e[n++].init(Event::ERT,t[i].lst(),i);
97 e[n++].init(Event::LRT,t[i].ect(),i);
98 } else if (t[i].pmax() == 0) {
99 required = true;
100 e[n++].init(Event::ZRO,t[i].lst(),i);
101 }
102 } else {
103 assigned = false;
104 e[n++].init(Event::EST,t[i].est(),i);
105 e[n++].init(Event::LCT,t[i].lct(),i);
106 // Check whether task has required part
107 if (t[i].lst() < t[i].ect()) {
108 required = true;
109 e[n++].init(Event::ERT,t[i].lst(),i);
110 e[n++].init(Event::LRT,t[i].ect(),i);
111 }
112 }
113
114 if (!required)
115 return nullptr;
116
117 // Sort events
118 Support::quicksort(e, n);
119
120 // Write end marker
121 e[n++].init(Event::END,Limits::infinity,0);
122
123 return e;
124 }
125
126 template<class Task>
127 forceinline Event*

Callers

nothing calls this directly

Calls 12

quicksortFunction · 0.85
sizeMethod · 0.45
assignedMethod · 0.45
pminMethod · 0.45
initMethod · 0.45
lstMethod · 0.45
ectMethod · 0.45
pmaxMethod · 0.45
estMethod · 0.45
lctMethod · 0.45
mandatoryMethod · 0.45
excludedMethod · 0.45

Tested by

no test coverage detected