diff options
author | eihrul <eihrul> | 2004-10-20 17:17:51 +0000 |
---|---|---|
committer | eihrul <eihrul> | 2004-10-20 17:17:51 +0000 |
commit | 3010e46b47c36a25f44c80b31daaf887ab1d8de5 (patch) | |
tree | f64bced38da8159f0eb70a09eb8863a417d59ef5 /list.c | |
download | enet-3010e46b47c36a25f44c80b31daaf887ab1d8de5.tar.gz enet-3010e46b47c36a25f44c80b31daaf887ab1d8de5.zip |
Initial revision
Diffstat (limited to 'list.c')
-rw-r--r-- | list.c | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -0,0 +1,57 @@ +/** + @file list.c + @brief ENet linked list functions +*/ +#define ENET_BUILDING_LIB 1 +#include "enet/list.h" + +/** + @defgroup list ENet linked list utility functions + @ingroup private + @{ +*/ +void +enet_list_clear (ENetList * list) +{ + list -> sentinel.next = & list -> sentinel; + list -> sentinel.previous = & list -> sentinel; +} + +ENetListIterator +enet_list_insert (ENetListIterator position, void * data) +{ + ENetListIterator result = (ENetListIterator) data; + + result -> previous = position -> previous; + result -> next = position; + + result -> previous -> next = result; + position -> previous = result; + + return result; +} + +void * +enet_list_remove (ENetListIterator position) +{ + position -> previous -> next = position -> next; + position -> next -> previous = position -> previous; + + return position; +} + +size_t +enet_list_size (ENetList * list) +{ + size_t size = 0; + ENetListIterator position; + + for (position = enet_list_begin (list); + position != enet_list_end (list); + position = enet_list_next (position)) + ++ size; + + return size; +} + +/** @} */ |