2
3
4
5
6
7
8
9
11#ifndef GIMBAL_DOUBLY_LINKED_LIST_HPP
12#define GIMBAL_DOUBLY_LINKED_LIST_HPP
16#define GBL_SELF_TYPE GblDoublyLinkedListNode
18#define GBL_DOUBLY_LINKED_LIST_NPOS GBL_NPOS
19#define GBL_DOUBLY_LINKED_LIST_NODE_INITIALIZER() { .pNext = NULL
, .pPrev = NULL
}
20#define GBL_DOUBLY_LINKED_LIST_NODE(name) GblDoublyLinkedListNode name = { .pNext = &name, .pPrev = &name }
21#define GBL_DOUBLY_LINKED_LIST_ENTRY(node, structure, field) GBL_CONTAINER_OF(node, structure, field)
25typedef GblLinkedListCmpFn GblDoublyLinkedListCmpFn;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
53 GblLinkedListNode singleNode;
56} GblDoublyLinkedListNode;
81 GblDoublyLinkedListCmpFn pCmpFn,
104 GblDoublyLinkedListCmpFn pCmpFn,
#define GBL_CONTAINER_OF(ptr, type, member)
uint8_t GblBool
Basic boolean type, standardized to sizeof(char)
Intrustive doubly linked list structure with vector-style API.