414:81a4c3a63e65 | 415:067aa769796a |
---|---|
30 #define UCX_LIST_H | 30 #define UCX_LIST_H |
31 | 31 |
32 #include <stdlib.h> | 32 #include <stdlib.h> |
33 #include "allocator.h" | 33 #include "allocator.h" |
34 | 34 |
35 #ifdef __cplusplus | |
36 extern "C" { | |
37 #endif | |
38 | |
35 typedef int(*CxListComparator)(void const *left, void const *right); | 39 typedef int(*CxListComparator)(void const *left, void const *right); |
36 | 40 |
37 typedef struct { | 41 typedef struct { |
38 CxAllocator allocator; | 42 CxAllocator allocator; |
39 CxListComparator cmpfunc; | 43 CxListComparator cmpfunc; |
43 char listdata[]; | 47 char listdata[]; |
44 } cx_list; | 48 } cx_list; |
45 | 49 |
46 typedef struct { | 50 typedef struct { |
47 int (*add)(cx_list *list, void *elem); | 51 int (*add)(cx_list *list, void *elem); |
52 | |
48 int (*insert)(cx_list *list, size_t index, void *elem); | 53 int (*insert)(cx_list *list, size_t index, void *elem); |
54 | |
49 void *(*remove)(cx_list *list, size_t index); | 55 void *(*remove)(cx_list *list, size_t index); |
56 | |
50 size_t (*find)(cx_list *list, void *elem); | 57 size_t (*find)(cx_list *list, void *elem); |
58 | |
51 void *(*last)(cx_list *list); | 59 void *(*last)(cx_list *list); |
52 } cx_list_class; | 60 } cx_list_class; |
53 | 61 |
54 typedef struct { | 62 typedef struct { |
55 cx_list_class *cl; | 63 cx_list_class *cl; |
66 | 74 |
67 size_t cxListFind(CxList list, void *elem); | 75 size_t cxListFind(CxList list, void *elem); |
68 | 76 |
69 void *cxListLast(CxList list); | 77 void *cxListLast(CxList list); |
70 | 78 |
79 #ifdef __cplusplus | |
80 } /* extern "C" */ | |
81 #endif | |
82 | |
71 #endif /* UCX_LIST_H */ | 83 #endif /* UCX_LIST_H */ |