This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/674-improve-properties in repository https://gitbox.apache.org/repos/asf/celix.git
commit 9c0a9c6253d7288a69c7220d20091388a903464a Merge: 2acc4821 72592753 Author: Pepijn Noltes <[email protected]> AuthorDate: Thu Jan 4 23:58:42 2024 +0100 Merge branch 'master' into feature/674-improve-properties # Conflicts: # libs/utils/src/array_list.c .github/workflows/coverage.yml | 2 +- .github/workflows/coverity-scan.yml | 1 - .github/workflows/macos.yml | 4 +- .github/workflows/ubuntu.yml | 3 +- CHANGES.md | 4 + bundles/http_admin/http_admin/src/http_admin.c | 17 +- .../include/endpoint_descriptor_reader.h | 4 +- .../include/endpoint_descriptor_writer.h | 4 +- .../include/endpoint_discovery_poller.h | 3 +- .../src/endpoint_descriptor_reader.c | 33 +- .../src/endpoint_descriptor_writer.c | 6 +- .../src/endpoint_discovery_poller.c | 251 ++++--- .../src/endpoint_discovery_server.c | 23 +- .../gtest/src/rsa_tests.cc | 8 +- .../src/remote_service_admin_dfi.c | 34 +- .../src/remote_service_admin_dfi.h | 6 +- .../rsa_shm/src/rsa_shm_impl.c | 8 +- .../rsa_shm/src/rsa_shm_impl.h | 5 +- .../rsa_common/src/import_registration_impl.c | 5 +- .../rsa_common/src/import_registration_impl.h | 2 +- .../rsa_common/src/remote_interceptors_handler.c | 31 +- .../rsa_common/src/remote_service_admin_impl.h | 6 +- .../rsa_spi/include/endpoint_description.h | 4 +- .../rsa_spi/include/endpoint_listener.h | 3 - .../rsa_spi/include/remote_service_admin.h | 6 +- .../remote_services/topology_manager/src/scope.c | 60 +- .../remote_services/topology_manager/src/scope.h | 2 +- .../topology_manager/src/topology_manager.c | 12 +- .../topology_manager/src/topology_manager.h | 4 +- .../tms_tst/disc_mock/disc_mock_activator.c | 10 +- .../tms_tst/disc_mock/disc_mock_service.c | 4 +- .../tms_tst/disc_mock/disc_mock_service.h | 4 +- .../topology_manager/tms_tst/tms_tests.cpp | 30 +- bundles/shell/remote_shell/src/remote_shell.c | 55 +- bundles/shell/remote_shell/src/remote_shell.h | 2 +- bundles/shell/shell_tui/gtest/CMakeLists.txt | 1 + .../shell/shell_tui/gtest/src/ShellTuiTestSuite.cc | 36 +- bundles/shell/shell_tui/src/activator.c | 2 +- bundles/shell/shell_tui/src/history.c | 111 +-- bundles/shell/shell_tui/src/history.h | 26 +- bundles/shell/shell_tui/src/shell_tui.c | 41 +- bundles/shell/shell_tui/src/shell_tui.h | 6 +- cmake/Modules/FindCppUTest.cmake | 69 -- conanfile.py | 3 - examples/conan_test_package/my_rsa_activator.c | 6 +- .../src/CelixBundleContextServicesTestSuite.cc | 22 +- libs/framework/include/celix_api.h | 10 +- libs/framework/include_deprecated/bundle.h | 2 - libs/framework/include_deprecated/bundle_context.h | 2 - .../framework/include_deprecated/bundle_revision.h | 2 +- libs/framework/include_deprecated/dm_component.h | 4 +- .../include_deprecated/dm_dependency_manager.h | 1 - libs/framework/include_deprecated/framework.h | 2 +- libs/framework/include_deprecated/manifest.h | 3 +- libs/framework/include_deprecated/module.h | 10 - .../include_deprecated/service_reference.h | 1 - .../include_deprecated/service_registration.h | 1 - .../include_deprecated/service_registry.h | 4 +- .../framework/include_deprecated/service_tracker.h | 1 - libs/framework/src/bundle.c | 66 +- libs/framework/src/bundle_archive.c | 1 - libs/framework/src/bundle_context.c | 20 +- libs/framework/src/bundle_context_private.h | 2 +- libs/framework/src/bundle_private.h | 2 +- libs/framework/src/dm_component_impl.c | 14 +- libs/framework/src/dm_dependency_manager_impl.c | 9 +- libs/framework/src/framework.c | 118 ++- libs/framework/src/framework_private.h | 20 +- libs/framework/src/manifest.c | 6 +- libs/framework/src/manifest_parser.h | 1 - libs/framework/src/module.c | 22 +- libs/framework/src/registry_callback_private.h | 2 +- libs/framework/src/service_reference.c | 6 +- libs/framework/src/service_registration.c | 10 +- libs/framework/src/service_registration_private.h | 6 +- libs/framework/src/service_registry.c | 238 +++--- libs/framework/src/service_tracker.c | 30 +- libs/framework/src/service_tracker_private.h | 18 +- libs/utils/CMakeLists.txt | 40 -- libs/utils/benchmark/src/StringHashmapBenchmark.cc | 2 +- libs/utils/gtest/CMakeLists.txt | 16 +- .../src/DeprecatedHashmapTestSuite.cc} | 789 ++++++++++---------- .../gtest/src/IpUtilsErrorInjectionTestSuite.cc | 47 -- libs/utils/gtest/src/PropertiesTestSuite.cc | 28 - libs/utils/include_deprecated/array_list.h | 97 --- libs/utils/include_deprecated/celix_utils_api.h | 7 +- libs/utils/include_deprecated/filter.h | 1 - libs/utils/include_deprecated/ip_utils.h | 52 -- libs/utils/include_deprecated/linked_list.h | 92 --- .../include_deprecated/linked_list_iterator.h | 66 -- libs/utils/include_deprecated/properties.h | 75 -- libs/utils/private/test/array_list_test.cpp | 584 --------------- libs/utils/private/test/ip_utils_test.cpp | 108 --- libs/utils/private/test/linked_list_test.cpp | 796 --------------------- libs/utils/src/array_list.c | 298 +------- libs/utils/src/array_list_private.h | 14 - libs/utils/src/hash_map.c | 1 - libs/utils/src/hash_map_private.h | 7 + libs/utils/src/ip_utils.c | 170 ----- libs/utils/src/linked_list.c | 269 ------- libs/utils/src/linked_list_iterator.c | 154 ---- libs/utils/src/linked_list_private.h | 44 -- libs/utils/src/properties.c | 53 +- 103 files changed, 1160 insertions(+), 4263 deletions(-) diff --cc libs/utils/src/array_list.c index 0ebfa689,5b7a16e2..a7e2dd9f --- a/libs/utils/src/array_list.c +++ b/libs/utils/src/array_list.c @@@ -28,22 -28,10 +28,16 @@@ #include <stdio.h> #include <string.h> - #include "array_list.h" #include "celix_array_list.h" + #include "array_list_private.h" #include "celix_build_assert.h" +#include "celix_err.h" +#include "celix_stdio_cleanup.h" +#include "celix_stdlib_cleanup.h" + +#define CELIX_ARRAY_LIST_DEFAULT_CAPACITY 10 - static celix_status_t arrayList_elementEquals(const void *a, const void *b, bool *equals) { - *equals = (a == b); - return CELIX_SUCCESS; - } - static bool celix_arrayList_defaultEquals(celix_array_list_entry_t a, celix_array_list_entry_t b) { return memcmp(&a, &b, sizeof(a)) == 0; } @@@ -116,283 -75,17 +81,26 @@@ static celix_status_t celix_arrayList_e return status; } - unsigned int arrayList_size(array_list_pt list) { - return (int)list->size; - } - - bool arrayList_isEmpty(array_list_pt list) { - return list->size == 0; - } - - bool arrayList_contains(array_list_pt list, void * element) { - int index = arrayList_indexOf(list, element); - return index >= 0; - } - - int arrayList_indexOf(array_list_pt list, void * element) { - if (element == NULL) { - unsigned int i = 0; - for (i = 0; i < list->size; i++) { - if (list->elementData[i].voidPtrVal == NULL) { - return i; - } - } - } else { - unsigned int i = 0; - for (i = 0; i < list->size; i++) { - celix_array_list_entry_t entry; - memset(&entry, 0, sizeof(entry)); - entry.voidPtrVal = element; - bool equals = celix_arrayList_equalsForElement(list, entry, list->elementData[i]); - if (equals) { - return i; - } - } - } - return -1; - } - - int arrayList_lastIndexOf(array_list_pt list, void * element) { - if (element == NULL) { - int i = 0; - int size = (int)list->size; - for (i = size - 1; i >= 0; i--) { - if (list->elementData[i].voidPtrVal == NULL) { - return (int)i; - } - } - } else { - int i = 0; - int size = (int)list->size; - for (i = size - 1; i >= 0; i--) { - celix_array_list_entry_t entry; - memset(&entry, 0, sizeof(entry)); - entry.voidPtrVal = element; - bool equals = celix_arrayList_equalsForElement(list, entry, list->elementData[i]); - if (equals) { - return (int)i; - } - } - } - return -1; - } - - void * arrayList_get(array_list_pt list, unsigned int index) { - if (index >= list->size) { - return NULL; - } - - return list->elementData[index].voidPtrVal; - } - - void * arrayList_set(array_list_pt list, unsigned int index, void * element) { - void * oldElement; - if (index >= list->size) { - return NULL; - } - - oldElement = list->elementData[index].voidPtrVal; - memset(&list->elementData[index], 0, sizeof(celix_array_list_entry_t)); - list->elementData[index].voidPtrVal = element; - return oldElement; - } - - bool arrayList_add(array_list_pt list, void * element) { - arrayList_ensureCapacity(list, (int)list->size + 1); - memset(&list->elementData[list->size], 0, sizeof(celix_array_list_entry_t)); - list->elementData[list->size++].voidPtrVal = element; - return true; - } - - int arrayList_addIndex(array_list_pt list, unsigned int index, void * element) { - size_t numMoved; - if (index > list->size) { - return -1; - } - arrayList_ensureCapacity(list, (int)list->size+1); - numMoved = list->size - index; - memmove(list->elementData+(index+1), list->elementData+index, sizeof(celix_array_list_entry_t) * numMoved); - - list->elementData[index].voidPtrVal = element; - list->size++; - return 0; - } - - void * arrayList_remove(array_list_pt list, unsigned int index) { - void * oldElement; - size_t numMoved; - if (index >= list->size) { - return NULL; - } - - list->modCount++; - oldElement = list->elementData[index].voidPtrVal; - numMoved = list->size - index - 1; - memmove(list->elementData+index, list->elementData+index+1, sizeof(celix_array_list_entry_t) * numMoved); - memset(&list->elementData[--list->size], 0, sizeof(celix_array_list_entry_t)); - - return oldElement; - } - - void arrayList_fastRemove(array_list_pt list, unsigned int index) { - size_t numMoved; - list->modCount++; - - numMoved = list->size - index - 1; - memmove(list->elementData+index, list->elementData+index+1, sizeof(celix_array_list_entry_t) * numMoved); - memset(&list->elementData[--list->size], 0, sizeof(celix_array_list_entry_t)); - } - - bool arrayList_removeElement(array_list_pt list, void * element) { - if (element == NULL) { - unsigned int i = 0; - for (i = 0; i < list->size; i++) { - if (list->elementData[i].voidPtrVal == NULL) { - arrayList_fastRemove(list, i); - return true; - } - } - } else { - unsigned int i = 0; - for (i = 0; i < list->size; i++) { - celix_array_list_entry_t entry; - memset(&entry, 0, sizeof(entry)); - entry.voidPtrVal = element; - bool equals = celix_arrayList_equalsForElement(list, entry, list->elementData[i]); - if (equals) { - arrayList_fastRemove(list, i); - return true; - } - } - } - return false; - } - - void arrayList_clear(array_list_pt list) { - celix_arrayList_clear(list); - } - - bool arrayList_addAll(array_list_pt list, array_list_pt toAdd) { - unsigned int i; - unsigned int size = arrayList_size(toAdd); - arrayList_ensureCapacity(list, list->size + size); - // memcpy(list->elementData+list->size, *toAdd->elementData, size); - // list->size += size; - for (i = 0; i < arrayList_size(toAdd); i++) { - arrayList_add(list, arrayList_get(toAdd, i)); - } - return size != 0; - } - - array_list_pt arrayList_clone(array_list_pt list) { - unsigned int i; - array_list_pt new = NULL; - arrayList_create(&new); - // arrayList_ensureCapacity(new, list->size); - // memcpy(new->elementData, list->elementData, list->size); - // new->size = list->size; - - for (i = 0; i < arrayList_size(list); i++) { - arrayList_add(new, arrayList_get(list, i)); - } - new->modCount = 0; - return new; - } - - array_list_iterator_pt arrayListIterator_create(array_list_pt list) { - array_list_iterator_pt iterator = (array_list_iterator_pt) malloc(sizeof(*iterator)); - - iterator->lastReturned = -1; - iterator->cursor = 0; - iterator->list = list; - iterator->expectedModificationCount = list->modCount; - - return iterator; - } - - void arrayListIterator_destroy(array_list_iterator_pt iterator) { - iterator->lastReturned = -1; - iterator->cursor = 0; - iterator->expectedModificationCount = 0; - iterator->list = NULL; - free(iterator); - } - - bool arrayListIterator_hasNext(array_list_iterator_pt iterator) { - return iterator->cursor != iterator->list->size; - } - - void * arrayListIterator_next(array_list_iterator_pt iterator) { - void * next; - if (iterator->expectedModificationCount != iterator->list->modCount) { - return NULL; - } - next = arrayList_get(iterator->list, iterator->cursor); - iterator->lastReturned = iterator->cursor++; - return next; - } - - bool arrayListIterator_hasPrevious(array_list_iterator_pt iterator) { - return iterator->cursor != 0; - } - - void * arrayListIterator_previous(array_list_iterator_pt iterator) { - int i; - void * previous; - if (iterator->expectedModificationCount != iterator->list->modCount) { - return NULL; - } - i = iterator->cursor - 1; - previous = arrayList_get(iterator->list, i); - iterator->lastReturned = iterator->cursor = i; - return previous; - } - - void arrayListIterator_remove(array_list_iterator_pt iterator) { - if (iterator->lastReturned == -1) { - return; - } - if (iterator->expectedModificationCount != iterator->list->modCount) { - return; - } - if (arrayList_remove(iterator->list, iterator->lastReturned) != NULL) { - if (iterator->lastReturned < iterator->cursor) { - iterator->cursor--; - } - iterator->lastReturned = -1; - iterator->expectedModificationCount = iterator->list->modCount; - } - } - - - - - /********************************************************************************************************************** - ********************************************************************************************************************** - * Updated API - ********************************************************************************************************************** - **********************************************************************************************************************/ - celix_array_list_t* celix_arrayList_createWithOptions(const celix_array_list_create_options_t* opts) { - celix_array_list_t *list = calloc(1, sizeof(*list)); - if (list != NULL) { - list->capacity = 10; - list->elementData = malloc(sizeof(celix_array_list_entry_t) * list->capacity); - list->equals = opts->equalsCallback == NULL ? celix_arrayList_defaultEquals : opts->equalsCallback; - list->simpleRemovedCallback = opts->simpleRemovedCallback; - list->removedCallbackData = opts->removedCallbackData; - list->removedCallback = opts->removedCallback; + celix_autofree celix_array_list_t *list = calloc(1, sizeof(*list)); + if (!list) { + celix_err_push("Failed to create array list. Out of memory."); + return NULL; } - return list; + + list->capacity = opts->initialCapacity == 0 ? CELIX_ARRAY_LIST_DEFAULT_CAPACITY : opts->initialCapacity; + list->elementData = malloc(sizeof(celix_array_list_entry_t) * list->capacity); + list->equals = opts->equalsCallback == NULL ? celix_arrayList_defaultEquals : opts->equalsCallback; + list->simpleRemovedCallback = opts->simpleRemovedCallback; + list->removedCallbackData = opts->removedCallbackData; + list->removedCallback = opts->removedCallback; + + if (!list->elementData) { + celix_err_push("Failed to create array list. Out of memory."); + return NULL; + } + + return celix_steal_ptr(list); } celix_array_list_t* celix_arrayList_create() { @@@ -449,18 -124,38 +157,18 @@@ void* celix_arrayList_get(const celix_a return arrayList_getEntry(list, index).voidPtrVal; } -int celix_arrayList_getInt(const celix_array_list_t* list, int index) { return arrayList_getEntry(list, index).intVal; } - -long int celix_arrayList_getLong(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).longVal; -} - -unsigned int celix_arrayList_getUInt(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).uintVal; -} - -unsigned long int celix_arrayList_getULong(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).ulongVal; -} - -float celix_arrayList_getFloat(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).floatVal; -} - -double celix_arrayList_getDouble(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).doubleVal; -} - -bool celix_arrayList_getBool(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).boolVal; -} - -size_t celix_arrayList_getSize(const celix_array_list_t* list, int index) { - return arrayList_getEntry(list, index).sizeVal; -} +int celix_arrayList_getInt(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).intVal; } +long int celix_arrayList_getLong(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).longVal; } +unsigned int celix_arrayList_getUInt(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).uintVal; } +unsigned long int celix_arrayList_getULong(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).ulongVal; } +float celix_arrayList_getFloat(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).floatVal; } +double celix_arrayList_getDouble(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).doubleVal; } +bool celix_arrayList_getBool(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).boolVal; } +size_t celix_arrayList_getSize(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index).sizeVal; } +celix_array_list_entry_t celix_arrayList_getEntry(const celix_array_list_t *list, int index) { return arrayList_getEntry(list, index); } static celix_status_t celix_arrayList_addEntry(celix_array_list_t *list, celix_array_list_entry_t entry) { - celix_status_t status = arrayList_ensureCapacity(list, (int)list->size + 1); + celix_status_t status = celix_arrayList_ensureCapacity(list, (int)list->size + 1); if (status == CELIX_SUCCESS) { list->elementData[list->size++] = entry; }
