I\'m studying sys/queue.h from FreeBSD and I have one question:
In sys/queue.h, LIST_ENTRY is defined as follows:
#define LIST_ENTRY(typ
Let me try to explain.
Actually the **le_prev* affords ablity to list defined by sys/queue.h to insert_before that forward-list can not. Compared with insert_before, the insert_after can both be implemented well in forward-list or list. So list is more functional.
insert_before(entry* list_elem, entry* elem, type val)
{
elem->next = list_elem;
*(list->prev) = elem;
elem->prev = *(list->prev);
list_elem->prev = elem->next;
}
insert_after(entry* list_elem, entry* elem, type val)
{
if( ((elem)->next= (list_elem)->next) != NULL ) {
(elem_list)->next->prev = &(elem)->next;
}
(list_elem)->next = elem;
elem->prev = &(list_elem)->next;
}