source: osgVisual/include/cluster/enet/list.h @ 145

Last change on this file since 145 was 65, checked in by Torben Dannhauer, 14 years ago

new cluster implementation added: ENet
ENet is a reliable UDP implementation with quite simple usage and high performance for transmission with small or medium size packet.

File size: 1.1 KB
Line 
1/**
2 @file  list.h
3 @brief ENet list management
4*/
5#ifndef __ENET_LIST_H__
6#define __ENET_LIST_H__
7
8#include <stdlib.h>
9
10typedef struct _ENetListNode
11{
12   struct _ENetListNode * next;
13   struct _ENetListNode * previous;
14} ENetListNode;
15
16typedef ENetListNode * ENetListIterator;
17
18typedef struct _ENetList
19{
20   ENetListNode sentinel;
21} ENetList;
22
23extern void enet_list_clear (ENetList *);
24
25extern ENetListIterator enet_list_insert (ENetListIterator, void *);
26extern void * enet_list_remove (ENetListIterator);
27extern ENetListIterator enet_list_move (ENetListIterator, void *, void *);
28
29extern size_t enet_list_size (ENetList *);
30
31#define enet_list_begin(list) ((list) -> sentinel.next)
32#define enet_list_end(list) (& (list) -> sentinel)
33
34#define enet_list_empty(list) (enet_list_begin (list) == enet_list_end (list))
35
36#define enet_list_next(iterator) ((iterator) -> next)
37#define enet_list_previous(iterator) ((iterator) -> previous)
38
39#define enet_list_front(list) ((void *) (list) -> sentinel.next)
40#define enet_list_back(list) ((void *) (list) -> sentinel.previous)
41
42#endif /* __ENET_LIST_H__ */
43
Note: See TracBrowser for help on using the repository browser.