* @file
* @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
* elements.
- * @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
* The plist data type.
*/
struct plist {
- /**
- * The obstack used for all allocations.
- */
+ /** The obstack used for all allocations. */
struct obstack *obst;
- /* Set to 1 if plist uses a foreign obstack */
+ /** Set to 1 if plist uses a foreign obstack */
unsigned foreign_obstack : 1;
- /**
- * First element in the list.
- */
+ /** First element in the list. */
plist_element_t *first_element;
- /**
- * Last element in the list.
- */
+ /** Last element in the list. */
plist_element_t *last_element;
- /**
- * Current number of elements in the list.
- */
+ /** Current number of elements in the list. */
int element_count;
/**
* An element in the pointer list.
*/
struct plist_element {
- plist_element_t *next;
- plist_element_t *prev;
- void *data;
+ plist_element_t *next; /**< next element in double linked list */
+ plist_element_t *prev; /**< previous element in double linked list */
+ void *data; /**< element data */
};
/**
* @return The number of elements in a pointer list.
*/
#define plist_count(list) \
- ((list)->element_count)
+ ((list)->element_count)
/**
* Inserts an element at the back of a pointer list.
* which must be non null.
* @param list the pointer list to insert the new element into.
* @param element the list element before which the new element should
- * be inserted. This element must be a part of @p list.
+ * be inserted. This element must be a part of @p list.
* @param value the element value to insert.
*/
FIRM_API void plist_insert_before(plist_t *list, plist_element_t *element, void *value);
* which must be non null.
* @param list the pointer list to insert the new element into.
* @param element the list element after which the new element should
- * be inserted. This element must be a part of @p list.
+ * be inserted. This element must be a part of @p list.
* @param value the element value to insert.
*/
FIRM_API void plist_insert_after(plist_t *list, plist_element_t *element, void *value);
* Erases the specified element from the pointer list.
* @param list the pointer list from which the element should be erased.
* @param element the list element to erase. This element must be a part
- * of @p list.
+ * of @p list.
*/
FIRM_API void plist_erase(plist_t *list, plist_element_t *element);
* @return a pointer to the element or NULL if the list is empty
*/
#define plist_first(list) \
- ((list)->first_element)
+ ((list)->first_element)
/**
* Returns the last element of a pointer list.
* @return a pointer to the element or NULL if the list is empty
*/
#define plist_last(list) \
- ((list)->last_element)
+ ((list)->last_element)
/**
* Checks whether a pointer list element has a successor or not.
* @param element the list element that should be queried for existence
- * of a successor.
+ * of a successor.
* @return TRUE if @p element has a successor, otherwise FALSE.
*/
#define plist_element_has_next(element) \
/**
* Checks whether a pointer list element has a predecessor or not.
* @param element the list element that should be queried for existence
- * of a predecessor.
+ * of a predecessor.
* @return TRUE if @p element has a successor, otherwise FALSE.
*/
#define plist_element_has_prev(element) \
* Gets the successor of the passed list element.
* @param element the list element to return the successor of.
* @return The successor of @p element or NULL if @p element is the last
- * element in the sequence.
+ * element in the sequence.
*/
#define plist_element_get_next(element) \
((element)->next)
* Gets the predecessor of the passed list element.
* @param element the list element to return the predecessor of.
* @return The predecessor of @p element or NULL if @p element is the last
- * element in the sequence.
+ * element in the sequence.
*/
#define plist_element_get_prev(element) \
((element)->prev)