const unsigned long new_length = new_size * elmsize;
char *const new_data = (char *) xbt_malloc0(elmsize * new_size);
- DEBUG3("expend %p from %lu to %lu elements", (void *) dynar,
+ DEBUG3("expand %p from %lu to %lu elements", (void *) dynar,
(unsigned long) old_size, nb);
if (old_data) {
_xbt_dynar_put_elm(dynar, idx, src);
}
-/** @brief Set the Nth element of a dynar (expended if needed). Previous value at this position is NOT freed
+/** @brief Set the Nth element of a dynar (expanded if needed). Previous value at this position is NOT freed
*
* \param dynar information dealer
* \param idx index of the slot we want to modify
_dynar_unlock(dynar);
}
-/** @brief Set the Nth element of a dynar (expended if needed). Previous value is freed
+/** @brief Set the Nth element of a dynar (expanded if needed). Previous value is freed
*
* \param dynar
* \param idx
return res;
}
-/** @brief Set the Nth dynar's element, expending the dynar and sliding the previous values to the right
+/** @brief Set the Nth dynar's element, expanding the dynar and sliding the previous values to the right
*
* Set the Nth element of a dynar, expanding the dynar if needed, and
* moving the previously existing value and all subsequent ones to one
_dynar_unlock(dynar);
}
+/** @brief Transform a dynar into a NULL terminated array
+ *
+ * \param dynar the dynar to transform
+ */
+XBT_INLINE void * xbt_dynar_to_array (xbt_dynar_t dynar)
+{
+ void * res;
+ void * last = xbt_new0(char,dynar->elmsize);
+ xbt_dynar_push(dynar, last);
+ free(last);
+ dynar->used--;
+ res = dynar->data;
+ free(dynar);
+ return res;
+}
+
/*
* Return 0 if d1 and d2 are equal and 1 if not equal
*/
/*******************************************************************************/
XBT_TEST_UNIT("insert",test_dynar_insert,"Using the xbt_dynar_insert and xbt_dynar_remove functions")
{
- xbt_dynar_t d = xbt_dynar_new(sizeof(int), NULL);
+ xbt_dynar_t d = xbt_dynar_new(sizeof(unsigned int), NULL);
unsigned int cursor;
int cpt;