libdatatypes 0.3.2
Abstract datatypes for C.
Loading...
Searching...
No Matches
slist.h
Go to the documentation of this file.
1/***************************************************************************
2 begin........: June 2012
3 copyright....: Sebastian Fedrau
4 email........: sebastian.fedrau@gmail.com
5 ***************************************************************************/
6
7/***************************************************************************
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License v3 as published by
10 the Free Software Foundation.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License v3 for more details.
16 ***************************************************************************/
22#include "datatypes.h"
23
24#ifndef SLIST_H
25#define SLIST_H
26
27#include <stdint.h>
28#include <stdbool.h>
29
30#include "pool.h"
31
36typedef struct _SListItem
37{
39 void *data;
41 struct _SListItem *next;
42} SListItem;
43
63
72SList *slist_new(CompareFunc compare, FreeFunc free, Pool *pool);
73
82void slist_init(SList *list, CompareFunc compare, FreeFunc free, Pool *pool);
83
89void slist_destroy(SList *list);
90
96void slist_free(SList *list);
97
105SListItem *slist_append(SList *list, void *data);
106
114SListItem *slist_prepend(SList *list, void *data);
115
123SListItem *slist_insert_sorted(SList *list, void *data);
124
131SListItem *slist_head(const SList *list);
132
139size_t slist_count(const SList *list);
140
147bool slist_empty(const SList *list);
148
155void slist_remove(SList *list, SListItem *item);
156
164void slist_remove_by_data(SList *list, void *data, bool remove_all);
165
172void *slist_pop(SList *list);
173
181bool slist_contains(const SList *list, const void *data);
182
188void slist_clear(SList *list);
189
198SListItem *slist_find(const SList *list, SListItem *offset, void const *data);
199
201#define slist_item_next(item) item->next
202
204#define slist_item_get_data(item) item->data
205
207#define slist_item_set_data(item, value) item->data = value
208
215void slist_item_free_data(const SList *list, SListItem *item);
216
217#endif
218
int32_t(* CompareFunc)(const void *a, const void *b)
Definition compare.h:30
General declarations.
void(* FreeFunc)(void *p)
Definition datatypes.h:33
Allocate memory blocks of same sizes.
void slist_destroy(SList *list)
Definition slist.c:98
size_t count
Definition slist.h:55
void slist_init(SList *list, CompareFunc compare, FreeFunc free, Pool *pool)
Definition slist.c:48
SListItem * slist_find(const SList *list, SListItem *offset, void const *data)
Definition slist.c:402
SListItem * slist_append(SList *list, void *data)
Definition slist.c:133
void * data
Definition slist.h:39
SListItem * head
Definition slist.h:51
void slist_remove_by_data(SList *list, void *data, bool remove_all)
Definition slist.c:289
FreeFunc free
Definition slist.h:59
size_t slist_count(const SList *list)
Definition slist.c:410
struct _SListItem * next
Definition slist.h:41
SListItem * slist_insert_sorted(SList *list, void *data)
Definition slist.c:219
SList * slist_new(CompareFunc compare, FreeFunc free, Pool *pool)
Definition slist.c:30
void slist_clear(SList *list)
Definition slist.c:390
bool slist_contains(const SList *list, const void *data)
Definition slist.c:381
Pool * pool
Definition slist.h:61
CompareFunc compare
Definition slist.h:57
void slist_item_free_data(const SList *list, SListItem *item)
Definition slist.c:434
void slist_remove(SList *list, SListItem *item)
Definition slist.c:254
SListItem * slist_prepend(SList *list, void *data)
Definition slist.c:162
SListItem * slist_head(const SList *list)
Definition slist.c:418
SListItem * tail
Definition slist.h:53
bool slist_empty(const SList *list)
Definition slist.c:426
void slist_free(SList *list)
Definition slist.c:81
void * slist_pop(SList *list)
Definition slist.c:325
Singly-linked list.
Definition slist.h:49
Structure holding a list item.
Definition slist.h:37
Allocate groups of equal-sized chunks of memory.
Definition pool.h:33