1.1 --- a/src/cx/list.h Sun Feb 07 18:08:21 2021 +0100 1.2 +++ b/src/cx/list.h Sun Feb 07 19:42:12 2021 +0100 1.3 @@ -29,4 +29,50 @@ 1.4 #ifndef UCX_LIST_H 1.5 #define UCX_LIST_H 1.6 1.7 +#include <stdlib.h> 1.8 +#include "allocator.h" 1.9 + 1.10 +typedef int(*CxListComparator)(void *left, void *right); 1.11 + 1.12 +typedef struct { 1.13 + CxAllocator allocator; 1.14 + CxListComparator cmpfunc; 1.15 + void *listdata; 1.16 +} cx_list; 1.17 + 1.18 +typedef int (*cx_list_add)(cx_list *list, void *elem); 1.19 + 1.20 +typedef int (*cx_list_insert)(cx_list *list, size_t index, void *elem); 1.21 + 1.22 +typedef void *(*cx_list_remove)(cx_list *list, size_t index); 1.23 + 1.24 +typedef size_t (*cx_list_find)(cx_list *list, void *elem); 1.25 + 1.26 +typedef size_t (*cx_list_size)(cx_list *list); 1.27 + 1.28 +typedef struct { 1.29 + cx_list_add add; 1.30 + cx_list_insert insert; 1.31 + cx_list_remove remove; 1.32 + cx_list_find find; 1.33 + cx_list_size size; 1.34 +} cx_list_class; 1.35 + 1.36 +struct cx_list_s { 1.37 + cx_list_class *cl; 1.38 + cx_list data; 1.39 +}; 1.40 + 1.41 +typedef struct cx_list_s *CxList; 1.42 + 1.43 +int cxListAdd(CxList list, void *elem); 1.44 + 1.45 +int cxListInsert(CxList list, size_t index, void *elem); 1.46 + 1.47 +void *cxListRemove(CxList list, size_t index); 1.48 + 1.49 +size_t cxListFind(CxList list, void *elem); 1.50 + 1.51 +size_t cxListSize(CxList list); 1.52 + 1.53 #endif /* UCX_LIST_H */