diff options
author | Tom Lane | 2012-10-18 23:04:20 +0000 |
---|---|---|
committer | Tom Lane | 2012-10-18 23:04:20 +0000 |
commit | dc5aeca168629183e64087b1147d3c2645e49ddc (patch) | |
tree | 0cb5c9d8fa34fe52b0dee3056e902a94d58a957b /src/include/lib | |
parent | 8f8d74647880ef53fc674498827b8b8e6c80d125 (diff) |
Remove unnecessary "head" arguments from some dlist/slist functions.
dlist_delete, dlist_insert_after, dlist_insert_before, slist_insert_after
do not need access to the list header, and indeed insisting on that negates
one of the main advantages of a doubly-linked list.
In consequence, revert addition of "cache_bucket" field to CatCTup.
Diffstat (limited to 'src/include/lib')
-rw-r--r-- | src/include/lib/ilist.h | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/src/include/lib/ilist.h b/src/include/lib/ilist.h index 22cd270659a..bc684b84af6 100644 --- a/src/include/lib/ilist.h +++ b/src/include/lib/ilist.h @@ -89,7 +89,7 @@ * continue; // don't touch this one * * // unlink the current table from the linked list - * dlist_delete(&db->tables, miter.cur); + * dlist_delete(miter.cur); * // as these lists never manage memory, we can still access the table * // after it's been unlinked * drop_table(db, tbl); @@ -271,11 +271,9 @@ extern void dlist_init(dlist_head *head); extern bool dlist_is_empty(dlist_head *head); extern void dlist_push_head(dlist_head *head, dlist_node *node); extern void dlist_push_tail(dlist_head *head, dlist_node *node); -extern void dlist_insert_after(dlist_head *head, - dlist_node *after, dlist_node *node); -extern void dlist_insert_before(dlist_head *head, - dlist_node *before, dlist_node *node); -extern void dlist_delete(dlist_head *head, dlist_node *node); +extern void dlist_insert_after(dlist_node *after, dlist_node *node); +extern void dlist_insert_before(dlist_node *before, dlist_node *node); +extern void dlist_delete(dlist_node *node); extern dlist_node *dlist_pop_head_node(dlist_head *head); extern void dlist_move_head(dlist_head *head, dlist_node *node); extern bool dlist_has_next(dlist_head *head, dlist_node *node); @@ -352,50 +350,34 @@ dlist_push_tail(dlist_head *head, dlist_node *node) * Insert a node after another *in the same list* */ STATIC_IF_INLINE void -dlist_insert_after(dlist_head *head, dlist_node *after, dlist_node *node) +dlist_insert_after(dlist_node *after, dlist_node *node) { - dlist_check(head); - /* XXX: assert 'after' is in 'head'? */ - node->prev = after; node->next = after->next; after->next = node; node->next->prev = node; - - dlist_check(head); } /* * Insert a node before another *in the same list* */ STATIC_IF_INLINE void -dlist_insert_before(dlist_head *head, dlist_node *before, dlist_node *node) +dlist_insert_before(dlist_node *before, dlist_node *node) { - dlist_check(head); - /* XXX: assert 'before' is in 'head'? */ - node->prev = before->prev; node->next = before; before->prev = node; node->prev->next = node; - - dlist_check(head); } /* - * Delete 'node' from list. - * - * It is not allowed to delete a 'node' which is is not in the list 'head' + * Delete 'node' from its list (it must be in one). */ STATIC_IF_INLINE void -dlist_delete(dlist_head *head, dlist_node *node) +dlist_delete(dlist_node *node) { - dlist_check(head); - node->prev->next = node->next; node->next->prev = node->prev; - - dlist_check(head); } /* @@ -408,7 +390,7 @@ dlist_pop_head_node(dlist_head *head) Assert(!dlist_is_empty(head)); node = head->head.next; - dlist_delete(head, node); + dlist_delete(node); return node; } @@ -425,7 +407,7 @@ dlist_move_head(dlist_head *head, dlist_node *node) if (head->head.next == node) return; - dlist_delete(head, node); + dlist_delete(node); dlist_push_head(head, node); dlist_check(head); @@ -591,8 +573,7 @@ dlist_tail_node(dlist_head *head) extern void slist_init(slist_head *head); extern bool slist_is_empty(slist_head *head); extern void slist_push_head(slist_head *head, slist_node *node); -extern void slist_insert_after(slist_head *head, - slist_node *after, slist_node *node); +extern void slist_insert_after(slist_node *after, slist_node *node); extern slist_node *slist_pop_head_node(slist_head *head); extern bool slist_has_next(slist_head *head, slist_node *node); extern slist_node *slist_next_node(slist_head *head, slist_node *node); @@ -640,12 +621,10 @@ slist_push_head(slist_head *head, slist_node *node) * Insert a node after another *in the same list* */ STATIC_IF_INLINE void -slist_insert_after(slist_head *head, slist_node *after, slist_node *node) +slist_insert_after(slist_node *after, slist_node *node) { node->next = after->next; after->next = node; - - slist_check(head); } /* |