/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
/**
* @file
- * @author Kimon Hoffmann
- * @date 14.07.2005
- * @cvs-id $Id$
- * @summary Simple, non circular, double linked pointer list.
+ * @author Kimon Hoffmann
+ * @date 14.07.2005
+ * @version $Id$
+ * @brief Simple, non circular, double linked pointer list.
* Created because the properties of the standard circular list were
* not very well suited for the interference graph implementation.
* This list uses an obstack and a free-list to efficiently manage its
* @note Until now the code is entirely untested so it probably contains
* plenty of errors. (Matze: Is this still true, the code seems to be
* used at some places....)
+ * @deprecated
*/
#ifndef FIRM_ADT_PLIST_H
#define FIRM_ADT_PLIST_H
#include <stddef.h>
#include "obst.h"
-typedef struct _plist_element plist_element_t;
-typedef struct _plist plist_t;
+#include "../begin.h"
+
+typedef struct plist_element plist_element_t;
+typedef struct plist plist_t;
/**
* The plist data type.
*/
-struct _plist {
+struct plist {
/**
* The obstack used for all allocations.
*/
/**
* An element in the pointer list.
*/
-struct _plist_element {
+struct plist_element {
plist_element_t *next;
plist_element_t *prev;
void *data;
* Creates a new pointer list and initializes it.
* @return The newly created pointer list.
*/
-plist_t *plist_new(void);
+FIRM_API plist_t *plist_new(void);
/**
* Creates a new pointer list and initializes it.
* @param obst The obstack to use
* @return The newly created pointer list.
*/
-plist_t *plist_obstack_new(struct obstack *obst);
+FIRM_API plist_t *plist_obstack_new(struct obstack *obst);
/**
* Frees the passed pointer list.
* After a call to this function all references to the list and any of
* its elements are invalid.
*/
-void plist_free(plist_t *list);
+FIRM_API void plist_free(plist_t *list);
/**
* Returns the number of elements in a pointer list.
* @param list the pointer list to append the new element to.
* @param value the element value to append.
*/
-void plist_insert_back(plist_t *list, void *value);
+FIRM_API void plist_insert_back(plist_t *list, void *value);
/**
* Inserts an element at the front of a pointer list.
* @param list the pointer list to prepend the new element to.
* @param value the element value to prepend.
*/
-void plist_insert_front(plist_t *list, void *value);
+FIRM_API void plist_insert_front(plist_t *list, void *value);
/**
* Inserts an element into a pointer list before the specified element,
* be inserted. This element must be a part of @p list.
* @param value the element value to insert.
*/
-void plist_insert_before(plist_t *list, plist_element_t *element, void *value);
+FIRM_API void plist_insert_before(plist_t *list, plist_element_t *element, void *value);
/**
* Inserts an element into a pointer list after the specified element,
* be inserted. This element must be a part of @p list.
* @param value the element value to insert.
*/
-void plist_insert_after(plist_t *list, plist_element_t *element, void *value);
+FIRM_API 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 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);
+FIRM_API int plist_has_value(plist_t *list, void *value);
/**
* Tries to find list element associated to the given data pointer.
* @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);
+FIRM_API plist_element_t *plist_find_value(plist_t *list, void *value);
/**
* Erases the specified element from the pointer list.
* @param element the list element to erase. This element must be a part
* of @p list.
*/
-void plist_erase(plist_t *list, plist_element_t *element);
+FIRM_API void plist_erase(plist_t *list, plist_element_t *element);
/**
* Erases all elements from the specified pointer list.
* @param list the pointer list that should be cleared.
*/
-void plist_clear(plist_t *list);
+FIRM_API void plist_clear(plist_t *list);
/**
* Returns the first element of a pointer list.
* @param list the pointer list to iterate
* @return a pointer to the element or NULL if the list is empty
*/
- #define plist_first(list) \
+#define plist_first(list) \
((list)->first_element)
/**
* @param list the pointer list to iterate
* @return a pointer to the element or NULL if the list is empty
*/
- #define plist_last(list) \
+#define plist_last(list) \
((list)->last_element)
/**
#define foreach_plist(list, el) \
for (el = plist_first(list); el; el = plist_element_get_next(el))
-#endif /*_PLIST_H_*/
+#include "../end.h"
+
+#endif