diff -r cfc1193b1e65 -r 8d506ed6c1c0 src/cx/list.h --- a/src/cx/list.h Sun Feb 07 18:08:21 2021 +0100 +++ b/src/cx/list.h Sun Feb 07 19:42:12 2021 +0100 @@ -29,4 +29,50 @@ #ifndef UCX_LIST_H #define UCX_LIST_H +#include +#include "allocator.h" + +typedef int(*CxListComparator)(void *left, void *right); + +typedef struct { + CxAllocator allocator; + CxListComparator cmpfunc; + void *listdata; +} cx_list; + +typedef int (*cx_list_add)(cx_list *list, void *elem); + +typedef int (*cx_list_insert)(cx_list *list, size_t index, void *elem); + +typedef void *(*cx_list_remove)(cx_list *list, size_t index); + +typedef size_t (*cx_list_find)(cx_list *list, void *elem); + +typedef size_t (*cx_list_size)(cx_list *list); + +typedef struct { + cx_list_add add; + cx_list_insert insert; + cx_list_remove remove; + cx_list_find find; + cx_list_size size; +} cx_list_class; + +struct cx_list_s { + cx_list_class *cl; + cx_list data; +}; + +typedef struct cx_list_s *CxList; + +int cxListAdd(CxList list, void *elem); + +int cxListInsert(CxList list, size_t index, void *elem); + +void *cxListRemove(CxList list, size_t index); + +size_t cxListFind(CxList list, void *elem); + +size_t cxListSize(CxList list); + #endif /* UCX_LIST_H */