src/cx/list.h

changeset 435
0fe204d50f54
parent 415
067aa769796a
child 438
cd3069757010
equal deleted inserted replaced
434:38ee262e8b94 435:0fe204d50f54
36 extern "C" { 36 extern "C" {
37 #endif 37 #endif
38 38
39 typedef int(*CxListComparator)(void const *left, void const *right); 39 typedef int(*CxListComparator)(void const *left, void const *right);
40 40
41 typedef struct cx_list_s cx_list_s;
42
41 typedef struct { 43 typedef struct {
44 int (*add)(cx_list_s *list, void *elem);
45
46 int (*insert)(cx_list_s *list, size_t index, void *elem);
47
48 void *(*remove)(cx_list_s *list, size_t index);
49
50 size_t (*find)(cx_list_s *list, void *elem);
51
52 void *(*last)(cx_list_s *list);
53 } cx_list_class;
54
55 struct cx_list_s {
56 cx_list_class *cl;
42 CxAllocator allocator; 57 CxAllocator allocator;
43 CxListComparator cmpfunc; 58 CxListComparator cmpfunc;
44 size_t itemsize; 59 size_t itemsize;
45 size_t size; 60 size_t size;
46 size_t capacity; 61 size_t capacity;
47 char listdata[]; 62 };
48 } cx_list;
49
50 typedef struct {
51 int (*add)(cx_list *list, void *elem);
52
53 int (*insert)(cx_list *list, size_t index, void *elem);
54
55 void *(*remove)(cx_list *list, size_t index);
56
57 size_t (*find)(cx_list *list, void *elem);
58
59 void *(*last)(cx_list *list);
60 } cx_list_class;
61
62 typedef struct {
63 cx_list_class *cl;
64 cx_list data;
65 } cx_list_s;
66 63
67 typedef cx_list_s *CxList; 64 typedef cx_list_s *CxList;
68 65
69 int cxListAdd(CxList list, void *elem); 66 int cxListAdd(CxList list, void *elem);
70 67

mercurial