Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/enet/list.c
9896 views
1
/**
2
@file list.c
3
@brief ENet linked list functions
4
*/
5
#define ENET_BUILDING_LIB 1
6
#include "enet/enet.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
ENetListIterator
44
enet_list_move (ENetListIterator position, void * dataFirst, void * dataLast)
45
{
46
ENetListIterator first = (ENetListIterator) dataFirst,
47
last = (ENetListIterator) dataLast;
48
49
first -> previous -> next = last -> next;
50
last -> next -> previous = first -> previous;
51
52
first -> previous = position -> previous;
53
last -> next = position;
54
55
first -> previous -> next = first;
56
position -> previous = last;
57
58
return first;
59
}
60
61
size_t
62
enet_list_size (ENetList * list)
63
{
64
size_t size = 0;
65
ENetListIterator position;
66
67
for (position = enet_list_begin (list);
68
position != enet_list_end (list);
69
position = enet_list_next (position))
70
++ size;
71
72
return size;
73
}
74
75
/** @} */
76
77