src/cx/list.h

changeset 398
8d506ed6c1c0
parent 393
8c0421ccbb58
child 401
e6a8f7fb0c45
equal deleted inserted replaced
397:cfc1193b1e65 398:8d506ed6c1c0
27 */ 27 */
28 28
29 #ifndef UCX_LIST_H 29 #ifndef UCX_LIST_H
30 #define UCX_LIST_H 30 #define UCX_LIST_H
31 31
32 #include <stdlib.h>
33 #include "allocator.h"
34
35 typedef int(*CxListComparator)(void *left, void *right);
36
37 typedef struct {
38 CxAllocator allocator;
39 CxListComparator cmpfunc;
40 void *listdata;
41 } cx_list;
42
43 typedef int (*cx_list_add)(cx_list *list, void *elem);
44
45 typedef int (*cx_list_insert)(cx_list *list, size_t index, void *elem);
46
47 typedef void *(*cx_list_remove)(cx_list *list, size_t index);
48
49 typedef size_t (*cx_list_find)(cx_list *list, void *elem);
50
51 typedef size_t (*cx_list_size)(cx_list *list);
52
53 typedef struct {
54 cx_list_add add;
55 cx_list_insert insert;
56 cx_list_remove remove;
57 cx_list_find find;
58 cx_list_size size;
59 } cx_list_class;
60
61 struct cx_list_s {
62 cx_list_class *cl;
63 cx_list data;
64 };
65
66 typedef struct cx_list_s *CxList;
67
68 int cxListAdd(CxList list, void *elem);
69
70 int cxListInsert(CxList list, size_t index, void *elem);
71
72 void *cxListRemove(CxList list, size_t index);
73
74 size_t cxListFind(CxList list, void *elem);
75
76 size_t cxListSize(CxList list);
77
32 #endif /* UCX_LIST_H */ 78 #endif /* UCX_LIST_H */

mercurial