src/cx/list.h

changeset 398
8d506ed6c1c0
parent 393
8c0421ccbb58
child 401
e6a8f7fb0c45
     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 */

mercurial