123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /**
- @file list.c
- @brief ENet linked list functions
- */
- #define ENET_BUILDING_LIB 1
- #include "enet/enet.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;
- }
- ENetListIterator
- enet_list_move (ENetListIterator position, void * dataFirst, void * dataLast)
- {
- ENetListIterator first = (ENetListIterator) dataFirst,
- last = (ENetListIterator) dataLast;
- first -> previous -> next = last -> next;
- last -> next -> previous = first -> previous;
- first -> previous = position -> previous;
- last -> next = position;
- first -> previous -> next = first;
- position -> previous = last;
-
- return first;
- }
- 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;
- }
- /** @} */
|