* @file
* @author Michael Beck
* @brief A linked nodeset.
- * @version $Id$
*/
#include "config.h"
#define hashset_init ir_lnk_nodeset_init
#define hashset_init_size ir_lnk_nodeset_init_size
#define hashset_destroy ir_lnk_nodeset_destroy
-#define hashset_insert _ir_lnk_nodeset_insert
+ir_lnk_nodeset_entry_t *ir_lnk_nodeset_insert_(ir_lnk_nodeset_t *nodeset, ir_node *node);
+#define hashset_insert ir_lnk_nodeset_insert_
#define hashset_remove ir_lnk_nodeset_remove
-#define hashset_find _ir_lnk_nodeset_find
+ir_lnk_nodeset_entry_t *ir_lnk_nodeset_find_(const ir_lnk_nodeset_t *nodeset, const ir_node *node);
+#define hashset_find ir_lnk_nodeset_find_
#define hashset_size ir_lnk_nodeset_size
#define ADDITIONAL_INIT INIT_LIST_HEAD(&self->elem_list); INIT_LIST_HEAD(&self->all_iters);
#define ADDITIONAL_TERM INIT_LIST_HEAD(&self->elem_list); INIT_LIST_HEAD(&self->all_iters);
-#define NO_ITERATOR
#define HAVE_OWN_RESIZE
-#include "hashset.c"
+#include "hashset.c.inl"
/**
* Resize the hashset
Free(old_entries);
}
-
-/* Inserts a node into a linked nodeset. */
int ir_lnk_nodeset_insert(ir_lnk_nodeset_t *nodeset, ir_node *node)
{
- ir_lnk_nodeset_entry_t *entry = _ir_lnk_nodeset_insert(nodeset, node);
+ ir_lnk_nodeset_entry_t *entry = ir_lnk_nodeset_insert_(nodeset, node);
if (entry->list.next == NULL) {
/* we have added a new element */
int ir_lnk_nodeset_contains(const ir_lnk_nodeset_t *nodeset, const ir_node *node)
{
- return _ir_lnk_nodeset_find(nodeset, node) != NULL;
+ return ir_lnk_nodeset_find_(nodeset, node) != NULL;
}
-/**
- * Initializes a nodeset iterator. Sets the iterator before the first element in
- * the linked nodeset.
- *
- * @param iterator Pointer to already allocated iterator memory
- * @param nodeset Pointer to the nodeset
- */
void ir_lnk_nodeset_iterator_init(ir_lnk_nodeset_iterator_t *iterator,
- const ir_lnk_nodeset_t *nodeset) {
+ const ir_lnk_nodeset_t *nodeset)
+{
iterator->iter = nodeset->elem_list.next;
iterator->nodeset = nodeset;
}
-/**
- * Advances the iterator and returns the current element or NULL if all elements
- * in the linked nodeset have been processed.
- * @attention It is not allowed to use ir_lnk_nodeset_insert or ir_lnk_nodeset_remove while
- * iterating over a nodeset.
- *
- * @param iterator Pointer to the nodeset iterator.
- * @returns Next element in the nodeset or NULL
- */
ir_node *ir_lnk_nodeset_iterator_next(ir_lnk_nodeset_iterator_t *iterator)
{
ir_node *res;
return res;
}
-/**
- * Removes the element the iterator currently points to.
- *
- * @param nodeset Pointer to the linked nodeset
- * @param iterator Pointer to the nodeset iterator.
- */
void ir_lnk_nodeset_remove_iterator(ir_lnk_nodeset_t *nodeset,
- ir_lnk_nodeset_iterator_t *iterator) {
+ ir_lnk_nodeset_iterator_t *iterator)
+{
ir_lnk_nodeset_entry_t *rem = list_entry(iterator->iter->prev, ir_lnk_nodeset_entry_t, list);
ir_lnk_nodeset_remove(nodeset, rem->node);