The list head is of "struct wl_list" type, and must be initialized
using wl_list_init(). All entries in the list must be of the same
type. The item type must have a "struct wl_list" member. This
member will be initialized by wl_list_insert(). There is no need to
call wl_list_init() on the individual item. To query if the list is
empty in O(1), use wl_list_empty().
Let's call the list reference "struct wl_list foo_list", the item type as
"item_t", and the item member as "struct wl_list link".
The following code will initialize a list:
\code
struct wl_list foo_list;
wl_list_init(&foo_list);
wl_list_insert(&foo_list, &item1.link); // Pushes item1 at the head
wl_list_insert(&foo_list, &item2.link); // Pushes item2 at the head
wl_list_insert(&item2.link, &item3.link); // Pushes item3 after item2
\endcode
The list now looks like [item2, item3, item1]
Iterate the list in ascending order:
\code
item_t *item;
wl_list_for_each(item, foo_list, link) {
Do_something_with_item(item);
}
\endcode
\class wl_list
\brief doubly-linked list
The list head is of "struct wl_list" type, and must be initialized using wl_list_init(). All entries in the list must be of the same type. The item type must have a "struct wl_list" member. This member will be initialized by wl_list_insert(). There is no need to call wl_list_init() on the individual item. To query if the list is empty in O(1), use wl_list_empty().
Let's call the list reference "struct wl_list foo_list", the item type as "item_t", and the item member as "struct wl_list link".
The following code will initialize a list: \code struct wl_list foo_list;
struct item_t { int foo; struct wl_list link; }; struct item_t item1, item2, item3;
wl_list_init(&foo_list); wl_list_insert(&foo_list, &item1.link); // Pushes item1 at the head wl_list_insert(&foo_list, &item2.link); // Pushes item2 at the head wl_list_insert(&item2.link, &item3.link); // Pushes item3 after item2 \endcode
The list now looks like [item2, item3, item1]
Iterate the list in ascending order: \code item_t *item; wl_list_for_each(item, foo_list, link) { Do_something_with_item(item); } \endcode