X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fdynamic-array.h;h=be27cc4958d51a2f2b42320044e371a0e664b492;hb=a0377dfefe40662ba7d68617bce6ff467114136c;hp=0b488a39cd52f95b785f2f3a52ee48f6c3e9cd0b;hpb=5fe3e097f121a17b37c098f87cba2b4a51d6208b;p=lttng-tools.git diff --git a/src/common/dynamic-array.h b/src/common/dynamic-array.h index 0b488a39c..be27cc495 100644 --- a/src/common/dynamic-array.h +++ b/src/common/dynamic-array.h @@ -9,7 +9,6 @@ #define LTTNG_DYNAMIC_ARRAY_H #include -#include typedef void (*lttng_dynamic_array_element_destructor)(void *element); typedef void (*lttng_dynamic_pointer_array_destructor)(void *ptr); @@ -52,7 +51,7 @@ static inline void *lttng_dynamic_array_get_element(const struct lttng_dynamic_array *array, size_t element_index) { - assert(element_index < array->size); + LTTNG_ASSERT(element_index < array->size); return array->buffer.data + (element_index * array->element_size); } @@ -140,6 +139,23 @@ void *lttng_dynamic_pointer_array_get_pointer( return *element; } +/* + * Returns the pointer at index `index`, sets the array slot to NULL. Does not + * run the destructor. + */ + +static inline +void *lttng_dynamic_pointer_array_steal_pointer( + struct lttng_dynamic_pointer_array *array, size_t index) +{ + void **p_element = lttng_dynamic_array_get_element(&array->array, index); + void *element = *p_element; + + *p_element = NULL; + + return element; +} + /* * Add a pointer to the end of a dynamic pointer array. The array's element * count is increased by one and its underlying capacity is adjusted