From: mquinson Date: Fri, 12 Nov 2010 15:28:56 +0000 (+0000) Subject: add a convinient xbt_dynar_set_as() macro, and test it X-Git-Tag: v3_5~291 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c4aff8ff373e26e56e1589ce541659eae43be460 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 --- 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);