Synopsis
#define             HKL_LIST_LEN                        (array)
#define             HKL_LIST                            (type,
                                                         name)
#define             HKL_LIST_INIT                       (array)
#define             HKL_LIST_ALLOC                      (array,
                                                         len)
#define             HKL_LIST_COPY                       (dst,
                                                         src)
#define             HKL_LIST_FREE                       (array)
#define             HKL_LIST_FREE_DESTRUCTOR            (array,
                                                         destructor)
#define             HKL_LIST_RESIZE                     (array,
                                                         len)
#define             HKL_LIST_ADD_VALUE                  (array,
                                                         value)
#define             HKL_LIST_DEL                        (array,
                                                         idx)
#define             HKL_LIST_DEL_DESTRUCTOR             (array,
                                                         idx,
                                                         destructor)
#define             HKL_LIST_DEL_ITEM_DESTRUCTOR        (array,
                                                         item,
                                                         destructor)
 
Details
HKL_LIST_LEN()
#define HKL_LIST_LEN(array) array ## _len
 
HKL_LIST()
#define HKL_LIST(type, name) type *name; size_t HKL_LIST_LEN(name)
 
HKL_LIST_INIT()
#define HKL_LIST_INIT(array) array = NULL, HKL_LIST_LEN(array) = 0
 
HKL_LIST_ALLOC()
#define             HKL_LIST_ALLOC(array, len)
 
HKL_LIST_COPY()
#define HKL_LIST_COPY(dst, src) memcpy(dst, src, HKL_LIST_LEN(src) * sizeof(*src))
 
HKL_LIST_FREE()
#define HKL_LIST_FREE(array) free(array), HKL_LIST_INIT(array)
 
HKL_LIST_FREE_DESTRUCTOR()
#define             HKL_LIST_FREE_DESTRUCTOR(array, destructor)
 
HKL_LIST_RESIZE()
#define             HKL_LIST_RESIZE(array, len)
 
HKL_LIST_ADD_VALUE()
#define             HKL_LIST_ADD_VALUE(array, value)
 
HKL_LIST_DEL()
#define             HKL_LIST_DEL(array, idx)
 
HKL_LIST_DEL_DESTRUCTOR()
#define             HKL_LIST_DEL_DESTRUCTOR(array, idx, destructor)
| array:
 |  | 
| idx:
 |  | 
| destructor:
 |  | 
 
HKL_LIST_DEL_ITEM_DESTRUCTOR()
#define             HKL_LIST_DEL_ITEM_DESTRUCTOR(array, item, destructor)
| array:
 |  | 
| item:
 |  | 
| destructor:
 |  |