X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9f62e12607e183452816941da3e99bb5efda40d0..b4d06d5a039456cb6e7313710fda6f060b76739c:/src/simdag/sd_daxloader.cpp diff --git a/src/simdag/sd_daxloader.cpp b/src/simdag/sd_daxloader.cpp index 54baf3766c..61383ba88a 100644 --- a/src/simdag/sd_daxloader.cpp +++ b/src/simdag/sd_daxloader.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2019. The SimGrid Team. +/* Copyright (c) 2009-2021. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -11,6 +11,7 @@ #include "xbt/misc.h" #include #include +#include #include "dax_dtd.h" #include "dax_dtd.c" @@ -20,8 +21,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_daxparse, sd, "Parsing DAX files"); /* Ensure that transfer tasks have unique names even though a file is used several times */ void uniq_transfer_task_name(SD_task_t task) { - SD_task_t child = *(task->successors->begin()); - SD_task_t parent = *(task->predecessors->begin()); + const_SD_task_t child = *(task->successors->begin()); + const_SD_task_t parent = *(task->predecessors->begin()); std::string new_name = std::string(SD_task_get_name(parent)) + "_" + SD_task_get_name(task) + "_" + SD_task_get_name(child); @@ -29,22 +30,24 @@ void uniq_transfer_task_name(SD_task_t task) SD_task_set_name(task, new_name.c_str()); } -static bool children_are_marked(SD_task_t task){ +static bool children_are_marked(const_SD_task_t task) +{ return std::none_of(task->successors->begin(), task->successors->end(), [](const SD_task_t& elm) { return not elm->marked; }) && std::none_of(task->outputs->begin(), task->outputs->end(), [](const SD_task_t& elm) { return not elm->marked; }); } -static bool parents_are_marked(SD_task_t task){ +static bool parents_are_marked(const_SD_task_t task) +{ return std::none_of(task->predecessors->begin(), task->predecessors->end(), [](const SD_task_t& elm) { return not elm->marked; }) && std::none_of(task->inputs->begin(), task->inputs->end(), [](const SD_task_t& elm) { return not elm->marked; }); } -bool acyclic_graph_detail(xbt_dynar_t dag){ +bool acyclic_graph_detail(const_xbt_dynar_t dag) +{ unsigned int count; - bool all_marked = true; SD_task_t task = nullptr; std::vector current; xbt_dynar_foreach (dag, count, task) @@ -72,7 +75,7 @@ bool acyclic_graph_detail(xbt_dynar_t dag){ current = next; } - all_marked = true; + bool all_marked = true; //test if all tasks are marked xbt_dynar_foreach(dag,count,task){ if (task->kind != SD_TASK_COMM_E2E && not task->marked) { @@ -126,8 +129,8 @@ bool acyclic_graph_detail(xbt_dynar_t dag){ static YY_BUFFER_STATE input_buffer; static xbt_dynar_t result; -static std::map jobs; -static std::map files; +static std::map> jobs; +static std::map> files; static SD_task_t current_job; /** @brief loads a DAX file describing a DAG @@ -237,7 +240,7 @@ void STag_dax__adag() try { double version = std::stod(std::string(A_dax__adag_version)); xbt_assert(version == 2.1, "Expected version 2.1 in tag, got %f. Fix the parser or your file", version); - } catch (std::invalid_argument& ia) { + } catch (const std::invalid_argument&) { throw std::invalid_argument(std::string("Parse error: ") + A_dax__adag_version + " is not a double"); } } @@ -253,7 +256,7 @@ void STag_dax__job() current_job = SD_task_create_comp_seq(name.c_str(), nullptr, runtime); jobs.insert({A_dax__job_id, current_job}); xbt_dynar_push(result, ¤t_job); - } catch (std::invalid_argument& ia) { + } catch (const std::invalid_argument&) { throw std::invalid_argument(std::string("Parse error: ") + A_dax__job_runtime + " is not a double"); } } @@ -263,7 +266,7 @@ void STag_dax__uses() double size; try { size = std::stod(std::string(A_dax__uses_size)); - } catch (std::invalid_argument& ia) { + } catch (const std::invalid_argument&) { throw std::invalid_argument(std::string("Parse error: ") + A_dax__uses_size + " is not a double"); } bool is_input = (A_dax__uses_link == A_dax__uses_link_input); @@ -273,7 +276,7 @@ void STag_dax__uses() SD_task_t file; if (it == files.end()) { file = SD_task_create_comm_e2e(A_dax__uses_file, nullptr, size); - sd_global->initial_tasks->erase(file); + sd_global->initial_tasks.erase(file); files[A_dax__uses_file] = file; } else { file = it->second;