list.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /**
  2. @file list.h
  3. @brief ENet list management
  4. */
  5. #ifndef __ENET_LIST_H__
  6. #define __ENET_LIST_H__
  7. #include <stdlib.h>
  8. typedef struct _ENetListNode
  9. {
  10. struct _ENetListNode * next;
  11. struct _ENetListNode * previous;
  12. } ENetListNode;
  13. typedef ENetListNode * ENetListIterator;
  14. typedef struct _ENetList
  15. {
  16. ENetListNode sentinel;
  17. } ENetList;
  18. extern void enet_list_clear (ENetList *);
  19. extern ENetListIterator enet_list_insert (ENetListIterator, void *);
  20. extern void * enet_list_remove (ENetListIterator);
  21. extern size_t enet_list_size (ENetList *);
  22. #define enet_list_begin(list) ((list) -> sentinel.next)
  23. #define enet_list_end(list) (& (list) -> sentinel)
  24. #define enet_list_empty(list) (enet_list_begin (list) == enet_list_end (list))
  25. #define enet_list_next(iterator) ((iterator) -> next)
  26. #define enet_list_previous(iterator) ((iterator) -> previous)
  27. #define enet_list_front(list) ((void *) (list) -> sentinel.next)
  28. #define enet_list_back(list) ((void *) (list) -> sentinel.previous)
  29. #endif /* __ENET_LIST_H__ */