mbxmlutils 1.3.0 Multi-Body XML Utils

pyeval.h
1 #ifndef _MBXMLUTILS_PYEVAL_H_
2 #define _MBXMLUTILS_PYEVAL_H_
3
4 #include "eval.h"
5 #include "pycppwrapper.h"
6 #include <boost/uuid/name_generator.hpp>
7
8 namespace MBXMLUtils {
9
14 class PyEval : public Eval {
15 friend class Eval;
16
17 protected:
19 PyEval(std::vector<boost::filesystem::path> *dependencies_=nullptr);
20 public:
22 ~PyEval() override;
23 static std::string getNameStatic() { return "python"; }
24 std::string getName() const override { return getNameStatic(); }
25 void addImport(const std::string &code, const xercesc::DOMElement *e) override;
26 bool valueIsOfType(const Value &value, ValueType type) const override;
27 std::map<boost::filesystem::path, std::pair<boost::filesystem::path, bool> >& requiredFiles() const override;
28 void convertIndex(Value &v, bool evalTo1Base) override;
29 std::string getStringRepresentation(const Value &x) const override;
30 protected:
31 Value createFunctionIndep(int dim) const override;
32 Value callFunction(const std::string &name, const std::vector<Value>& args) const override;
33 Value fullStringToValue(const std::string &str, const xercesc::DOMElement *e, bool skipRet=false) const override;
34 private:
35 double cast_double (const Value &value) const override;
36 std::vector<double> cast_vector_double (const Value &value) const override;
37 std::vector<std::vector<double> >cast_vector_vector_double (const Value &value) const override;
38 std::string cast_string (const Value &value) const override;
39 Value create_double (const double& v) const override;
40 Value create_vector_double (const std::vector<double>& v) const override;
41 Value create_vector_vector_double (const std::vector<std::vector<double> >& v) const override;
42 Value create_string (const std::string& v) const override;
43
44 Value createFunctionDep(const std::vector<Value>& v) const override;
45 Value createFunctionDep(const std::vector<std::vector<Value> >& v) const override;
46 Value createFunction(const std::vector<Value> &indeps, const Value &dep) const override;
47
48 std::string serializeFunction(const Value &x) const override;
49 static boost::uuids::name_generator uuidGen;
50 mutable std::map<boost::uuids::uuid, std::pair<int, PythonCpp::PyO>> byteCodeMap;
51 };
52
53 }
54
55 #endif
MBXMLUtils::PyEval::createFunction
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: pyeval.cc:710
MBXMLUtils::Eval
Definition: eval.h:76
MBXMLUtils::PyEval::~PyEval
~PyEval() override
Destructor.
MBXMLUtils::PyEval::createFunctionIndep
Value createFunctionIndep(int dim) const override
create a function independent variable. If dim == 0 a scalar is created else a vector.
Definition: pyeval.cc:244
MBXMLUtils::PyEval::addImport
void addImport(const std::string &code, const xercesc::DOMElement *e) override
Definition: pyeval.cc:281
MBXMLUtils::PyEval::requiredFiles
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: pyeval.cc:405
MBXMLUtils::PyEval::PyEval
PyEval(std::vector< boost::filesystem::path > *dependencies_=nullptr)
Constructor.
Definition: pyeval.cc:238
MBXMLUtils::PyEval
Definition: pyeval.h:14
MBXMLUtils::PyEval::convertIndex
void convertIndex(Value &v, bool evalTo1Base) override
Definition: pyeval.cc:738
MBXMLUtils::PyEval::getStringRepresentation
std::string getStringRepresentation(const Value &x) const override
Returns a evaluator specific string representation of x. This is only useful for display to the user.
Definition: pyeval.cc:769
MBXMLUtils::PyEval::createFunctionDep
Value createFunctionDep(const std::vector< Value > &v) const override
create a vector function dependent
MBXMLUtils::PyEval::getName
std::string getName() const override
Get the type of this evaluator.
Definition: pyeval.h:24
MBXMLUtils::PyEval::valueIsOfType
bool valueIsOfType(const Value &value, ValueType type) const override
Definition: pyeval.cc:379
MBXMLUtils::PyEval::callFunction
Value callFunction(const std::string &name, const std::vector< Value > &args) const override
Definition: pyeval.cc:449
MBXMLUtils::Eval::Value
std::shared_ptr< void > Value
Typedef for a shared value.
Definition: eval.h:91
MBXMLUtils::PyEval::fullStringToValue
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: pyeval.cc:462
MBXMLUtils::Eval::ValueType
ValueType
Definition: eval.h:82