Newer
Older

Michal Kravcenko
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
* DESCRIPTION OF THE FILE
*
* @author Michal Kravčenko
* @date 4.9.18 -
*/
#include "ExprtkWrapper.h"
ExprtkWrapper::ExprtkWrapper( std::string expression_string ) {
this->symbol_table = new symbol_table_t( );
symbol_table->add_variable("x", this->t);
symbol_table->add_variable("y", this->y);
symbol_table->add_variable("z", this->z);
symbol_table->add_variable("t", this->t);
this->expression = new expression_t( );
this->expression->register_symbol_table( *this->symbol_table );
this->parser = new parser_t( );
parser->compile(expression_string, *this->expression );
}
ExprtkWrapper::ExprtkWrapper( ) {
}
ExprtkWrapper::~ExprtkWrapper() {
}
double ExprtkWrapper::eval(double x1, double x2, double x3, double x4) {
this->x = x1;
this->y = x2;
this->z = x3;
this->t = x4;
return this->expression->value();
}
double ExprtkWrapper::eval(std::vector<double> &p) {
if(p.size() > 0){
this->x = p[0];
}
if(p.size() > 1){
this->y = p[1];
}
if(p.size() > 2){
this->z = p[2];
}
if(p.size() > 3){
this->t = p[3];
}
return this->expression->value();
}