summaryrefslogtreecommitdiff
path: root/src/ll.h
diff options
context:
space:
mode:
author@syxhe <https://t.me/syxhe>2025-03-24 15:02:03 -0500
committer@syxhe <https://t.me/syxhe>2025-03-24 15:02:03 -0500
commit7083f1d8f72d4e45a82fd40cd4822356429f0e23 (patch)
tree5d7ce6c9ab478f4d3e297fa3d66fa129cb5b1928 /src/ll.h
parentb3bd3df103a5a75d267b2b79e85558768b1dc4bb (diff)
Refactor a bunch of the linked list implementation
Diffstat (limited to 'src/ll.h')
-rw-r--r--src/ll.h36
1 files changed, 10 insertions, 26 deletions
diff --git a/src/ll.h b/src/ll.h
index 5e47bd9..f5846fb 100644
--- a/src/ll.h
+++ b/src/ll.h
@@ -1,35 +1,19 @@
1#ifndef __VXGG_REWRITE___SHARED_H___28542989122405___ 1#ifndef __VXGG_REWRITE___LL_H___305861098005___
2#define __VXGG_REWRITE___SHARED_H___28542989122405___ 2#define __VXGG_REWRITE___LL_H___305861098005___
3 3
4#include <stddef.h> 4#include <stddef.h>
5 5
6typedef struct dll { 6typedef int (*dlinkedlist_freecallback)(void*);
7 void *data; 7typedef struct dlinkedlist dlinkedlist;
8 int (*dfreecb)(void*);
9 8
10 struct dll *next;
11 struct dll *prev;
12} dllnode;
13
14typedef struct {
15 dllnode *start;
16 dllnode *end;
17 size_t size;
18} dlinkedlist;
19
20// Initialize a dlinkedlist
21void dlinkedlist_init(dlinkedlist **ll); 9void dlinkedlist_init(dlinkedlist **ll);
22
23// Free a dlinkedlist and its elements
24void dlinkedlist_free(dlinkedlist **ll); 10void dlinkedlist_free(dlinkedlist **ll);
25 11
26// Insert an element to the beginning of the list 12int dlinkedlist_insert(dlinkedlist * const ll, void *data, dlinkedlist_freecallback dfreecb);
27int dlinkedlist_insert(dlinkedlist * const ll, void *data, int (*dfreecb)(void*)); 13int dlinkedlist_append(dlinkedlist * const ll, void *data, dlinkedlist_freecallback dfreecb);
28 14void *dlinkedlist_get(const dlinkedlist * const ll, size_t index);
29// Insert an element to the end of the list 15void *dlinkedlist_getfirst(const dlinkedlist * const ll);
30int dlinkedlist_append(dlinkedlist * const ll, void *data, int (*dfreecb)(void*)); 16void *dlinkedlist_getlast(const dlinkedlist * const ll);
31 17int dlinkedlist_remove(dlinkedlist * const ll, size_t index);
32// Get the element from a dlinkedlist at index
33dllnode *dlinkedlist_get(const dlinkedlist * const ll, size_t index);
34 18
35#endif \ No newline at end of file 19#endif \ No newline at end of file