added find_value and has_value functions
authorChristian Würdig <chriswue@ipd.info.uni-karlsruhe.de>
Wed, 13 Sep 2006 14:17:53 +0000 (14:17 +0000)
committerChristian Würdig <chriswue@ipd.info.uni-karlsruhe.de>
Wed, 13 Sep 2006 14:17:53 +0000 (14:17 +0000)
[r8244]

ir/adt/plist.c
ir/adt/plist.h

index 7016f57..622e23b 100644 (file)
@@ -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;
index 0c9f0ab..d5ec082 100644 (file)
@@ -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.