sd_global->task_mallocator=xbt_mallocator_new(65536, SD_task_new_f, SD_task_free_f, SD_task_recycle_f);
- sd_global->initial_task_set = xbt_dynar_new(sizeof(SD_task_t), nullptr);
- sd_global->executable_task_set = xbt_dynar_new(sizeof(SD_task_t), nullptr);
- sd_global->completed_task_set = xbt_dynar_new(sizeof(SD_task_t), nullptr);
+ sd_global->initial_tasks = new std::set<SD_task_t>();
+ sd_global->executable_tasks = new std::set<SD_task_t>();
+ sd_global->completed_tasks = new std::set<SD_task_t>();
sd_global->return_set = xbt_dynar_new(sizeof(SD_task_t), nullptr);
surf_init(argc, argv);
xbt_dynar_reset(sd_global->return_set);
/* explore the runnable tasks */
- xbt_dynar_foreach(sd_global->executable_task_set , iter, task) {
+ for (std::set<SD_task_t>::iterator it=sd_global->executable_tasks->begin();
+ it!=sd_global->executable_tasks->end(); ++it){
+ task = *it;
XBT_VERB("Executing task '%s'", SD_task_get_name(task));
SD_task_run(task);
xbt_dynar_push(sd_global->return_set, &task);
}
}
- if (!sd_global->watch_point_reached && how_long<0 &&
- xbt_dynar_is_empty(sd_global->initial_task_set) == 0) {
- XBT_WARN("Simulation is finished but %lu tasks are still not done",
- xbt_dynar_length(sd_global->initial_task_set));
+ if (!sd_global->watch_point_reached && how_long<0 && !sd_global->initial_tasks->empty()) {
+ XBT_WARN("Simulation is finished but %zu tasks are still not done",
+ sd_global->initial_tasks->size());
static const char* state_names[] =
{ "SD_NOT_SCHEDULED", "SD_SCHEDULABLE", "SD_SCHEDULED", "SD_RUNNABLE", "SD_RUNNING", "SD_DONE","SD_FAILED" };
- xbt_dynar_foreach(sd_global->initial_task_set, iter, task){
+ for (std::set<SD_task_t>::iterator it=sd_global->initial_tasks->begin();
+ it!=sd_global->initial_tasks->end(); ++it){
+ task = *it;
XBT_WARN("%s is in %s state", SD_task_get_name(task), state_names[SD_task_get_state(task)]);
}
}
#endif
xbt_mallocator_free(sd_global->task_mallocator);
- xbt_dynar_free_container(&(sd_global->initial_task_set));
- xbt_dynar_free_container(&(sd_global->executable_task_set));
- xbt_dynar_free_container(&(sd_global->completed_task_set));
+ delete sd_global->initial_tasks;
+ delete sd_global->executable_tasks;
+ delete sd_global->completed_tasks;
xbt_dynar_free_container(&(sd_global->return_set));
xbt_free(sd_global);
sd_global = nullptr;