src/cx/list.h

changeset 415
067aa769796a
parent 412
af766caea48d
child 435
0fe204d50f54
equal deleted inserted replaced
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 */

mercurial