Files
lightning/common/json_filter.h
Rusty Russell 3c75770586 common/json_filter: routines for json filtering.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 20:25:58 +10:30

35 lines
1.1 KiB
C

/*
* Helpers for filtering JSON results while generating.
*/
#ifndef LIGHTNING_COMMON_JSON_FILTER_H
#define LIGHTNING_COMMON_JSON_FILTER_H
#include "config.h"
#include <ccan/tal/tal.h>
#include <stdbool.h>
struct json_filter;
/* Print this? */
bool json_filter_ok(const struct json_filter *filter, const char *member);
/* Returns true if we should print this new obj/array */
bool json_filter_down(struct json_filter **filter, const char *member);
/* Returns true if we were printing (i.e. close object/arr) */
bool json_filter_up(struct json_filter **filter);
/* Is filter finished (i.e. balanced!) */
bool json_filter_finished(const struct json_filter *filter);
/* Has filter been misused? If so, returns explanatory string, otherwise NULL */
const char *json_filter_misused(const tal_t *ctx, const struct json_filter *f);
/* Filter allocation */
struct json_filter *json_filter_new(const tal_t *ctx);
struct json_filter *json_filter_subobj(struct json_filter *filter,
const char *fieldname,
size_t fieldnamelen);
struct json_filter *json_filter_subarr(struct json_filter *filter);
#endif /* LIGHTNING_COMMON_JSON_FILTER_H */