int zbx_function_validate(const char *expr, size_t *par_l, size_t *par_r, char *error, int max_error_len);
int zbx_function_validate_parameters(const char *expr, size_t *length);
int zbx_user_macro_parse(const char *macro, int *macro_r, int *context_l, int *context_r,
unsigned char *context_op);
int zbx_user_macro_parse_dyn(const char *macro, char **name, char **context, int *length,
unsigned char *context_op);
char *zbx_user_macro_unquote_context_dyn(const char *context, int len);
char *zbx_user_macro_quote_context_dyn(const char *context, int force_quote, char **error);
int zbx_function_find(const char *expr, size_t *func_pos, size_t *par_l, size_t *par_r, char *error,
void zbx_function_param_parse(const char *expr, size_t *param_pos, size_t *length, size_t *sep_pos);
char *zbx_function_param_unquote_dyn(const char *param, size_t len, int *quoted);
int zbx_function_param_quote(char **param, int forced);
char *zbx_function_get_param_dyn(const char *params, int Nparam);
#define ZBX_BACKSLASH_ESC_OFF 0
#define ZBX_BACKSLASH_ESC_ON 1
void zbx_function_param_parse_ext(const char *expr, zbx_uint32_t allowed_macros, int esc_bs, size_t *param_pos,
size_t *length, size_t *sep_pos);
void zbx_function_param_parse(const char *expr, size_t *param_pos, size_t *length, size_t *sep_pos);
void zbx_trigger_function_param_parse(const char *expr, size_t *param_pos, size_t *length, size_t *sep_pos);
void zbx_lld_trigger_function_param_parse(const char *expr, size_t *param_pos, size_t *length, size_t *sep_pos);
ZBX_FUNCTION_TYPE_UNKNOWN,
ZBX_FUNCTION_TYPE_HISTORY,
zbx_function_type_t zbx_get_function_type(const char *func);