From 7e6a22e5e70668af1007180c823291b4524f321e Mon Sep 17 00:00:00 2001 From: alegrand Date: Mon, 5 Mar 2007 16:09:30 +0000 Subject: [PATCH] Adding convenient function for Fred Suter git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3199 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/simdag/simdag.h | 1 + src/simdag/sd_task.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/include/simdag/simdag.h b/include/simdag/simdag.h index 3bb899f408..96ee925070 100644 --- a/include/simdag/simdag.h +++ b/include/simdag/simdag.h @@ -117,6 +117,7 @@ XBT_PUBLIC(void) SD_task_destroy(SD_task_t task); XBT_PUBLIC(void) SD_task_dependency_add(const char *name, void *data, SD_task_t src, SD_task_t dst); XBT_PUBLIC(void) SD_task_dependency_remove(SD_task_t src, SD_task_t dst); XBT_PUBLIC(void*) SD_task_dependency_get_data(SD_task_t src, SD_task_t dst); +XBT_PUBLIC(int) SD_task_dependency_exists(SD_task_t src, SD_task_t dst); /** @} */ /************************** Global *******************************************/ diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index f2aa7bde34..158184d935 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -301,6 +301,31 @@ void SD_task_dependency_add(const char *name, void *data, SD_task_t src, SD_task __SD_print_dependencies(dst); */ } +/** + * \brief Indacates whether there is a dependency between two tasks. + * + * \param src a task + * \param dst a task depending on \a src + */ +int SD_task_dependency_exists(SD_task_t src, SD_task_t dst) { + xbt_dynar_t dynar; + int length; + int i; + SD_dependency_t dependency; + + SD_CHECK_INIT_DONE(); + xbt_assert0(src != NULL && dst != NULL, "Invalid parameter"); + + dynar = src->tasks_after; + length = xbt_dynar_length(dynar); + + for (i = 0; i < length; i++) { + xbt_dynar_get_cpy(dynar, i, &dependency); + if (dependency->dst == dst) return 1; + } + return 0; +} + /** * \brief Remove a dependency between two tasks * -- 2.20.1