Salome HOME
Fix for issue #562 : correct update by dependencies in the parameters
[modules/shaper.git] / src / ParametersPlugin / ParametersPlugin_Parameter.h
index e7574fd2a758d943fcafbcbabfa833de9c5545f5..c348d0f733d257d7bb1820e2a167b668cd769249 100644 (file)
 #include "ParametersPlugin.h"
 #include <ModelAPI_Feature.h>
 
+#include <memory>
+
+class ParametersPlugin_PyInterp;
+
 class ParametersPlugin_Parameter : public ModelAPI_Feature
 {
  public:
+  virtual ~ParametersPlugin_Parameter();
+
   /// Extrusion kind
   inline static const std::string& ID()
   {
-    static const std::string MY_EXTRUSION_ID("Parameter");
-    return MY_EXTRUSION_ID;
+    static const std::string MY_PARAMETER_ID("Parameter");
+    return MY_PARAMETER_ID;
   }
   /// attribute name of references sketch entities list, it should contain a sketch result or
   /// a pair a sketch result to sketch face
@@ -34,6 +40,13 @@ class ParametersPlugin_Parameter : public ModelAPI_Feature
     return MY_EXPRESSION_ID;
   }
 
+  /// list of references to the arguments of this expression
+  inline static const std::string& ARGUMENTS_ID()
+  {
+    static const std::string MY_VARIABLE_ID("arguments");
+    return MY_VARIABLE_ID;
+  }
+
   /// Returns the kind of a feature
   PARAMETERSPLUGIN_EXPORT virtual const std::string& getKind()
   {
@@ -41,14 +54,27 @@ class ParametersPlugin_Parameter : public ModelAPI_Feature
     return MY_KIND;
   }
 
+  /// Pre-execution is not needed for parameter
+  PARAMETERSPLUGIN_EXPORT virtual bool isPreviewNeeded() const;
+
   /// Creates a new part document if needed
   PARAMETERSPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
   PARAMETERSPLUGIN_EXPORT virtual void initAttributes();
 
+  PARAMETERSPLUGIN_EXPORT virtual bool isInHistory(); //false
+
+  PARAMETERSPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
+
   /// Use plugin manager for features creation
   ParametersPlugin_Parameter();
+
+ protected:
+  double evaluate(const std::string& theExpression, std::string& theError);
+
+ private:
+  std::shared_ptr<ParametersPlugin_PyInterp> myInterp;
 };
 
 #endif