X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firlinkednodemap.c;h=ff8d398250309088872b78b12b2d1e1842b7e745;hb=2cd4bf52da22ca873e2991dc183f29517b0cb014;hp=1da579c9e01dd5d48be78aad12ae0e26d5aa2a96;hpb=41eca21e7add2e4f30f14c46600a23839852b3fc;p=libfirm diff --git a/ir/ir/irlinkednodemap.c b/ir/ir/irlinkednodemap.c index 1da579c9e..ff8d39825 100644 --- a/ir/ir/irlinkednodemap.c +++ b/ir/ir/irlinkednodemap.c @@ -21,7 +21,6 @@ * @file * @author Michael Beck * @brief A linked nodemap. - * @version $Id$ */ #include "config.h" @@ -39,21 +38,24 @@ static ir_lnk_nodemap_entry_t null_nodemap_entry; #define KeyType ir_node* #define ConstKeyType const ir_node* #define GetKey(value) (value).node -#define InitData(self,value,key) do { (value).node = (key); (value).list.next = NULL; (value).list.prev = NULL; } while(0) +#define InitData(self,value,key) do { (value).node = (key); (value).list.next = NULL; (value).list.prev = NULL; } while (0) #define Hash(self,key) ((unsigned)((key)->node_nr)) #define KeysEqual(self,key1,key2) (key1) == (key2) #define SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof((ptr)[0])) #define EntrySetEmpty(value) (value).node = NULL -#define EntrySetDeleted(value) do { (value).node = (ir_node*) -1; list_del(&(value).list); } while(0) +#define EntrySetDeleted(value) do { (value).node = (ir_node*) -1; list_del(&(value).list); } while (0) #define EntryIsEmpty(value) ((value).node == NULL) #define EntryIsDeleted(value) ((value).node == (ir_node*)-1) #define hashset_init ir_lnk_nodemap_init #define hashset_init_size ir_lnk_nodemap_init_size #define hashset_destroy ir_lnk_nodemap_destroy -#define hashset_insert _ir_lnk_nodemap_insert +ir_lnk_nodemap_entry_t *ir_lnk_nodemap_insert_(ir_lnk_nodemap_t *self, ir_node *node); +#define hashset_insert ir_lnk_nodemap_insert_ #define hashset_remove ir_lnk_nodemap_remove -#define hashset_find _ir_lnk_nodemap_find +ir_lnk_nodemap_entry_t *ir_lnk_nodemap_find_(const ir_lnk_nodemap_t *self, + const ir_node *node); +#define hashset_find ir_lnk_nodemap_find_ #define hashset_size ir_lnk_nodemap_size #define ADDITIONAL_INIT INIT_LIST_HEAD(&self->elem_list); INIT_LIST_HEAD(&self->all_iters); @@ -68,8 +70,7 @@ static ir_lnk_nodemap_entry_t null_nodemap_entry; * Resize the hashset * @internal */ -static -void resize(HashSet *self, size_t new_size) +static void resize(HashSet *self, size_t new_size) { HashSetEntry *old_entries = self->entries; HashSetEntry *new_entries; @@ -110,7 +111,7 @@ void resize(HashSet *self, size_t new_size) int ir_lnk_nodemap_put(ir_lnk_nodemap_t *nodemap, ir_node *node, void *data) { - ir_lnk_nodemap_entry_t *entry = _ir_lnk_nodemap_insert(nodemap, node); + ir_lnk_nodemap_entry_t *entry = ir_lnk_nodemap_insert_(nodemap, node); entry->data = data; if (entry->list.next == NULL) { @@ -123,33 +124,19 @@ int ir_lnk_nodemap_put(ir_lnk_nodemap_t *nodemap, ir_node *node, void *data) void *ir_lnk_nodemap_get(const ir_lnk_nodemap_t *nodemap, const ir_node *node) { - ir_lnk_nodemap_entry_t *entry = _ir_lnk_nodemap_find(nodemap, node); + ir_lnk_nodemap_entry_t *entry = ir_lnk_nodemap_find_(nodemap, node); return entry->data; } -/** - * Initializes a nodemap iterator. Sets the iterator before the first element in - * the linked nodemap. - * - * @param iterator Pointer to already allocated iterator memory - * @param nodemap Pointer to the nodemap - */ void ir_lnk_nodemap_iterator_init(ir_lnk_nodemap_iterator_t *iterator, - const ir_lnk_nodemap_t *nodemap) { + const ir_lnk_nodemap_t *nodemap) +{ iterator->iter = nodemap->elem_list.next; iterator->nodemap = nodemap; } -/** - * Advances the iterator and returns the current element or NULL if all elements - * in the linked nodemap have been processed. - * @attention It is not allowed to use ir_lnk_nodemap_insert or ir_lnk_nodemap_remove while - * iterating over a nodemap. - * - * @param iterator Pointer to the nodemap iterator. - * @returns Next element in the nodemap or NULL - */ -ir_node *ir_lnk_nodemap_iterator_next(ir_lnk_nodemap_iterator_t *iterator) { +ir_node *ir_lnk_nodemap_iterator_next(ir_lnk_nodemap_iterator_t *iterator) +{ ir_node *res; if (iterator->iter == &iterator->nodemap->elem_list) return NULL; @@ -160,14 +147,9 @@ ir_node *ir_lnk_nodemap_iterator_next(ir_lnk_nodemap_iterator_t *iterator) { return res; } -/** - * Removes the element the iterator currently points to. - * - * @param nodemap Pointer to the linked nodemap - * @param iterator Pointer to the nodemap iterator. - */ void ir_lnk_nodemap_remove_iterator(ir_lnk_nodemap_t *nodemap, - ir_lnk_nodemap_iterator_t *iterator) { + ir_lnk_nodemap_iterator_t *iterator) +{ ir_lnk_nodemap_entry_t *rem = list_entry(iterator->iter->prev, ir_lnk_nodemap_entry_t, list); ir_lnk_nodemap_remove(nodemap, rem->node);