This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/celix_err
in repository https://gitbox.apache.org/repos/asf/celix.git

commit 715bf58ea2856542ea033ede70d0eb903db0f8fa
Author: Pepijn Noltes <pepijnnol...@gmail.com>
AuthorDate: Mon May 1 19:16:40 2023 +0200

    Add return status to modify functions for array list
---
 libs/utils/include/celix_array_list.h      | 27 +++++++----
 libs/utils/include_deprecated/array_list.h |  2 +-
 libs/utils/src/array_list.c                | 72 +++++++++++++++++-------------
 3 files changed, 59 insertions(+), 42 deletions(-)

diff --git a/libs/utils/include/celix_array_list.h 
b/libs/utils/include/celix_array_list.h
index b0a37cbe..6686e7e3 100644
--- a/libs/utils/include/celix_array_list.h
+++ b/libs/utils/include/celix_array_list.h
@@ -244,81 +244,90 @@ size_t celix_arrayList_getSize(const celix_array_list_t 
*list, int index);
  *
  * @param map The array list.
  * @param value The pointer value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_add(celix_array_list_t *list, void* value);
+celix_status_t celix_arrayList_add(celix_array_list_t *list, void* value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The int value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addInt(celix_array_list_t *list, int value);
+celix_status_t celix_arrayList_addInt(celix_array_list_t *list, int value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The long value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addLong(celix_array_list_t *list, long value);
+celix_status_t celix_arrayList_addLong(celix_array_list_t *list, long value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The unsigned int value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addUInt(celix_array_list_t *list, unsigned int value);
+celix_status_t celix_arrayList_addUInt(celix_array_list_t *list, unsigned int 
value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The unsigned long value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addULong(celix_array_list_t *list, unsigned long value);
+celix_status_t celix_arrayList_addULong(celix_array_list_t *list, unsigned 
long value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The float value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addFloat(celix_array_list_t *list, float value);
+celix_status_t celix_arrayList_addFloat(celix_array_list_t *list, float value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The double value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addDouble(celix_array_list_t *list, double value);
+celix_status_t celix_arrayList_addDouble(celix_array_list_t *list, double 
value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The bool value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addBool(celix_array_list_t *list, bool value);
+celix_status_t celix_arrayList_addBool(celix_array_list_t *list, bool value);
 
 /**
  * @brief add pointer entry to the back of the array list.
  *
  * @param map The array list.
  * @param value The size_t value to add to the array list.
+ * @return CELIX_SUCCESS if the value is added, CELIX_ENOMEM if the array list 
is out of memory.
  */
 CELIX_UTILS_EXPORT
-void celix_arrayList_addSize(celix_array_list_t *list, size_t value);
+celix_status_t celix_arrayList_addSize(celix_array_list_t *list, size_t value);
 
 /**
  * @brief Returns the index of the provided entry, if found.
diff --git a/libs/utils/include_deprecated/array_list.h 
b/libs/utils/include_deprecated/array_list.h
index 1abaf16e..b42a4836 100644
--- a/libs/utils/include_deprecated/array_list.h
+++ b/libs/utils/include_deprecated/array_list.h
@@ -47,7 +47,7 @@ CELIX_UTILS_DEPRECATED_EXPORT void 
arrayList_destroy(celix_array_list_t *list);
 
 CELIX_UTILS_DEPRECATED_EXPORT void arrayList_trimToSize(celix_array_list_t 
*list);
 
-CELIX_UTILS_DEPRECATED_EXPORT void arrayList_ensureCapacity(celix_array_list_t 
*list, int capacity);
+CELIX_UTILS_DEPRECATED_EXPORT celix_status_t 
arrayList_ensureCapacity(celix_array_list_t *list, int capacity);
 
 CELIX_UTILS_DEPRECATED_EXPORT unsigned int arrayList_size(celix_array_list_t 
*list);
 
diff --git a/libs/utils/src/array_list.c b/libs/utils/src/array_list.c
index 27c32010..84d429f8 100644
--- a/libs/utils/src/array_list.c
+++ b/libs/utils/src/array_list.c
@@ -16,13 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/**
- * array_list.c
- *
- *  \date       Aug 4, 2010
- *  \author     <a href="mailto:d...@celix.apache.org";>Apache Celix Project 
Team</a>
- *  \copyright  Apache License, Version 2.0
- */
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -90,7 +83,8 @@ void arrayList_trimToSize(array_list_pt list) {
     }
 }
 
-void arrayList_ensureCapacity(array_list_pt list, int capacity) {
+celix_status_t arrayList_ensureCapacity(array_list_pt list, int capacity) {
+    celix_status_t status = CELIX_SUCCESS;
     celix_array_list_entry_t *newList;
     list->modCount++;
     size_t oldCapacity = list->capacity;
@@ -100,9 +94,13 @@ void arrayList_ensureCapacity(array_list_pt list, int 
capacity) {
             newCapacity = capacity;
         }
         newList = realloc(list->elementData, sizeof(celix_array_list_entry_t) 
* newCapacity);
-        list->capacity = newCapacity;
-        list->elementData = newList;
+        if (newList != NULL) {
+            list->capacity = newCapacity;
+            list->elementData = newList;
+        }
+        status = newList == NULL ? CELIX_ENOMEM : CELIX_SUCCESS;
     }
+    return status;
 }
 
 unsigned int arrayList_size(array_list_pt list) {
@@ -280,7 +278,7 @@ array_list_pt arrayList_clone(array_list_pt list) {
 //    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));
     }
@@ -420,65 +418,75 @@ double celix_arrayList_getDouble(const celix_array_list_t 
*list, int index) { re
 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; }
 
-static void arrayList_addEntry(celix_array_list_t *list, 
celix_array_list_entry_t entry) {
-    arrayList_ensureCapacity(list, (int)list->size + 1);
-    list->elementData[list->size++] = entry;
+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);
+    if (status == CELIX_SUCCESS) {
+        list->elementData[list->size++] = entry;
+    }
+    return status;
 }
 
-void celix_arrayList_add(celix_array_list_t *list, void * element) {
+celix_status_t celix_arrayList_add(celix_array_list_t *list, void * element) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.voidPtrVal = element;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
 
-void celix_arrayList_addInt(celix_array_list_t *list, int val) { 
+celix_status_t celix_arrayList_addInt(celix_array_list_t *list, int val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.intVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addLong(celix_array_list_t *list, long val) { 
+
+celix_status_t celix_arrayList_addLong(celix_array_list_t *list, long val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.longVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addUInt(celix_array_list_t *list, unsigned int val) { 
+
+celix_status_t celix_arrayList_addUInt(celix_array_list_t *list, unsigned int 
val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.uintVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addULong(celix_array_list_t *list, unsigned long val) { 
+
+celix_status_t celix_arrayList_addULong(celix_array_list_t *list, unsigned 
long val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.ulongVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addDouble(celix_array_list_t *list, double val) { 
+
+celix_status_t celix_arrayList_addDouble(celix_array_list_t *list, double val) 
{
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.doubleVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addFloat(celix_array_list_t *list, float val) { 
+
+celix_status_t celix_arrayList_addFloat(celix_array_list_t *list, float val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.floatVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addBool(celix_array_list_t *list, bool val) { 
+
+celix_status_t celix_arrayList_addBool(celix_array_list_t *list, bool val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.boolVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
-void celix_arrayList_addSize(celix_array_list_t *list, size_t val) { 
+
+celix_status_t celix_arrayList_addSize(celix_array_list_t *list, size_t val) {
     celix_array_list_entry_t entry;
     memset(&entry, 0, sizeof(entry));
     entry.sizeVal = val;
-    arrayList_addEntry(list, entry);
+    return celix_arrayList_addEntry(list, entry);
 }
 
 int celix_arrayList_indexOf(celix_array_list_t *list, celix_array_list_entry_t 
entry) {

Reply via email to