You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2018/07/19 20:59:59 UTC

celix git commit: Adds celix array list remove functions for the supported types and the unit test for those functions

Repository: celix
Updated Branches:
  refs/heads/develop 66f89bb7c -> bd247745c


Adds celix array list remove functions for the supported types and the unit test for those functions


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/bd247745
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/bd247745
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/bd247745

Branch: refs/heads/develop
Commit: bd247745cc8dec1d71573a1e8d408ec0a348d83e
Parents: 66f89bb
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Thu Jul 19 22:59:30 2018 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Thu Jul 19 22:59:30 2018 +0200

----------------------------------------------------------------------
 libs/utils/include/celix_array_list.h       | 12 +++++-
 libs/utils/private/test/array_list_test.cpp | 31 ++++++++++++++++
 libs/utils/src/array_list.c                 | 47 +++++++++++++++++++++++-
 3 files changed, 87 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/bd247745/libs/utils/include/celix_array_list.h
----------------------------------------------------------------------
diff --git a/libs/utils/include/celix_array_list.h b/libs/utils/include/celix_array_list.h
index 681929e..26c32ef 100644
--- a/libs/utils/include/celix_array_list.h
+++ b/libs/utils/include/celix_array_list.h
@@ -66,7 +66,7 @@ void celix_arrayList_addBool(celix_array_list_t *list, bool val);
 void celix_arrayList_addSize(celix_array_list_t *list, size_t val);
 
 int celix_arrayList_indexOf(celix_array_list_t *list, celix_array_list_entry_t entry);
-void celix_arrayList_remove(celix_array_list_t *list, int index);
+void celix_arrayList_removeAt(celix_array_list_t *list, int index);
 
 /**
  * Remove entry from array list. To use this first memset the entry to null to ensure it completely initialized or
@@ -74,6 +74,16 @@ void celix_arrayList_remove(celix_array_list_t *list, int index);
  */
 void celix_arrayList_removeEntry(celix_array_list_t *list, celix_array_list_entry_t entry);
 
+void celix_arrayList_remove(celix_array_list_t *list, void *ptr);
+void celix_arrayList_removeInt(celix_array_list_t *list, int val);
+void celix_arrayList_removeLong(celix_array_list_t *list, long val);
+void celix_arrayList_removeUInt(celix_array_list_t *list, unsigned int val);
+void celix_arrayList_removeULong(celix_array_list_t *list, unsigned long val);
+void celix_arrayList_removeFloat(celix_array_list_t *list, float val);
+void celix_arrayList_removeDouble(celix_array_list_t *list, double val);
+void celix_arrayList_removeBool(celix_array_list_t *list, bool val);
+void celix_arrayList_removeSize(celix_array_list_t *list, size_t val);
+
 #ifdef __cplusplus
 }
 #endif

http://git-wip-us.apache.org/repos/asf/celix/blob/bd247745/libs/utils/private/test/array_list_test.cpp
----------------------------------------------------------------------
diff --git a/libs/utils/private/test/array_list_test.cpp b/libs/utils/private/test/array_list_test.cpp
index 8a2a04e..df8c135 100644
--- a/libs/utils/private/test/array_list_test.cpp
+++ b/libs/utils/private/test/array_list_test.cpp
@@ -33,6 +33,7 @@
 
 extern "C"
 {
+#include "celix_array_list.h"
 #include "array_list.h"
 #include "array_list_private.h"
 }
@@ -577,3 +578,33 @@ TEST(array_list_iterator, remove){
 	free(value3);
 	arrayListIterator_destroy(it_list);
 }
+
+
+template<typename I>
+void testCelixArrayForType(void(*add)(celix_array_list_t *, I val), void(*rem)(celix_array_list_t *list, I val), I val1, I val2, I val3) {
+    celix_array_list_t *array = celix_arrayList_create();
+    add(array, val1);
+    add(array, val2);
+    add(array, val3);
+
+    CHECK_EQUAL(3, celix_arrayList_size(array));
+
+    rem(array, val2);
+    CHECK_EQUAL(2, celix_arrayList_size(array));
+    rem(array, val3);
+    CHECK_EQUAL(1, celix_arrayList_size(array));
+
+    celix_arrayList_destroy(array);
+}
+
+TEST(array_list_iterator, addAndRemovesTypes) {
+    testCelixArrayForType(celix_arrayList_add, celix_arrayList_remove, (void*)0x41, (void*)0x42, (void*)0x43);
+    testCelixArrayForType(celix_arrayList_addInt, celix_arrayList_removeInt, 41, -42, 43);
+    testCelixArrayForType(celix_arrayList_addLong, celix_arrayList_removeLong, 41L, -42L, 43L);
+    testCelixArrayForType(celix_arrayList_addUInt, celix_arrayList_removeUInt, 41U, 42U, 43U);
+    testCelixArrayForType(celix_arrayList_addULong, celix_arrayList_removeULong, 41UL, 42UL, 43UL);
+    testCelixArrayForType(celix_arrayList_addFloat, celix_arrayList_removeFloat, 41.2f, 42.2f, 43.2f);
+    testCelixArrayForType(celix_arrayList_addDouble, celix_arrayList_removeDouble, 41.2, 42.2, 43.2);
+    //testCelixArrayForType(celix_arrayList_addBool, celix_arrayList_removeBool, true, false, true);
+    testCelixArrayForType(celix_arrayList_addSize, celix_arrayList_removeSize, (size_t)41, (size_t)42, (size_t)43);
+}

http://git-wip-us.apache.org/repos/asf/celix/blob/bd247745/libs/utils/src/array_list.c
----------------------------------------------------------------------
diff --git a/libs/utils/src/array_list.c b/libs/utils/src/array_list.c
index e66a3c8..4ad277c 100644
--- a/libs/utils/src/array_list.c
+++ b/libs/utils/src/array_list.c
@@ -442,7 +442,7 @@ int celix_arrayList_indexOf(celix_array_list_t *list, celix_array_list_entry_t e
 	}
 	return index;
 }
-void celix_arrayList_remove(celix_array_list_t *list, int index) {
+void celix_arrayList_removeAt(celix_array_list_t *list, int index) {
 	if (index >= 0 && index < list->size) {
 		list->modCount++;
 		size_t numMoved = list->size - index - 1;
@@ -453,8 +453,51 @@ void celix_arrayList_remove(celix_array_list_t *list, int index) {
 
 void celix_arrayList_removeEntry(celix_array_list_t *list, celix_array_list_entry_t entry) {
 	int index = celix_arrayList_indexOf(list, entry);
-	celix_arrayList_remove(list, index);
+	celix_arrayList_removeAt(list, index);
 }
 
 
+void celix_arrayList_remove(celix_array_list_t *list, void *ptr) {
+	celix_array_list_entry_t entry = {.voidPtrVal = ptr};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeInt(celix_array_list_t *list, int val) {
+	celix_array_list_entry_t entry = {.intVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeLong(celix_array_list_t *list, long val) {
+	celix_array_list_entry_t entry = {.longVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeUInt(celix_array_list_t *list, unsigned int val) {
+	celix_array_list_entry_t entry = {.uintVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeULong(celix_array_list_t *list, unsigned long val) {
+	celix_array_list_entry_t entry = {.ulongVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeFloat(celix_array_list_t *list, float val) {
+	celix_array_list_entry_t entry = {.floatVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeDouble(celix_array_list_t *list, double val) {
+	celix_array_list_entry_t entry = {.doubleVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
+
+void celix_arrayList_removeBool(celix_array_list_t *list, bool val) {
+	celix_array_list_entry_t entry = {.boolVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}
 
+void celix_arrayList_removeSize(celix_array_list_t *list, size_t val) {
+	celix_array_list_entry_t entry = {.sizeVal = val};
+	celix_arrayList_removeEntry(list, entry);
+}