summaryrefslogtreecommitdiff
path: root/src/include/lib
diff options
context:
space:
mode:
authorTom Lane2012-10-18 23:04:20 +0000
committerTom Lane2012-10-18 23:04:20 +0000
commitdc5aeca168629183e64087b1147d3c2645e49ddc (patch)
tree0cb5c9d8fa34fe52b0dee3056e902a94d58a957b /src/include/lib
parent8f8d74647880ef53fc674498827b8b8e6c80d125 (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.h45
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);
}
/*