X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fdynamic-array.c;h=d723ffacb385094097508250b5d28a40e4c3991c;hp=f737c982d6c1b7bfa39212a43ce6a7d404d63449;hb=HEAD;hpb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a diff --git a/src/common/dynamic-array.c b/src/common/dynamic-array.c deleted file mode 100644 index f737c982d..000000000 --- a/src/common/dynamic-array.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (C) 2019 Jérémie Galarneau - * - * SPDX-License-Identifier: LGPL-2.1-only - * - */ - -#include - -LTTNG_HIDDEN -void lttng_dynamic_array_init(struct lttng_dynamic_array *array, - size_t element_size, - lttng_dynamic_array_element_destructor destructor) -{ - lttng_dynamic_buffer_init(&array->buffer); - array->element_size = element_size; - array->size = 0; - array->destructor = destructor; -} - -LTTNG_HIDDEN -int lttng_dynamic_array_add_element(struct lttng_dynamic_array *array, - const void *element) -{ - int ret; - - if (!array || !element) { - ret = -1; - goto end; - } - - ret = lttng_dynamic_buffer_append(&array->buffer, element, - array->element_size); - if (ret) { - goto end; - } - array->size++; -end: - return ret; -} - -LTTNG_HIDDEN -int lttng_dynamic_array_remove_element(struct lttng_dynamic_array *array, - size_t element_index) -{ - void *element = lttng_dynamic_array_get_element(array, - element_index); - - if (array->destructor) { - array->destructor(element); - } - if (element_index != lttng_dynamic_array_get_count(array) - 1) { - void *next_element = lttng_dynamic_array_get_element(array, - element_index + 1); - - memmove(element, next_element, - (array->size - element_index - 1) * array->element_size); - } - array->size--; - return lttng_dynamic_buffer_set_size(&array->buffer, - array->buffer.size - array->element_size); -} - -LTTNG_HIDDEN -void lttng_dynamic_array_reset(struct lttng_dynamic_array *array) -{ - if (array->destructor) { - size_t i; - - for (i = 0; i < lttng_dynamic_array_get_count(array); i++) { - array->destructor(lttng_dynamic_array_get_element(array, - i)); - } - } - - lttng_dynamic_buffer_reset(&array->buffer); - array->size = 0; -} - -LTTNG_HIDDEN -void lttng_dynamic_array_clear(struct lttng_dynamic_array *array) -{ - if (array->destructor) { - size_t i; - - for (i = 0; i < lttng_dynamic_array_get_count(array); i++) { - array->destructor(lttng_dynamic_array_get_element(array, - i)); - } - } - - lttng_dynamic_buffer_set_size(&array->buffer, 0); - array->size = 0; -} - -LTTNG_HIDDEN -void lttng_dynamic_pointer_array_init( - struct lttng_dynamic_pointer_array *array, - lttng_dynamic_pointer_array_destructor destructor) -{ - lttng_dynamic_array_init(&array->array, sizeof(void *), destructor); -} - -LTTNG_HIDDEN -int lttng_dynamic_pointer_array_remove_pointer( - struct lttng_dynamic_pointer_array *array, size_t index) -{ - int ret; - const lttng_dynamic_array_element_destructor destructor = - array->array.destructor; - - /* - * Prevent the destructor from being used by the underlying - * dynamic array. - */ - array->array.destructor = NULL; - if (destructor) { - destructor(lttng_dynamic_pointer_array_get_pointer(array, - index)); - } - ret = lttng_dynamic_array_remove_element(&array->array, index); - array->array.destructor = destructor; - return ret; -} - -/* Release any memory used by the dynamic array. */ -LTTNG_HIDDEN -void lttng_dynamic_pointer_array_reset( - struct lttng_dynamic_pointer_array *array) -{ - if (array->array.destructor) { - size_t i, count = lttng_dynamic_pointer_array_get_count(array); - - for (i = 0; i < count; i++) { - void *ptr = lttng_dynamic_pointer_array_get_pointer( - array, i); - array->array.destructor(ptr); - } - /* - * Prevent the destructor from being used by the underlying - * dynamic array. - */ - array->array.destructor = NULL; - } - lttng_dynamic_array_reset(&array->array); -} - -LTTNG_HIDDEN -void lttng_dynamic_pointer_array_clear( - struct lttng_dynamic_pointer_array *array) -{ - const lttng_dynamic_array_element_destructor destructor = - array->array.destructor; - - /* - * Prevent the destructor from being used by the underlying - * dynamic array. - */ - array->array.destructor = NULL; - if (destructor) { - size_t i, count = lttng_dynamic_pointer_array_get_count(array); - - for (i = 0; i < count; i++) { - void *ptr = lttng_dynamic_pointer_array_get_pointer( - array, i); - destructor(ptr); - } - } - lttng_dynamic_array_clear(&array->array); - array->array.destructor = destructor; -}