]> git.sesse.net Git - vlc/blob - modules/visualization/galaktos/eval.h
60ae143d63dec717d732231809a66a30e49f955c
[vlc] / modules / visualization / galaktos / eval.h
1 /* eval.h: evaluation functions of expressions */
2 #ifndef EVAL_H
3 #define EVAL_H
4 #include "func_types.h"
5 #include "param_types.h"
6
7 #define VAL_T 1
8 #define PREFUN_T 3
9 #define TREE_T 4
10 #define NONE_T 0
11
12
13 #define CONSTANT_TERM_T 0
14 #define PARAM_TERM_T 1
15
16 #define INFIX_ADD 0
17 #define INFIX_MINUS 1
18 #define INFIX_MOD 2
19 #define INFIX_DIV 3
20 #define INFIX_MULT 4
21 #define INFIX_OR 5
22 #define INFIX_AND 6
23
24 //#define EVAL_DEBUG 
25
26
27 inline double eval_gen_expr(gen_expr_t * gen_expr);
28 inline gen_expr_t * opt_gen_expr(gen_expr_t * gen_expr, int ** param_list);
29
30 gen_expr_t * const_to_expr(double val);
31 gen_expr_t * param_to_expr(struct PARAM_T * param);
32 gen_expr_t * prefun_to_expr(double (*func_ptr)(), gen_expr_t ** expr_list, int num_args);
33
34 tree_expr_t * new_tree_expr(infix_op_t * infix_op, gen_expr_t * gen_expr, tree_expr_t * left, tree_expr_t * right);
35 gen_expr_t * new_gen_expr(int type, void * item);
36 val_expr_t * new_val_expr(int type, term_t term);
37
38 int free_gen_expr(gen_expr_t * gen_expr);
39 int free_prefun_expr(prefun_expr_t * prefun_expr);
40 int free_tree_expr(tree_expr_t * tree_expr);
41 int free_val_expr(val_expr_t * val_expr);
42
43 infix_op_t * new_infix_op(int type, int precedence);
44 int init_infix_ops();
45 int destroy_infix_ops();
46 void reset_engine_vars();
47
48 gen_expr_t * clone_gen_expr(gen_expr_t * gen_expr);
49 tree_expr_t * clone_tree_expr(tree_expr_t * tree_expr);
50 val_expr_t * clone_val_expr(val_expr_t * val_expr);
51 prefun_expr_t * clone_prefun_expr(prefun_expr_t * prefun_expr);
52
53
54
55 #endif