reindent
[libfirm] / ir / adt / plist.c
index 9c4261d..4fbe0f6 100644 (file)
@@ -36,16 +36,17 @@ static plist_element_t *allocate_element(plist_t* list) {
        return new_element;
 }
 
-plist_tplist_new(void) {
-       plist_t* list = xmalloc(sizeof(*list));
+plist_t *plist_new(void) {
+       plist_t *list = xmalloc(sizeof(*list) + sizeof(*list->obst));
 
-       obstack_init(list->obst);
+       list->obst               = (struct obstack *)&list[1];
        list->foreign_obstack    = 0;
        list->first_element      = NULL;
        list->last_element       = NULL;
        list->first_free_element = NULL;
        list->element_count      = 0;
 
+       obstack_init(list->obst);
        return list;
 }
 
@@ -74,12 +75,12 @@ void plist_free(plist_t *list) {
        }
 }
 
-void plist_insert_back(plist_t* list, void* value) {
+void plist_insert_back(plist_t *list, void *value) {
        if (list->last_element != NULL) {
                plist_insert_after(list, list->last_element, value);
        }
        else {
-               plist_element_tnewElement = allocate_element(list);
+               plist_element_t *newElement = allocate_element(list);
 
                newElement->data    = value;
                newElement->prev    = NULL;
@@ -89,12 +90,12 @@ void plist_insert_back(plist_t* list, void* value) {
        }
 }
 
-void plist_insert_front(plist_t* list, void* value) {
+void plist_insert_front(plist_t *list, void *value) {
        if (list->first_element != NULL) {
                plist_insert_before(list, list->first_element, value);
        }
        else {
-               plist_element_tnewElement = allocate_element(list);
+               plist_element_t *newElement = allocate_element(list);
 
                newElement->data    = value;
                newElement->prev    = NULL;
@@ -104,9 +105,9 @@ void plist_insert_front(plist_t* list, void* value) {
        }
 }
 
-void plist_insert_before(plist_t* list, plist_element_t* element, void* value) {
-       plist_element_tprevElement;
-       plist_element_tnewElement = allocate_element(list);
+void plist_insert_before(plist_t *list, plist_element_t *element, void *value) {
+       plist_element_t *prevElement;
+       plist_element_t *newElement = allocate_element(list);
 
        newElement->data = value;
        newElement->next = element;
@@ -125,8 +126,8 @@ 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) {
-       plist_element_tnextElement;
-       plist_element_tnewElement = allocate_element(list);
+       plist_element_t *nextElement;
+       plist_element_t *newElement = allocate_element(list);
 
        newElement->data = value;
        newElement->prev = element;
@@ -144,6 +145,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;