1#ifndef _MBXMLUTILS_PYEVAL_H_
2#define _MBXMLUTILS_PYEVAL_H_
5#include "pycppwrapper.h"
6#include <boost/uuid/name_generator.hpp>
19 PyEval(std::vector<boost::filesystem::path> *dependencies_=
nullptr);
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,
const std::string &action=
"")
override;
27 std::map<boost::filesystem::path, std::pair<boost::filesystem::path, bool> >&
requiredFiles()
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;
40 double cast_double (
const Value &value)
const override;
41 std::vector<double> cast_vector_double (
const Value &value)
const override;
42 std::vector<std::vector<double> >cast_vector_vector_double (
const Value &value)
const override;
43 std::string cast_string (
const Value &value)
const override;
44 Value create_double (
const double& v)
const override;
45 Value create_vector_double (
const std::vector<double>& v)
const override;
46 Value create_vector_vector_double (
const std::vector<std::vector<double> >& v)
const override;
47 Value create_string (
const std::string& v)
const override;
53 std::string serializeFunction(
const Value &x)
const override;
54 static boost::uuids::name_generator uuidGen;
55 mutable std::map<boost::uuids::uuid, std::pair<int, PythonCpp::PyO>> byteCodeMap;
ValueType
Definition: eval.h:82
std::shared_ptr< void > Value
Typedef for a shared value.
Definition: eval.h:91
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:861
Value createFunctionDep(const std::vector< std::vector< Value > > &v) const override
create a matrix function dependent
void convertIndex(Value &v, bool evalTo1Base) override
Definition: pyeval.cc:829
Value createFunctionDep(const std::vector< Value > &v) const override
create a vector function dependent
PyEval(std::vector< boost::filesystem::path > *dependencies_=nullptr)
Constructor.
Definition: pyeval.cc:250
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:799
void addImport(const std::string &code, const xercesc::DOMElement *e, const std::string &action="") override
Definition: pyeval.cc:299
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:427
Value createFunctionIndep(int dim) const override
create a function independent variable. If dim == 0 a scalar is created else a vector.
Definition: pyeval.cc:261
bool valueIsOfType(const Value &value, ValueType type) const override
Definition: pyeval.cc:414
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:504
Value callFunction(const std::string &name, const std::vector< Value > &args) const override
Definition: pyeval.cc:490
std::string getName() const override
Get the type of this evaluator.
Definition: pyeval.h:24
~PyEval() override
Destructor.
Definition: pyeval.cc:255
Definition: pycppwrapper.h:98