From d7757e15942ccff3df4b9bfb3efc3e2656220fcd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Wed, 13 Sep 2006 14:17:53 +0000 Subject: [PATCH] added find_value and has_value functions [r8244] --- ir/adt/plist.c | 22 ++++++++++++++++++++++ ir/adt/plist.h | 16 ++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/ir/adt/plist.c b/ir/adt/plist.c index 7016f57d5..622e23b5b 100644 --- a/ir/adt/plist.c +++ b/ir/adt/plist.c @@ -147,6 +147,28 @@ void plist_insert_after(plist_t* list, plist_element_t* element, void* value) { ++list->element_count; } +int plist_has_value(plist_t *list, void *value) { + plist_element_t *iter; + + for (iter = plist_first(list); iter; iter = plist_element_get_next(iter)) { + if (plist_element_get_value(iter) == value) + return 1; + } + + return 0; +} + +plist_element_t *plist_find_value(plist_t *list, void *value) { + plist_element_t *iter; + + for (iter = plist_first(list); iter; iter = plist_element_get_next(iter)) { + if (plist_element_get_value(iter) == value) + return iter; + } + + return NULL; +} + void plist_erase(plist_t *list, plist_element_t *element) { plist_element_t *next_element = element->next; plist_element_t *prev_element = element->prev; diff --git a/ir/adt/plist.h b/ir/adt/plist.h index 0c9f0ab62..d5ec0823f 100644 --- a/ir/adt/plist.h +++ b/ir/adt/plist.h @@ -126,6 +126,22 @@ void plist_insert_before(plist_t *list, plist_element_t *element, void *value); */ void plist_insert_after(plist_t *list, plist_element_t *element, void *value); +/** + * Checks if list has an element with the given data pointer. + * @param list the list to check + * @param value the data pointer to look for + * @return 1 if element with data pointer found, 0 otherwise + */ +int plist_has_value(plist_t *list, void *value); + +/** + * Tries to find list element associated to the given data pointer. + * @param list the list to check + * @param value the data pointer to look for + * @return The first list element associated to data pointer if found, NULL otherwise + */ +plist_element_t *plist_find_value(plist_t *list, void *value); + /** * Erases the specified element from the pointer list. * @param list the pointer list from which the element should be erased. -- 2.20.1