From ac33357e7ce7c474aeaffc92e381020289d767a2 Mon Sep 17 00:00:00 2001 From: allusive-dev Date: Mon, 30 Oct 2023 15:12:21 +1100 Subject: Version 1.0 --- src/c2.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/c2.h') diff --git a/src/c2.h b/src/c2.h index d6b1d37..a7ddd39 100644 --- a/src/c2.h +++ b/src/c2.h @@ -12,15 +12,31 @@ #pragma once #include +#include typedef struct _c2_lptr c2_lptr_t; typedef struct session session_t; struct managed_win; +typedef void (*c2_userdata_free)(void *); c2_lptr_t *c2_parse(c2_lptr_t **pcondlst, const char *pattern, void *data); -c2_lptr_t *c2_free_lptr(c2_lptr_t *lp); +c2_lptr_t *c2_free_lptr(c2_lptr_t *lp, c2_userdata_free f); -bool c2_match(session_t *ps, const struct managed_win *w, const c2_lptr_t *condlst, void **pdata); +bool c2_match(session_t *ps, const struct managed_win *w, const c2_lptr_t *condlst, + void **pdata); bool c2_list_postprocess(session_t *ps, c2_lptr_t *list); +typedef bool (*c2_list_foreach_cb_t)(const c2_lptr_t *cond, void *data); +bool c2_list_foreach(const c2_lptr_t *list, c2_list_foreach_cb_t cb, void *data); +/// Return user data stored in a condition. +void *c2_list_get_data(const c2_lptr_t *condlist); + +/** + * Destroy a condition list. + */ +static inline void c2_list_free(c2_lptr_t **pcondlst, c2_userdata_free f) { + while ((*pcondlst = c2_free_lptr(*pcondlst, f))) { + } + *pcondlst = NULL; +} -- cgit v1.2.3