annotate eval.h @ 9473:e38284cd69dc libavcodec

Use memcpy instead of the very inefficient bytecopy where both are correct (i.e. no overlap of src and dst is possible).
author reimar
date Fri, 17 Apr 2009 17:20:48 +0000
parents e9d9d946f213
children e934c5f8f4a9
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
4138
michael
parents: 4081
diff changeset
31 /**
michael
parents: 4081
diff changeset
32 * Parses and evaluates an expression.
4139
8772709e26d0 ministry of english grammar :) then->than
ods15
parents: 4138
diff changeset
33 * Note, this is significantly slower than ff_parse_eval()
4138
michael
parents: 4081
diff changeset
34 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
35 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
36 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
37 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
38 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
39 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
40 * @param error pointer to a char* which is set to an error message if something goes wrong
michael
parents: 4081
diff changeset
41 * @param const_value a zero terminated array of values for the identifers from const_name
michael
parents: 4081
diff changeset
42 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
43 * @return the value of the expression
michael
parents: 4081
diff changeset
44 */
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
45 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
46 double (**func1)(void *, double), const char **func1_name,
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
47 double (**func2)(void *, double, double), const char **func2_name,
6324
michael
parents: 5830
diff changeset
48 void *opaque, const char **error);
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
49
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
50 typedef struct ff_expr_s AVEvalExpr;
4138
michael
parents: 4081
diff changeset
51
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
5129
0244bba24b43 misc typo fixes
diego
parents: 4889
diff changeset
61 * @return AVEvalExpr which must be freed with ff_eval_free 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 */
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
64 AVEvalExpr * 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 */
8320
0de488aa4fb0 Add a few const qualifiers in appropriate places.
diego
parents: 7837
diff changeset
74 double ff_parse_eval(AVEvalExpr * e, const double *const_value, void *opaque);
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
75 void ff_eval_free(AVEvalExpr * e);
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
76
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6354
diff changeset
77 #endif /* AVCODEC_EVAL_H */