From d1576231356623353f2d5a90f41cdac7b40812ab Mon Sep 17 00:00:00 2001 From: klmp200 Date: Wed, 20 Jun 2018 17:46:14 +0200 Subject: [PATCH] =?UTF-8?q?Fonction=20contains,=20j'ai=20pas=20test=C3=A9?= =?UTF-8?q?=20lol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- List/List.c | 23 ++++++++++++++++++++++- List/List.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/List/List.c b/List/List.c index b4553da..2f22f1d 100644 --- a/List/List.c +++ b/List/List.c @@ -140,6 +140,26 @@ void insert_inside_List(THIS(List), void * data, size_t data_size, int index){ } +/** + * Check if data_to_find exist in list + * @param this THIS(List) + * @param data_to_find pointer to data you want to find inside + * @param compare a compare function, return true or false and takes two void * pointers + * @return true or false if the element is within the list or not + */ +int contains_List(THIS(List), void * data_to_find, int (*compare)(void *, void *)){ + Element * current = this->head; + + while (current != NULL){ + if (compare(data_to_find, current->data)){ + return 1; + } + current = current->next; + } + + return 0; +} + void remove_head_List(THIS(List)){ DELETE(this->head); } @@ -170,7 +190,8 @@ List *_init_List(){ clear_custom, clear, remove_head, - remove_tail + remove_tail, + contains ) return l; } diff --git a/List/List.h b/List/List.h index 6af0f0d..0c9511b 100644 --- a/List/List.h +++ b/List/List.h @@ -29,6 +29,7 @@ struct o_List { PUBLIC void* (*get_element_data)(_THIS(List), int index); PUBLIC int (*get_size)(_THIS(List)); + PUBLIC int (*contains)(_THIS(List), void * data_to_find, int (*compare)(void *, void *)); PUBLIC void (*set_custom_free)(_THIS(List), void (*custom_free)(void *)); PUBLIC void (*insert_inside)(_THIS(List), void * data, size_t data_size, int index);