From c4aff8ff373e26e56e1589ce541659eae43be460 Mon Sep 17 00:00:00 2001 From: mquinson Date: Fri, 12 Nov 2010 15:28:56 +0000 Subject: [PATCH] add a convinient xbt_dynar_set_as() macro, and test it git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8536 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/xbt/dynar.h | 4 ++++ src/dynar_unit.c | 10 +++++++++- src/xbt/dynar.c | 8 ++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/xbt/dynar.h b/include/xbt/dynar.h index aa03316140..22dc482477 100644 --- a/include/xbt/dynar.h +++ b/include/xbt/dynar.h @@ -156,6 +156,10 @@ XBT_PUBLIC(void *) xbt_dynar_pop_ptr(xbt_dynar_t const dynar); * @hideinitializer */ # define xbt_dynar_get_as(dynar,idx,type) \ (*(type*)xbt_dynar_get_ptr((dynar),(idx))) +/** @brief Quick setting of scalar content + * @hideinitializer */ +# define xbt_dynar_set_as(dynar,idx,type,val) \ + (*(type*)xbt_dynar_get_ptr((dynar),(idx))) = val /** @brief Quick retrieval of scalar content * @hideinitializer */ # define xbt_dynar_getlast_as(dynar,type) \ diff --git a/src/dynar_unit.c b/src/dynar_unit.c index 0a3113070f..82923a4da0 100644 --- a/src/dynar_unit.c +++ b/src/dynar_unit.c @@ -8,7 +8,7 @@ /* GENERATED FILE, DO NOT EDIT */ /*******************************/ -#line 754 "xbt/dynar.c" +#line 753 "xbt/dynar.c" #define NB_ELEM 5000 @@ -191,6 +191,14 @@ XBT_TEST_UNIT("insert",test_dynar_insert,"Using the xbt_dynar_insert and xbt_dyn } /* end_of_traversal */ + /* Re-fill with the same values using set_as (and re-verify) */ + for (cpt = 0; cpt < NB_ELEM; cpt++) + xbt_dynar_set_as(d, cpt, int, cpt); + xbt_dynar_foreach(d, cursor, cpt) + xbt_test_assert2(cursor == cpt, + "The retrieved value is not the same than the injected one (%d!=%d)", + cursor, cpt); + for (cpt = 0; cpt < NB_ELEM; cpt++) { int val; xbt_dynar_remove_at(d,0,&val); diff --git a/src/xbt/dynar.c b/src/xbt/dynar.c index f4f1cdd26d..5c37451459 100644 --- a/src/xbt/dynar.c +++ b/src/xbt/dynar.c @@ -932,6 +932,14 @@ XBT_TEST_UNIT("insert",test_dynar_insert,"Using the xbt_dynar_insert and xbt_dyn } /* end_of_traversal */ + /* Re-fill with the same values using set_as (and re-verify) */ + for (cpt = 0; cpt < NB_ELEM; cpt++) + xbt_dynar_set_as(d, cpt, int, cpt); + xbt_dynar_foreach(d, cursor, cpt) + xbt_test_assert2(cursor == cpt, + "The retrieved value is not the same than the injected one (%d!=%d)", + cursor, cpt); + for (cpt = 0; cpt < NB_ELEM; cpt++) { int val; xbt_dynar_remove_at(d,0,&val); -- 2.20.1