Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add a convinient xbt_dynar_set_as() macro, and test it
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 12 Nov 2010 15:28:56 +0000 (15:28 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 12 Nov 2010 15:28:56 +0000 (15:28 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8536 48e7efb5-ca39-0410-a469-dd3cf9ba447f

include/xbt/dynar.h
src/dynar_unit.c
src/xbt/dynar.c

index aa03316..22dc482 100644 (file)
@@ -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) \
index 0a31130..82923a4 100644 (file)
@@ -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);
index f4f1cdd..5c37451 100644 (file)
@@ -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);