home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2007 September / maximum-cd-2007-09.iso / Assets / data / AssaultCube_v0.93.exe / source / enet / list.c < prev    next >
Encoding:
C/C++ Source or Header  |  2006-11-06  |  1.1 KB  |  58 lines

  1. /** 
  2.  @file list.c
  3.  @brief ENet linked list functions
  4. */
  5. #define ENET_BUILDING_LIB 1
  6. #include "enet/list.h"
  7.  
  8. /** 
  9.     @defgroup list ENet linked list utility functions
  10.     @ingroup private
  11.     @{
  12. */
  13. void
  14. enet_list_clear (ENetList * list)
  15. {
  16.    list -> sentinel.next = & list -> sentinel;
  17.    list -> sentinel.previous = & list -> sentinel;
  18. }
  19.  
  20. ENetListIterator
  21. enet_list_insert (ENetListIterator position, void * data)
  22. {
  23.    ENetListIterator result = (ENetListIterator) data;
  24.  
  25.    result -> previous = position -> previous;
  26.    result -> next = position;
  27.  
  28.    result -> previous -> next = result;
  29.    position -> previous = result;
  30.  
  31.    return result;
  32. }
  33.  
  34. void *
  35. enet_list_remove (ENetListIterator position)
  36. {
  37.    position -> previous -> next = position -> next;
  38.    position -> next -> previous = position -> previous;
  39.  
  40.    return position;
  41. }
  42.  
  43. size_t
  44. enet_list_size (ENetList * list)
  45. {
  46.    size_t size = 0;
  47.    ENetListIterator position;
  48.  
  49.    for (position = enet_list_begin (list);
  50.         position != enet_list_end (list);
  51.         position = enet_list_next (position))
  52.      ++ size;
  53.    
  54.    return size;
  55. }
  56.  
  57. /** @} */
  58.