mbxmlutils  1.3.0
Multi-Body XML Utils
xmlflateval.h
1#ifndef _MBXMLUTILS_XMLFLATEVAL_H_
2#define _MBXMLUTILS_XMLFLATEVAL_H_
3
4#include "eval.h"
5
6namespace MBXMLUtils {
7
12class XMLFlatEval : public Eval {
13 friend class Eval;
14 protected:
15 XMLFlatEval(std::vector<boost::filesystem::path> *dependencies_=nullptr);
16 public:
17 ~XMLFlatEval() override;
18 static std::string getNameStatic() { return "xmlflat"; }
19 std::string getName() const override { return getNameStatic(); }
20 void addImport(const std::string &code, const xercesc::DOMElement *e, const std::string &action="") override;
21 bool valueIsOfType(const Value &value, ValueType type) const override;
22 std::map<boost::filesystem::path, std::pair<boost::filesystem::path, bool> >& requiredFiles() const override;
23 void convertIndex(Value &v, bool evalTo1Based) override {}
24 protected:
25 Value createFunctionIndep(int dim) const override;
26 Value callFunction(const std::string &name, const std::vector<Value>& args) const override;
27 Value fullStringToValue(const std::string &str, const xercesc::DOMElement *e, bool skipRet=false) const override;
28 private:
29 double cast_double (const Value &value) const override;
30 std::vector<double> cast_vector_double (const Value &value) const override;
31 std::vector<std::vector<double> >cast_vector_vector_double (const Value &value) const override;
32 std::string cast_string (const Value &value) const override;
33 Value create_double (const double& v) const override;
34 Value create_vector_double (const std::vector<double>& v) const override;
35 Value create_vector_vector_double (const std::vector<std::vector<double> >& v) const override;
36 Value create_string (const std::string& v) const override;
37
38 Value createFunctionDep(const std::vector<Value>& v) const override;
39 Value createFunctionDep(const std::vector<std::vector<Value> >& v) const override;
40 Value createFunction(const std::vector<Value> &indeps, const Value &dep) const override;
41
42 std::string serializeFunction(const Value &x) const override;
43};
44
45} // end namespace MBXMLUtils
46
47#endif
Definition: eval.h:76
ValueType
Definition: eval.h:82
std::shared_ptr< void > Value
Typedef for a shared value.
Definition: eval.h:91
Definition: xmlflateval.h:12
Value fullStringToValue(const std::string &str, const xercesc::DOMElement *e, bool skipRet=false) const override
evaluate the string str using the current parameters and return the result.
Definition: xmlflateval.cc:84
Value createFunctionDep(const std::vector< std::vector< Value > > &v) const override
create a matrix function dependent
Value createFunctionIndep(int dim) const override
create a function independent variable. If dim == 0 a scalar is created else a vector.
Definition: xmlflateval.cc:32
Value createFunction(const std::vector< Value > &indeps, const Value &dep) const override
create a Function with n independents and a dependent function (scalar, vector or matrix)
Definition: xmlflateval.cc:224
Value callFunction(const std::string &name, const std::vector< Value > &args) const override
Definition: xmlflateval.cc:80
void addImport(const std::string &code, const xercesc::DOMElement *e, const std::string &action="") override
Definition: xmlflateval.cc:36
std::string getName() const override
Get the type of this evaluator.
Definition: xmlflateval.h:19
void convertIndex(Value &v, bool evalTo1Based) override
Definition: xmlflateval.h:23
bool valueIsOfType(const Value &value, ValueType type) const override
Definition: xmlflateval.cc:40
std::map< boost::filesystem::path, std::pair< boost::filesystem::path, bool > > & requiredFiles() const override
return a list of all required files of the evaluator (excluding dependent files of libraries)
Definition: xmlflateval.cc:75
Value createFunctionDep(const std::vector< Value > &v) const override
create a vector function dependent