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:
parent
f3c9ffe094
commit
c975dc96b7
2 changed files with 40 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue