Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
list.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2016 Kaspar Schleiser <kaspar@schleiser.de>
3
* 2016 TriaGnoSys GmbH
4
*
5
* This file is subject to the terms and conditions of the GNU Lesser
6
* General Public License v2.1. See the file LICENSE in the top level
7
* directory for more details.
8
*/
9
23
#ifndef LIST_H
24
#define LIST_H
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
40
typedef
struct
list_node
{
41
struct
list_node
*
next
;
42
}
list_node_t
;
43
53
static
inline
void
list_add
(
list_node_t
*node,
list_node_t
*new_node)
54
{
55
new_node->
next
= node->
next
;
56
node->
next
= new_node;
57
}
58
67
static
inline
list_node_t
*
list_remove_head
(
list_node_t
*list)
68
{
69
list_node_t
*head = list->
next
;
70
71
if
(head) {
72
list->
next
= head->
next
;
73
}
74
return
head;
75
}
76
86
static
inline
list_node_t
*
list_remove
(
list_node_t
*list,
list_node_t
*node)
87
{
88
while
(list->
next
) {
89
if
(list->
next
== node) {
90
list->
next
= node->
next
;
91
return
node;
92
}
93
list = list->
next
;
94
}
95
return
list->
next
;
96
}
97
98
#ifdef __cplusplus
99
}
100
#endif
101
102
#endif
/* LIST_H */
103
list_add
static void list_add(list_node_t *node, list_node_t *new_node)
Insert object into list.
Definition:
list.h:53
list_node_t
struct list_node list_node_t
List node structure.
list_node
List node structure.
Definition:
list.h:40
list_node::next
struct list_node * next
pointer to next list entry
Definition:
list.h:41
list_remove
static list_node_t * list_remove(list_node_t *list, list_node_t *node)
Removes the node from the list.
Definition:
list.h:86
list_remove_head
static list_node_t * list_remove_head(list_node_t *list)
Removes the head of the list and returns it.
Definition:
list.h:67
Generated on Tue Nov 24 2020 19:46:49 by
1.8.17