char data[1]; /* Needs to always be last in the struct */
} zend_llist_element;
+typedef void (*llist_dtor_func_t)(void *);
+typedef int (*llist_compare_func_t)(const zend_llist_element *, const zend_llist_element *);
+typedef void (*llist_apply_with_arg_func_t)(void *data, void *arg);
+typedef void (*llist_apply_with_args_func_t)(void *data, int num_args, va_list args);
+typedef void (*llist_apply_func_t)(void *);
+
typedef struct _zend_llist {
zend_llist_element *head;
zend_llist_element *tail;
size_t size;
- void (*dtor)(void *data);
+ llist_dtor_func_t dtor;
unsigned char persistent;
zend_llist_element *traverse_ptr;
} zend_llist;
-typedef int (*llist_compare_func_t)(const zend_llist_element *, const zend_llist_element *);
-typedef void(*llist_apply_with_arg_func_t)(void *data, void *arg);
-typedef void(*llist_apply_with_args_func_t)(void *data, int num_args, va_list args);
-typedef void (*llist_apply_func_t)(void *);
-
typedef zend_llist_element* zend_llist_position;
BEGIN_EXTERN_C()
-ZEND_API void zend_llist_init(zend_llist *l, size_t size, void (*dtor)(void *data), unsigned char persistent);
+ZEND_API void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor, unsigned char persistent);
ZEND_API void zend_llist_add_element(zend_llist *l, void *element);
ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element);
ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2));