solidc
Robust collection of general-purpose cross-platform C libraries and data structures designed for rapid and safe development in C
Loading...
Searching...
No Matches
slist.h
Go to the documentation of this file.
1
6#ifndef __SLISTS__H
7#define __SLISTS__H
8
9#include <stddef.h> // for size_t
10#include <stdlib.h> // for malloc, free
11
12#if defined(__cplusplus)
13extern "C" {
14#endif
15
20typedef struct slist_node {
22 void* data;
26
32typedef struct {
38 size_t size;
40 size_t elem_size;
41} slist;
42
49slist* slist_new(size_t elem_size);
50
56void slist_free(slist* list);
57
63size_t slist_size(const slist* list);
64
70void slist_clear(slist* list);
71
79slist_node_t* slist_node_new(size_t elem_size, void* data);
80
86
93void slist_push_front(slist* list, void* elem);
94
102void slist_push_back(slist* list, void* elem);
103
110void slist_pop_front(slist* list);
111
121void slist_insert(slist* list, size_t index, void* elem);
122
130void slist_remove(slist* list, size_t index);
131
139void* slist_get(const slist* list, size_t index);
140
148int slist_index_of(const slist* list, void* elem);
149
158void slist_insert_after(slist* list, void* elem, void* after);
159
168void slist_insert_before(slist* list, void* elem, void* before);
169
176void slist_print_asint(const slist* list);
177
184void slist_print_aschar(const slist* list);
185
192#define SLIST_FOR_EACH(list, node) for (slist_node_t * (node) = (list)->head; (node); (node) = (node)->next)
193
194#if defined(__cplusplus)
195}
196#endif
197
198#endif /* __SLISTS__H */
void slist_print_asint(const slist *list)
Definition slist.c:176
void slist_insert(slist *list, size_t index, void *elem)
Definition slist.c:95
void slist_insert_before(slist *list, void *elem, void *before)
Definition slist.c:168
void slist_clear(slist *list)
Definition slist.c:33
void slist_pop_front(slist *list)
Definition slist.c:86
void slist_node_free(slist_node_t *node)
Definition slist.c:57
size_t slist_size(const slist *list)
Definition slist.c:31
void slist_push_back(slist *list, void *elem)
Definition slist.c:72
struct slist_node slist_node_t
void slist_remove(slist *list, size_t index)
Definition slist.c:120
void slist_push_front(slist *list, void *elem)
Definition slist.c:61
void * slist_get(const slist *list, size_t index)
Definition slist.c:140
slist_node_t * slist_node_new(size_t elem_size, void *data)
Definition slist.c:46
slist * slist_new(size_t elem_size)
Definition slist.c:14
void slist_print_aschar(const slist *list)
Definition slist.c:181
void slist_insert_after(slist *list, void *elem, void *after)
Definition slist.c:163
void slist_free(slist *list)
Definition slist.c:25
int slist_index_of(const slist *list, void *elem)
Definition slist.c:150
struct slist_node * next
Definition slist.h:24
void * data
Definition slist.h:22
Definition slist.h:32
size_t elem_size
Definition slist.h:40
slist_node_t * tail
Definition slist.h:36
slist_node_t * head
Definition slist.h:34
size_t size
Definition slist.h:38