aboutsummaryrefslogtreecommitdiff
path: root/lib/list/list.h
blob: 2021b2a19cce0bf6730e160e828d5b3c251250b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef LIST_H
#define LIST_H

#include "../sys/sizes.h"

typedef struct list_node_t__ {
	struct list_node_t__ *next;
	struct list_node_t__ *previous;
	void *value;
} list_node_t;

typedef struct {
	list_node_t *first;
	list_node_t *last;
	u64         size;
} list_t;

list_t *new_list();
list_t *from_array(void **array, u64 size);
void   list_append(list_t *list, void *value);
void   list_prepend(list_t *list, void *value);
void   *pop_first(list_t *list);
void   *pop_last(list_t *list);
void   free_list(list_t *list);

#endif