20#include "libical_ical_export.h"
22typedef struct icalpvl_list_t *icalpvl_list;
23typedef struct icalpvl_elem_t *icalpvl_elem;
26LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_new_element(
void *d, icalpvl_elem next, icalpvl_elem prior);
28LIBICAL_ICAL_EXPORT icalpvl_list icalpvl_newlist(
void);
30LIBICAL_ICAL_EXPORT
void icalpvl_free(icalpvl_list);
33LIBICAL_ICAL_EXPORT
void icalpvl_unshift(icalpvl_list l,
void *d);
35LIBICAL_ICAL_EXPORT
void *icalpvl_shift(icalpvl_list l);
37LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_head(icalpvl_list);
40LIBICAL_ICAL_EXPORT
void icalpvl_push(icalpvl_list l,
void *d);
42LIBICAL_ICAL_EXPORT
void *icalpvl_pop(icalpvl_list l);
44LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_tail(icalpvl_list);
47typedef int (*icalpvl_comparef)(
void *a,
void *b);
49LIBICAL_ICAL_EXPORT
void icalpvl_insert_ordered(icalpvl_list l, icalpvl_comparef f,
void *d);
51LIBICAL_ICAL_EXPORT
void icalpvl_insert_after(icalpvl_list l, icalpvl_elem p,
void *d);
53LIBICAL_ICAL_EXPORT
void icalpvl_insert_before(icalpvl_list l, icalpvl_elem p,
void *d);
56LIBICAL_ICAL_EXPORT
void *icalpvl_remove(icalpvl_list, icalpvl_elem);
58LIBICAL_ICAL_EXPORT
void icalpvl_clear(icalpvl_list);
60LIBICAL_ICAL_EXPORT
int icalpvl_count(icalpvl_list);
63LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_next(icalpvl_elem e);
65LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_prior(icalpvl_elem e);
68LIBICAL_ICAL_EXPORT
void *icalpvl_data(icalpvl_elem);
71typedef int (*icalpvl_findf)(
void *a,
void *b);
73LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_find(icalpvl_list l, icalpvl_findf f,
void *v);
75LIBICAL_ICAL_EXPORT icalpvl_elem icalpvl_find_next(icalpvl_list l, icalpvl_findf f,
void *v);
81typedef void (*icalpvl_applyf)(
void *a,
void *b);
83LIBICAL_ICAL_EXPORT
void icalpvl_apply(icalpvl_list l, icalpvl_applyf f,
void *v);