X-Git-Url: https://git.libav.org/?p=libav.git;a=blobdiff_plain;f=libavcodec%2Feval.h;h=5f208e599ae81cdc603d72c22f4cd69f09d59568;hp=6aec93f0051bdf04bd606c22e4d46011718f776f;hb=2b65bb45b59389d25661f3b3df45daa721d8abc8;hpb=073f6d5b96648d00d9e7af376c558bc85d308748 diff --git a/libavcodec/eval.h b/libavcodec/eval.h index 6aec93f005..5f208e599a 100644 --- a/libavcodec/eval.h +++ b/libavcodec/eval.h @@ -1,6 +1,4 @@ /* - * simple arithmetic expression evaluator - * * Copyright (c) 2002 Michael Niedermayer * * This file is part of FFmpeg. @@ -21,58 +19,68 @@ */ /** - * @file libavcodec/eval.h - * eval header. + * @file + * simple arithmetic expression evaluator */ #ifndef AVCODEC_EVAL_H #define AVCODEC_EVAL_H -typedef struct ff_expr_s AVExpr; +typedef struct AVExpr AVExpr; /** * Parses and evaluates an expression. - * Note, this is significantly slower than ff_parse_eval() + * Note, this is significantly slower than ff_eval_expr(). + * * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)" - * @param func1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2 NULL terminated array of function pointers for functions which take 2 arguments * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0} + * @param const_value a zero terminated array of values for the identifers from const_name * @param func1_name NULL terminated array of zero terminated strings of func1 identifers + * @param func1 NULL terminated array of function pointers for functions which take 1 argument * @param func2_name NULL terminated array of zero terminated strings of func2 identifers - * @param error pointer to a char* which is set to an error message if something goes wrong - * @param const_value a zero terminated array of values for the identifers from const_name + * @param func2 NULL terminated array of function pointers for functions which take 2 arguments * @param opaque a pointer which will be passed to all functions from func1 and func2 + * @param log_ctx parent logging context * @return the value of the expression */ -double ff_eval2(const char *s, const double *const_value, const char * const *const_name, - double (**func1)(void *, double), const char **func1_name, - double (**func2)(void *, double, double), const char **func2_name, - void *opaque, const char **error); +double ff_parse_and_eval_expr(const char *s, + const char * const *const_name, const double *const_value, + const char * const *func1_name, double (* const *func1)(void *, double), + const char * const *func2_name, double (* const *func2)(void *, double, double), + void *opaque, int log_offset, void *log_ctx); /** - * Parses a expression. + * Parses an expression. + * * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)" - * @param func1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2 NULL terminated array of function pointers for functions which take 2 arguments * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0} * @param func1_name NULL terminated array of zero terminated strings of func1 identifers + * @param func1 NULL terminated array of function pointers for functions which take 1 argument * @param func2_name NULL terminated array of zero terminated strings of func2 identifers - * @param error pointer to a char* which is set to an error message if something goes wrong - * @return AVExpr which must be freed with ff_eval_free by the user when it is not needed anymore + * @param func2 NULL terminated array of function pointers for functions which take 2 arguments + * @param log_ctx parent logging context + * @return AVExpr which must be freed with ff_free_expr() by the user when it is not needed anymore * NULL if anything went wrong */ -AVExpr * ff_parse(const char *s, const char * const *const_name, - double (**func1)(void *, double), const char **func1_name, - double (**func2)(void *, double, double), const char **func2_name, - const char **error); +AVExpr *ff_parse_expr(const char *s, + const char * const *const_name, + const char * const *func1_name, double (* const *func1)(void *, double), + const char * const *func2_name, double (* const *func2)(void *, double, double), + int log_offset, void *log_ctx); + /** * Evaluates a previously parsed expression. + * * @param const_value a zero terminated array of values for the identifers from ff_parse const_name * @param opaque a pointer which will be passed to all functions from func1 and func2 * @return the value of the expression */ -double ff_parse_eval(AVExpr * e, const double *const_value, void *opaque); -void ff_eval_free(AVExpr * e); +double ff_eval_expr(AVExpr * e, const double *const_value, void *opaque); + +/** + * Frees a parsed expression previously created with ff_parse(). + */ +void ff_free_expr(AVExpr *e); /** * Parses the string in numstr and returns its value as a double. If