- if (trace_iterator->idx < trace->event_list.size() - 1) {
- xbt_heap_push(p_heap, trace_iterator, event_date + event->delta);
- trace_iterator->idx++;
- } else if (event->delta > 0) { /* Last element, checking for periodicity */
- xbt_heap_push(p_heap, trace_iterator, event_date + event->delta);
- trace_iterator->idx = 1; /* not 0 as the first event is a placeholder to handle when events really start */
- } else { /* We don't need this trace_event anymore */
- trace_iterator->free_me = 1;
+ if (event->idx < profile->event_list.size() - 1) {
+ heap_.emplace(event_date + dateVal.date_, event);
+ event->idx++;
+ } else if (dateVal.date_ > 0) { /* Last element. Shall we loop? */
+ heap_.emplace(event_date + dateVal.date_, event);
+ event->idx = 1; /* idx=0 is a placeholder to store when events really start */
+ } else { /* If we don't loop, we don't need this event anymore */
+ event->free_me = true;