src/cx/list.h

changeset 435
0fe204d50f54
parent 415
067aa769796a
child 438
cd3069757010
     1.1 --- a/src/cx/list.h	Sun Sep 26 18:01:51 2021 +0200
     1.2 +++ b/src/cx/list.h	Sun Sep 26 18:31:24 2021 +0200
     1.3 @@ -38,31 +38,28 @@
     1.4  
     1.5  typedef int(*CxListComparator)(void const *left, void const *right);
     1.6  
     1.7 +typedef struct cx_list_s cx_list_s;
     1.8 +
     1.9  typedef struct {
    1.10 +    int (*add)(cx_list_s *list, void *elem);
    1.11 +
    1.12 +    int (*insert)(cx_list_s *list, size_t index, void *elem);
    1.13 +
    1.14 +    void *(*remove)(cx_list_s *list, size_t index);
    1.15 +
    1.16 +    size_t (*find)(cx_list_s *list, void *elem);
    1.17 +
    1.18 +    void *(*last)(cx_list_s *list);
    1.19 +} cx_list_class;
    1.20 +
    1.21 +struct cx_list_s {
    1.22 +    cx_list_class *cl;
    1.23      CxAllocator allocator;
    1.24      CxListComparator cmpfunc;
    1.25      size_t itemsize;
    1.26      size_t size;
    1.27      size_t capacity;
    1.28 -    char listdata[];
    1.29 -} cx_list;
    1.30 -
    1.31 -typedef struct {
    1.32 -    int (*add)(cx_list *list, void *elem);
    1.33 -
    1.34 -    int (*insert)(cx_list *list, size_t index, void *elem);
    1.35 -
    1.36 -    void *(*remove)(cx_list *list, size_t index);
    1.37 -
    1.38 -    size_t (*find)(cx_list *list, void *elem);
    1.39 -
    1.40 -    void *(*last)(cx_list *list);
    1.41 -} cx_list_class;
    1.42 -
    1.43 -typedef struct {
    1.44 -    cx_list_class *cl;
    1.45 -    cx_list data;
    1.46 -} cx_list_s;
    1.47 +};
    1.48  
    1.49  typedef cx_list_s *CxList;
    1.50  

mercurial