int zbx_is_hostname_char(unsigned char c);
int zbx_is_key_char(unsigned char c);
int zbx_is_function_char(unsigned char c);
int zbx_is_macro_char(unsigned char c);
int zbx_is_discovery_macro(const char *name);
int zbx_parse_key(const char **exp);
int zbx_parse_host_key(char *exp, char **host, char **key);
void zbx_make_hostname(char *host);
int zbx_check_hostname(const char *hostname, char **error);
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,
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,