annotate eval.h @ 11601:29fda2500178 libavcodec

Avoid the use of the symbol ff_expr_s for referencing AVExpr. This way we have to deal only with struct AVExpr and AVExpr, which is slightly less confusing as the association between the two symbols is obvious.
author stefano
date Sun, 11 Apr 2010 18:44:51 +0000
parents 192399381906
children da95280256b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
1 /*
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
2 * simple arithmetic expression evaluator
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
3 *
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
4 * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
5 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
6 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
7 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
12 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
16 * Lesser General Public License for more details.
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
17 *
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
21 */
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
22
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
23 /**
8718
e9d9d946f213 Use full internal pathname in doxygen @file directives.
diego
parents: 8320
diff changeset
24 * @file libavcodec/eval.h
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
25 * eval header.
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
26 */
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
27
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6354
diff changeset
28 #ifndef AVCODEC_EVAL_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6354
diff changeset
29 #define AVCODEC_EVAL_H
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
30
11601
29fda2500178 Avoid the use of the symbol ff_expr_s for referencing AVExpr.
stefano
parents: 11599
diff changeset
31 typedef struct AVExpr AVExpr;
11595
116f25bad5fb Move AVEvalExpr declaration at the beginning of the file, where it is
stefano
parents: 9886
diff changeset
32
4138
michael
parents: 4081
diff changeset
33 /**
michael
parents: 4081
diff changeset
34 * Parses and evaluates an expression.
4139
8772709e26d0 ministry of english grammar :) then->than
ods15
parents: 4138
diff changeset
35 * Note, this is significantly slower than ff_parse_eval()
4138
michael
parents: 4081
diff changeset
36 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
37 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
38 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
39 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
40 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
41 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
42 * @param error pointer to a char* which is set to an error message if something goes wrong
michael
parents: 4081
diff changeset
43 * @param const_value a zero terminated array of values for the identifers from const_name
michael
parents: 4081
diff changeset
44 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
45 * @return the value of the expression
michael
parents: 4081
diff changeset
46 */
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
47 double ff_eval2(const char *s, const double *const_value, const char * const *const_name,
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
48 double (**func1)(void *, double), const char **func1_name,
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
49 double (**func2)(void *, double, double), const char **func2_name,
6324
michael
parents: 5830
diff changeset
50 void *opaque, const char **error);
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
51
4138
michael
parents: 4081
diff changeset
52 /**
michael
parents: 4081
diff changeset
53 * Parses a expression.
michael
parents: 4081
diff changeset
54 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
55 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
56 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
57 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
58 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
59 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
60 * @param error pointer to a char* which is set to an error message if something goes wrong
11597
fce0ed54244c Rename ff_eval_free() to ff_free_expr().
stefano
parents: 11596
diff changeset
61 * @return AVExpr which must be freed with ff_free_expr() by the user when it is not needed anymore
4138
michael
parents: 4081
diff changeset
62 * NULL if anything went wrong
michael
parents: 4081
diff changeset
63 */
11596
e22a96273dc4 Rename AVEvalExpr to AVExpr, as suggested by Michael.
stefano
parents: 11595
diff changeset
64 AVExpr * ff_parse(const char *s, const char * const *const_name,
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
65 double (**func1)(void *, double), const char **func1_name,
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
66 double (**func2)(void *, double, double), const char **func2_name,
6324
michael
parents: 5830
diff changeset
67 const char **error);
4138
michael
parents: 4081
diff changeset
68 /**
michael
parents: 4081
diff changeset
69 * Evaluates a previously parsed expression.
michael
parents: 4081
diff changeset
70 * @param const_value a zero terminated array of values for the identifers from ff_parse const_name
michael
parents: 4081
diff changeset
71 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
72 * @return the value of the expression
michael
parents: 4081
diff changeset
73 */
11596
e22a96273dc4 Rename AVEvalExpr to AVExpr, as suggested by Michael.
stefano
parents: 11595
diff changeset
74 double ff_parse_eval(AVExpr * e, const double *const_value, void *opaque);
11597
fce0ed54244c Rename ff_eval_free() to ff_free_expr().
stefano
parents: 11596
diff changeset
75
11599
192399381906 Doxument ff_free_expr().
stefano
parents: 11597
diff changeset
76 /**
192399381906 Doxument ff_free_expr().
stefano
parents: 11597
diff changeset
77 * Frees a parsed expression previously created with ff_parse().
192399381906 Doxument ff_free_expr().
stefano
parents: 11597
diff changeset
78 */
11597
fce0ed54244c Rename ff_eval_free() to ff_free_expr().
stefano
parents: 11596
diff changeset
79 void ff_free_expr(AVExpr *e);
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
80
9886
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
81 /**
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
82 * Parses the string in numstr and returns its value as a double. If
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
83 * the string is empty, contains only whitespaces, or does not contain
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
84 * an initial substring that has the expected syntax for a
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
85 * floating-point number, no conversion is performed. In this case,
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
86 * returns a value of zero and the value returned in tail is the value
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
87 * of numstr.
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
88 *
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
89 * @param numstr a string representing a number, may contain one of
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
90 * the International System number postfixes, for example 'K', 'M',
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
91 * 'G'. If 'i' is appended after the postfix, powers of 2 are used
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
92 * instead of powers of 10. The 'B' postfix multiplies the value for
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
93 * 8, and can be appended after another postfix or used alone. This
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
94 * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
95 * @param tail if non-NULL puts here the pointer to the char next
3207f2314192 Rewrite doxy for av_strtod().
stefano
parents: 9880
diff changeset
96 * after the last parsed character
9880
e934c5f8f4a9 Export av_strtod() to eval.h.
stefano
parents: 8718
diff changeset
97 */
e934c5f8f4a9 Export av_strtod() to eval.h.
stefano
parents: 8718
diff changeset
98 double av_strtod(const char *numstr, char **tail);
e934c5f8f4a9 Export av_strtod() to eval.h.
stefano
parents: 8718
diff changeset
99
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6354
diff changeset
100 #endif /* AVCODEC_EVAL_H */