-/* Copyright (c) 2009-2018. The SimGrid Team.
+/* Copyright (c) 2009-2019. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include <cstring>
#include <unordered_map>
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_dotparse, sd, "Parsing DOT files");
-
#if HAVE_GRAPHVIZ
#include <graphviz/cgraph.h>
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_dotparse, sd, "Parsing DOT files");
+
xbt_dynar_t SD_dotload_generic(const char* filename, bool sequential, bool schedule);
static void dot_task_p_free(void *task) {
if(schedule){
if (schedule_success) {
- std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::get_instance()->get_all_hosts();
for (auto const& elm : computers) {
SD_task_t previous_task = nullptr;
- for (auto const& task : *elm.second) {
+ for (auto const& cur_task : *elm.second) {
/* add dependency between the previous and the task to avoid parallel execution */
- if(task){
- if (previous_task && not SD_task_dependency_exists(previous_task, task))
- SD_task_dependency_add(previous_task, task);
+ if (cur_task) {
+ if (previous_task && not SD_task_dependency_exists(previous_task, cur_task))
+ SD_task_dependency_add(previous_task, cur_task);
- SD_task_schedulel(task, 1, hosts[atoi(elm.first.c_str())]);
- previous_task = task;
+ SD_task_schedulel(cur_task, 1, hosts[std::stod(elm.first)]);
+ previous_task = cur_task;
}
}
delete elm.second;
}
if (result && not acyclic_graph_detail(result)) {
- std::string base = simgrid::xbt::Path(filename).getBasename();
+ std::string base = simgrid::xbt::Path(filename).get_base_name();
XBT_ERROR("The DOT described in %s is not a DAG. It contains a cycle.", base.c_str());
xbt_dynar_free(&result);
result = nullptr;