std::vector<simgrid::s4u::ActivityPtr> current;
for (const auto& a : dag)
- if (dynamic_cast<simgrid::s4u::Exec*>(a.get()) != nullptr && a->is_waited_by() == 0)
+ if (dynamic_cast<simgrid::s4u::Exec*>(a.get()) != nullptr && a->has_no_successor())
current.push_back(a);
while (not current.empty()) {
static YY_BUFFER_STATE input_buffer;
-namespace simgrid {
-namespace s4u {
+namespace simgrid::s4u {
static std::vector<ActivityPtr> result;
static std::map<std::string, ExecPtr, std::less<>> jobs;
* Files not produced in the system are said to be produced by root task (top of DAG).
* Files not consumed in the system are said to be consumed by end task (bottom of DAG).
*/
- CommPtr file;
-
- for (auto const& elm : files) {
- file = elm.second;
+ for (auto const& [_, elm] : files) {
+ CommPtr file = elm;
CommPtr newfile;
if (file->dependencies_solved()) {
for (auto const& it : file->get_successors()) {
result.push_back(newfile);
}
}
- if (file->is_waited_by() == 0) {
+ if (file->has_no_successor()) {
for (auto const& it : file->get_dependencies()) {
newfile = Comm::sendto_init()->set_name(file->get_name())->set_payload_size(file->get_remaining());
it->add_successor(newfile);
if ((a != root_task) && (a != end_task)) {
if (a->dependencies_solved())
root_task->add_successor(a);
- if (a->is_waited_by() == 0)
+ if (a->has_no_successor())
a->add_successor(end_task);
}
}
FILE* in_file = fopen(filename.c_str(), "r");
xbt_assert(in_file != nullptr, "Failed to open file: %s", filename.c_str());
- Agraph_t* dag_dot = agread(in_file, NIL(Agdisc_t*));
+ Agraph_t* dag_dot = agread(in_file, nullptr);
std::unordered_map<std::string, ActivityPtr> activities;
std::vector<ActivityPtr> dag;
/* Create all the nodes */
Agnode_t* node = nullptr;
for (node = agfstnode(dag_dot); node; node = agnxtnode(dag_dot, node)) {
- char* name = agnameof(node);
+ const std::string name = agnameof(node);
double amount = atof(agget(node, (char*)"size"));
if (activities.find(name) == activities.end()) {
- XBT_DEBUG("See <Exec id = %s amount = %.0f>", name, amount);
+ XBT_DEBUG("See <Exec id = %s amount = %.0f>", name.c_str(), amount);
act = Exec::init()->set_name(name)->set_flops_amount(amount)->vetoable_start();
- activities.insert({std::string(name), act});
- if (strcmp(name, "root") && strcmp(name, "end"))
+ activities.try_emplace(name, act);
+ if (name != "root" && name != "end")
dag.push_back(act);
} else {
- XBT_WARN("Exec '%s' is defined more than once", name);
+ XBT_WARN("Exec '%s' is defined more than once", name.c_str());
}
}
/*Check if 'root' and 'end' nodes have been explicitly declared. If not, create them. */
act = Comm::sendto_init()->set_name(name)->set_payload_size(size)->vetoable_start();
src->add_successor(act);
act->add_successor(dst);
- activities.insert({name, act});
+ activities.try_emplace(name, act);
dag.push_back(act);
} else {
XBT_WARN("Comm '%s' is defined more than once", name.c_str());
root->add_successor(a);
}
- if (a->is_waited_by() == 0 && a != end) {
+ if (a->has_no_successor() && a != end) {
XBT_DEBUG("Activity '%s' has no successors. Add dependency to 'end'", a->get_cname());
a->add_successor(end);
}
"Please install graphviz, graphviz-dev, and libgraphviz-dev (and erase CMakeCache.txt) before recompiling.");
}
#endif
-} // namespace s4u
-} // namespace simgrid
+} // namespace simgrid::s4u
void STag_dax__adag()
{
runtime *= 4200000000.; /* Assume that timings were done on a 4.2GFlops machine. I mean, why not? */
XBT_DEBUG("See <job id=%s runtime=%s %.0f>", A_dax__job_id, A_dax__job_runtime, runtime);
simgrid::s4u::current_job = simgrid::s4u::Exec::init()->set_name(name)->set_flops_amount(runtime)->vetoable_start();
- simgrid::s4u::jobs.insert({A_dax__job_id, simgrid::s4u::current_job});
+ simgrid::s4u::jobs.try_emplace(A_dax__job_id, simgrid::s4u::current_job);
simgrid::s4u::result.push_back(simgrid::s4u::current_job);
} catch (const std::invalid_argument&) {
throw std::invalid_argument(std::string("Parse error: ") + A_dax__job_runtime + " is not a double");