Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
list.c
Go to the documentation of this file.
1#include "list.h"
2
4{
5 utils_list_s *list = mem;
6
7 list->length = 0;
8 utils_list_node_init(&(list->head), list);
9 return list;
10}
11
13{
14 head->next->prev = node;
15 node->next = head->next;
16 node->prev = head;
17 head->next = node;
18}
19
21{
22 utils_list_node_add(&(list->head), node);
23 list->length++;
24}
25
27{
28 node->next->prev = node->prev;
29 node->prev->next = node->next;
30 list->length--;
31 node->next = node;
32 node->prev = node;
33 return node;
34}
35
37{
38 if (list->length == 0)
39 return 0;
40
41 utils_list_node_s *head = list->head.next;
42
43 utils_list_del(list, head);
44 return head;
45}
46
48{
49 if (list->length == 0)
50 return 0;
51
52 utils_list_node_s *tail = list->head.prev;
53
54 utils_list_del(list, tail);
55 return tail;
56}
57
58size_t utils_list_to_array(utils_list_s *list, void **array)
59{
61
62 if (!array)
63 return list->length;
64
65 if (list->length) {
66 utils_list_for_each(*list, itr){
67 *array = itr->owner;
68 array++;
69 }
70 }
71 return list->length;
72}
73
75{
76 node->next = node;
77 node->prev = node;
78 node->owner = owner;
79}
80
82{
83 return node->next != node;
84}
struct utils_list_node utils_list_node_s
#define utils_list_for_each(list, itr)
Definition list.h:96
utils_list_node_s * utils_list_pop_tail(utils_list_s *list)
Definition list.c:47
utils_list_node_s * utils_list_del(utils_list_s *list, utils_list_node_s *node)
Definition list.c:26
utils_list_node_s * utils_list_pop_head(utils_list_s *list)
Definition list.c:36
void utils_list_node_add(utils_list_node_s *head, utils_list_node_s *node)
Definition list.c:12
void utils_list_node_init(utils_list_node_s *node, void *owner)
Definition list.c:74
int utils_list_node_linked(utils_list_node_s *node)
Definition list.c:81
utils_list_s * utils_list_init(void *mem)
Definition list.c:3
void utils_list_add(utils_list_s *list, utils_list_node_s *node)
Definition list.c:20
size_t utils_list_to_array(utils_list_s *list, void **array)
Definition list.c:58
struct utils_list_node * prev
Definition list.h:13
struct utils_list_node * next
Definition list.h:12
void * owner
Definition list.h:14
utils_list_node_s head
Definition list.h:18
size_t length
Definition list.h:19