1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
3 // File: ParametersPlugin_Parameter.cpp
4 // Created: 23 MArch 2015
7 #include "ParametersPlugin_Parameter.h"
8 #include <ParametersPlugin_PyInterp.h>
10 #include <ModelAPI_AttributeString.h>
11 #include <ModelAPI_ResultParameter.h>
12 #include <ModelAPI_AttributeDouble.h>
15 ParametersPlugin_Parameter::ParametersPlugin_Parameter()
17 myInterp = new ParametersPlugin_PyInterp();
18 myInterp->initialize();
21 ParametersPlugin_Parameter::~ParametersPlugin_Parameter()
26 void ParametersPlugin_Parameter::initAttributes()
28 data()->addAttribute(ParametersPlugin_Parameter::VARIABLE_ID(),
29 ModelAPI_AttributeString::typeId());
30 data()->addAttribute(ParametersPlugin_Parameter::EXPRESSION_ID(),
31 ModelAPI_AttributeString::typeId());
34 void ParametersPlugin_Parameter::execute()
36 std::string anExpression = string(ParametersPlugin_Parameter::EXPRESSION_ID())->value();
37 if(anExpression.empty())
39 ResultParameterPtr aParameterResult = document()->createParameter(data());
40 //AttributeDoublePtr anAttr = aParameterResult->data()->real(ModelAPI_ResultParameter::VALUE());
42 double aValue = evaluate(anExpression);
43 //anAttr->setValue(aValue);
44 setResult(aParameterResult);
48 double ParametersPlugin_Parameter::evaluate(std::string theExpression)
50 std::list<std::string> anExprParams = myInterp->compile(theExpression);
51 // find expression's params in the model
53 // myInterp->extendLocalContext();
55 return myInterp->evaluate(theExpression, outError);