X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a04d968fb2054d0ba895ddabb2b86f0ff42fd4aa..ebc355d0c96552d0bc2aa301d90723490337bca3:/src/simdag/sd_daxloader.cpp diff --git a/src/simdag/sd_daxloader.cpp b/src/simdag/sd_daxloader.cpp index b98851100e..54baf3766c 100644 --- a/src/simdag/sd_daxloader.cpp +++ b/src/simdag/sd_daxloader.cpp @@ -1,4 +1,4 @@ -/* 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 @@ -12,11 +12,11 @@ #include #include -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_daxparse, sd, "Parsing DAX files"); - #include "dax_dtd.h" #include "dax_dtd.c" +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) { @@ -47,12 +47,10 @@ bool acyclic_graph_detail(xbt_dynar_t dag){ bool all_marked = true; SD_task_t task = nullptr; std::vector current; - xbt_dynar_foreach(dag,count,task){ - if(task->kind != SD_TASK_COMM_E2E){ - if(task->successors->empty() && task->outputs->empty()) - current.push_back(task); - } - } + xbt_dynar_foreach (dag, count, task) + if (task->kind != SD_TASK_COMM_E2E && task->successors->empty() && task->outputs->empty()) + current.push_back(task); + while (not current.empty()) { std::vector next; for (auto const& t : current) { @@ -209,7 +207,7 @@ xbt_dynar_t SD_daxload(const char *filename) xbt_dynar_foreach(result, cpt, file) { if (SD_task_get_kind(file) == SD_TASK_COMM_E2E) { uniq_transfer_task_name(file); - } else if (SD_task_get_kind(file) == SD_TASK_COMP_SEQ){ + } else { /* If some tasks do not take files as input, connect them to the root * if they don't produce files, connect them to the end node. */ @@ -219,21 +217,19 @@ xbt_dynar_t SD_daxload(const char *filename) if (file->outputs->empty()) SD_task_dependency_add(file, end_task); } - } else { - THROW_IMPOSSIBLE; } } if (not acyclic_graph_detail(result)) { XBT_ERROR("The DAX described in %s is not a DAG. It contains a cycle.", - simgrid::xbt::Path(filename).getBasename().c_str()); + simgrid::xbt::Path(filename).get_base_name().c_str()); xbt_dynar_foreach(result, cpt, file) SD_task_destroy(file); xbt_dynar_free_container(&result); - return nullptr; - } else { - return result; + result = nullptr; } + + return result; } void STag_dax__adag()