X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Feval.c;h=335ea5f0e49559f4c541ff8943ad604f73b0629a;hb=496dcbbc86b679a3bc23421ed71a35ca1bb8fd9b;hp=a3cd477b3d38ab7032eedc9bdd7278fbf2784ba4;hpb=d578432db86762cb131c6b8ac57d20338a866bdb;p=ffmpeg diff --git a/libavcodec/eval.c b/libavcodec/eval.c index a3cd477b3d3..335ea5f0e49 100644 --- a/libavcodec/eval.c +++ b/libavcodec/eval.c @@ -22,7 +22,7 @@ */ /** - * @file eval.c + * @file libavcodec/eval.c * simple arithmetic expression evaluator. * * see http://joe.hotchkiss.com/programming/eval/eval.html @@ -47,12 +47,12 @@ typedef struct Parser{ int stack_index; char *s; - double *const_value; - const char **const_name; // NULL terminated + const double *const_value; + const char * const *const_name; // NULL terminated double (**func1)(void *, double a); // NULL terminated const char **func1_name; // NULL terminated double (**func2)(void *, double a, double b); // NULL terminated - char **func2_name; // NULL terminated + const char **func2_name; // NULL terminated void *opaque; const char **error; #define VARS 10 @@ -375,9 +375,9 @@ static int verify_expr(AVEvalExpr * e) { } } -AVEvalExpr * ff_parse(const char *s, const char **const_name, +AVEvalExpr * ff_parse(const char *s, const char * const *const_name, double (**func1)(void *, double), const char **func1_name, - double (**func2)(void *, double, double), char **func2_name, + double (**func2)(void *, double, double), const char **func2_name, const char **error){ Parser p; AVEvalExpr * e; @@ -404,7 +404,7 @@ AVEvalExpr * ff_parse(const char *s, const char **const_name, return e; } -double ff_parse_eval(AVEvalExpr * e, double *const_value, void *opaque) { +double ff_parse_eval(AVEvalExpr * e, const double *const_value, void *opaque) { Parser p; p.const_value= const_value; @@ -412,9 +412,9 @@ double ff_parse_eval(AVEvalExpr * e, double *const_value, void *opaque) { return eval_expr(&p, e); } -double ff_eval2(const char *s, double *const_value, const char **const_name, +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), char **func2_name, + double (**func2)(void *, double, double), const char **func2_name, void *opaque, const char **error){ AVEvalExpr * e = ff_parse(s, const_name, func1, func1_name, func2, func2_name, error); double d; @@ -438,13 +438,13 @@ static const char *const_names[]={ }; int main(void){ int i; - printf("%f == 12.7\n", ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL)); - printf("%f == 0.931322575\n", ff_eval("80G/80Gi", const_values, const_names, NULL, NULL, NULL, NULL, NULL)); + printf("%f == 12.7\n", ff_eval2("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL, NULL)); + printf("%f == 0.931322575\n", ff_eval2("80G/80Gi", const_values, const_names, NULL, NULL, NULL, NULL, NULL, NULL)); for(i=0; i<1050; i++){ START_TIMER - ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL); - STOP_TIMER("ff_eval") + ff_eval2("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL, NULL); + STOP_TIMER("ff_eval2") } return 0; }