X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/74eba548bff1168594c39c3b483ee6db94acd808..d5a1db1d0b268cb9ed8f37246fd970fce7631943:/include/xbt/dynar.h diff --git a/include/xbt/dynar.h b/include/xbt/dynar.h index aa03316140..210efb751f 100644 --- a/include/xbt/dynar.h +++ b/include/xbt/dynar.h @@ -88,7 +88,6 @@ XBT_PUBLIC(void) xbt_dynar_dump(xbt_dynar_t dynar); XBT_PUBLIC(void) xbt_dynar_get_cpy(const xbt_dynar_t dynar, const unsigned long idx, void *const dst); - XBT_PUBLIC(void) xbt_dynar_set(xbt_dynar_t dynar, const int idx, const void *src); XBT_PUBLIC(void) xbt_dynar_replace(xbt_dynar_t dynar, @@ -105,8 +104,9 @@ XBT_PUBLIC(unsigned int) xbt_dynar_search(xbt_dynar_t const dynar, XBT_PUBLIC(int) xbt_dynar_member(xbt_dynar_t const dynar, void *elem); XBT_PUBLIC(void) xbt_dynar_sort(xbt_dynar_t const dynar, int_f_cpvoid_cpvoid_t compar_fn); -XBT_INLINE int xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2, +XBT_INLINE XBT_PUBLIC(int) xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2, int(*compar)(const void *, const void *)); +XBT_INLINE XBT_PUBLIC(void *) xbt_dynar_to_array (xbt_dynar_t dynar); /** @} */ /** @defgroup XBT_dynar_perl Perl-like use of dynars @@ -134,6 +134,8 @@ XBT_PUBLIC(void) xbt_dynar_map(const xbt_dynar_t dynar, * @{ */ +XBT_INLINE XBT_PUBLIC(void *) xbt_dynar_set_at_ptr(const xbt_dynar_t dynar, + const unsigned long idx); XBT_INLINE XBT_PUBLIC(void *) xbt_dynar_get_ptr(const xbt_dynar_t dynar, const unsigned long idx); XBT_PUBLIC(void *) xbt_dynar_insert_at_ptr(xbt_dynar_t const dynar, @@ -156,6 +158,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_set_at_ptr((dynar),(idx))) = val /** @brief Quick retrieval of scalar content * @hideinitializer */ # define xbt_dynar_getlast_as(dynar,type) \ @@ -224,7 +230,7 @@ _xbt_dynar_cursor_first(const xbt_dynar_t dynar, if (dynar->mutex) /* ie _dynar_lock(dynar) but not public */ xbt_mutex_acquire(dynar->mutex); - //DEBUG1("Set cursor on %p to the first position", (void *) dynar); + //XBT_DEBUG("Set cursor on %p to the first position", (void *) dynar); *cursor = 0; } @@ -234,12 +240,12 @@ _xbt_dynar_cursor_get(const xbt_dynar_t dynar, { if (idx >= dynar->used) { - //DEBUG1("Cursor on %p already on last elem", (void *) dynar); + //XBT_DEBUG("Cursor on %p already on last elem", (void *) dynar); if (dynar->mutex) /* unlock */ xbt_mutex_release(dynar->mutex); return FALSE; } - // DEBUG2("Cash out cursor on %p at %u", (void *) dynar, *idx); + // XBT_DEBUG("Cash out cursor on %p at %u", (void *) dynar, *idx); memcpy(dst, ((char *) dynar->data) + idx * dynar->elmsize, dynar->elmsize);