-static XBT_INLINE
- void
-_xbt_dynar_put_elm(const xbt_dynar_t dynar,
- const unsigned long idx, const void *const src)
-{
- void *const elm = _xbt_dynar_elm(dynar, idx);
- const unsigned long elmsize = dynar->elmsize;
-
- memcpy(elm, src, elmsize);
-}
-
-static XBT_INLINE
- void
-_xbt_dynar_remove_at(xbt_dynar_t const dynar,
- const unsigned long idx, void *const object)
-{
-
- unsigned long nb_shift;
- unsigned long offset;
-
- _sanity_check_dynar(dynar);
- _check_inbound_idx(dynar, idx);
-
- if (object) {
- _xbt_dynar_get_elm(object, dynar, idx);
- } else if (dynar->free_f) {
- if (dynar->elmsize <= SIZEOF_MAX) {
- char elm[SIZEOF_MAX];
- _xbt_dynar_get_elm(elm, dynar, idx);
- dynar->free_f(elm);
- } else {
- char *elm = malloc(dynar->elmsize);
- _xbt_dynar_get_elm(elm, dynar, idx);
- dynar->free_f(elm);
- free(elm);
- }
- }
-
- nb_shift = dynar->used - 1 - idx;
-
- if (nb_shift) {
- offset = nb_shift * dynar->elmsize;
- memmove(_xbt_dynar_elm(dynar, idx), _xbt_dynar_elm(dynar, idx + 1),
- offset);
- }
-
- dynar->used--;
-}
-