Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitchX
GitHub Repository: BitchX/BitchX1.3
Path: blob/master/dll/aim/toc/ll.h
1072 views
1
#ifndef _LL_H
2
#define _LL_H
3
4
/*
5
* Really bad list implementation
6
*/
7
8
#define TLL(list,e) e = list->head->next; e; e = e->next
9
10
struct _lle {
11
char *key;
12
void *data;
13
struct _lle *next;
14
};
15
16
typedef struct _lle * LLE;
17
18
struct _ll {
19
LLE head;
20
LLE curr;
21
void (*free_e)(void *);
22
int items;
23
24
};
25
26
typedef struct _ll * LL;
27
28
LL CreateLL();
29
void SetFreeLLE(LL List, void (*free_e)(void *));
30
LLE CreateLLE (char *key, void *data, LLE next);
31
int AddToLL(LL List, char *key, void *data);
32
LLE FindInLL(LL List, char *key);
33
void *GetDataFromLLE(LLE e);
34
int RemoveFromLL(LL List, LLE e);
35
int RemoveFromLLByKey(LL List, char *key);
36
LLE GetNextLLE(LL List);
37
void ResetLLPosition(LL List);
38
void FreeLLE(LLE e, void (*free_e)(void *));
39
void FreeLL(LL List);
40
41
42
/* Internal */
43
44
#endif // _LL_H
45
46