[PATCH 3/4] Change the order of parameters for ff_eval_expr() and ff_parse_and_eval_expr(), place the names for constants/functions before the corresponding values.

Stefano Sabatini stefano.sabatini-lala
Thu May 13 00:55:23 CEST 2010


This looks more readable, as the user is expected to know the names
before the values.
---
 libavcodec/eval.c        |   22 ++++++++++++----------
 libavcodec/eval.h        |   24 +++++++++++++-----------
 libavcodec/opt.c         |    2 +-
 libavcodec/ratecontrol.c |    2 +-
 4 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/libavcodec/eval.c b/libavcodec/eval.c
index 637f495..0f9578d 100644
--- a/libavcodec/eval.c
+++ b/libavcodec/eval.c
@@ -370,9 +370,10 @@ static int verify_expr(AVExpr * e) {
     }
 }
 
-AVExpr *ff_parse_expr(const char *s, const char * const *const_name,
-               double (* const *func1)(void *, double), const char * const *func1_name,
-               double (* const *func2)(void *, double, double), const char * const *func2_name,
+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),
                void *log_ctx, int log_level_offset){
     Parser p;
     AVExpr *e = NULL;
@@ -414,11 +415,12 @@ double ff_eval_expr(AVExpr * e, const double *const_value, void *opaque) {
     return eval_expr(&p, e);
 }
 
-double ff_parse_and_eval_expr(const char *s, const double *const_value, const char * const *const_name,
-               double (* const *func1)(void *, double), const char * const *func1_name,
-               double (* const *func2)(void *, double, double), const char * const *func2_name,
+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, void *log_ctx, int log_level_offset){
-    AVExpr * e = ff_parse_expr(s, const_name, func1, func1_name, func2, func2_name, log_ctx, log_level_offset);
+    AVExpr * e = ff_parse_expr(s, const_name, func1_name, func1, func2_name, func2, log_ctx, log_level_offset);
     double d;
     if (!e) return NAN;
     d = ff_eval_expr(e, const_value, opaque);
@@ -440,12 +442,12 @@ static const char *const_names[]={
 };
 int main(void){
     int i;
-    printf("%f == 12.7\n", ff_parse_and_eval_expr("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_parse_and_eval_expr("80G/80Gi", const_values, const_names, NULL, NULL, NULL, NULL, NULL, NULL));
+    printf("%f == 12.7\n", ff_parse_and_eval_expr("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_names, const_values, NULL, NULL, NULL, NULL, NULL, NULL));
+    printf("%f == 0.931322575\n", ff_parse_and_eval_expr("80G/80Gi", const_names, const_values, NULL, NULL, NULL, NULL, NULL, NULL));
 
     for(i=0; i<1050; i++){
         START_TIMER
-            ff_parse_and_eval_expr("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL, NULL);
+            ff_parse_and_eval_expr("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_names, const_values, NULL, NULL, NULL, NULL, NULL, NULL);
         STOP_TIMER("ff_parse_and_eval_expr")
     }
     return 0;
diff --git a/libavcodec/eval.h b/libavcodec/eval.h
index 4effe76..6ffe7ae 100644
--- a/libavcodec/eval.h
+++ b/libavcodec/eval.h
@@ -33,41 +33,43 @@ typedef struct AVExpr AVExpr;
  * 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 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 logging context
  * @param log_level_offset log level offset applied to the global log
  * level when logging with log_ctx
  * @return the value of the expression
  */
-double ff_parse_and_eval_expr(const char *s, const double *const_value, const char * const *const_name,
-               double (* const *func1)(void *, double), const char * const *func1_name,
-               double (* const *func2)(void *, double, double), const char * const *func2_name,
+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, void *log_ctx, int log_level_offset);
 
 /**
  * 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 func2 NULL terminated array of function pointers for functions which take 2 arguments
  * @param log_ctx logging context
  * @param log_level_offset log level offset applied to the global log
  * level when logging with log_ctx
  * @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_expr(const char *s, const char * const *const_name,
-               double (* const *func1)(void *, double), const char * const *func1_name,
-               double (* const *func2)(void *, double, double), const char * const *func2_name,
+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),
                void *log_ctx, int log_level_offset);
 
 /**
diff --git a/libavcodec/opt.c b/libavcodec/opt.c
index 68546d7..3b2d2fc 100644
--- a/libavcodec/opt.c
+++ b/libavcodec/opt.c
@@ -155,7 +155,7 @@ int av_set_string3(void *obj, const char *name, const char *val, int alloc, cons
                 buf[i]= val[i];
             buf[i]=0;
 
-            d = ff_parse_and_eval_expr(buf, const_values, const_names, NULL, NULL, NULL, NULL, NULL, obj, AV_LOG_DEBUG - AV_LOG_QUIET);
+            d = ff_parse_and_eval_expr(buf, const_names, const_values, NULL, NULL, NULL, NULL, NULL, obj, AV_LOG_DEBUG - AV_LOG_QUIET);
             if(isnan(d)) {
                 const AVOption *o_named= av_find_opt(obj, buf, o->unit, 0, 0);
                 if(o_named && o_named->type == FF_OPT_TYPE_CONST)
diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c
index 5d3193c..af9cfb8 100644
--- a/libavcodec/ratecontrol.c
+++ b/libavcodec/ratecontrol.c
@@ -106,7 +106,7 @@ int ff_rate_control_init(MpegEncContext *s)
     };
     emms_c();
 
-    rcc->rc_eq_eval = ff_parse_expr(s->avctx->rc_eq ? s->avctx->rc_eq : "tex^qComp", const_names, func1, func1_names, NULL, NULL, s->avctx, AV_LOG_DEBUG - AV_LOG_QUIET);
+    rcc->rc_eq_eval = ff_parse_expr(s->avctx->rc_eq ? s->avctx->rc_eq : "tex^qComp", const_names, func1_names, func1, NULL, NULL, s->avctx, AV_LOG_DEBUG - AV_LOG_QUIET);
     if (!rcc->rc_eq_eval) {
         av_log(s->avctx, AV_LOG_ERROR, "Error parsing rc_eq \"%s\"\n", s->avctx->rc_eq);
         return -1;
-- 
1.7.0


--XOIedfhf+7KOe/yw--



More information about the ffmpeg-devel mailing list