1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

ccan/list: new list_{del,node}_init functions

* ccan/list/list.h (list_del_init, list_node_init): new functions
  for multiple list_del() calls
  [ccan ec8654d94d3c5c47aa5f82698f7e8048c79765b1] (Rusty Russell)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2014-09-13 23:49:15 +00:00
parent f3c9ffe094
commit c975dc96b7
2 changed files with 40 additions and 1 deletions

View file

@ -1,3 +1,9 @@
Sun Sep 14 08:41:44 2014 Eric Wong <e@80x24.org>
* ccan/list/list.h (list_del_init, list_node_init): new functions
for multiple list_del() calls
[ccan ec8654d94d3c5c47aa5f82698f7e8048c79765b1] (Rusty Russell)
Sat Sep 13 22:19:26 2014 Bernard Potocki <bernard.potocki@imanel.org>
* hash.c (rb_hash_aset): fix misleading example which may suggest

View file

@ -91,6 +91,18 @@ static inline void list_head_init(struct list_head *h)
h->n.next = h->n.prev = &h->n;
}
/**
* list_node_init - initialize a list_node
* @n: the list_node to link to itself.
*
* You don't need to use this normally! But it lets you list_del(@n)
* safely.
*/
static inline void list_node_init(struct list_node *n)
{
n->next = n->prev = n;
}
/**
* list_add - add an entry at the start of a linked list.
* @h: the list_head to add the node to
@ -183,7 +195,7 @@ static inline int list_empty_nodebug(const struct list_head *h)
* another list, but not deleted again.
*
* See also:
* list_del_from()
* list_del_from(), list_del_init()
*
* Example:
* list_del(&child->list);
@ -201,6 +213,27 @@ static inline void list_del_(struct list_node *n, const char* abortstr)
#endif
}
/**
* list_del_init - delete a node, and reset it so it can be deleted again.
* @n: the list_node to be deleted.
*
* list_del(@n) or list_del_init() again after this will be safe,
* which can be useful in some cases.
*
* See also:
* list_del_from(), list_del()
*
* Example:
* list_del_init(&child->list);
* parent->num_children--;
*/
#define list_del_init(n) list_del_init_(n, LIST_LOC)
static inline void list_del_init_(struct list_node *n, const char *abortstr)
{
list_del_(n, abortstr);
list_node_init(n);
}
/**
* list_del_from - delete an entry from a known linked list.
* @h: the list_head the node is in.