Salome HOME
Improve sketch performance while moving entities
[modules/shaper.git] / src / SketchSolver / PlaneGCSSolver / PlaneGCSSolver_EntityWrapper.h
index 38c92198a494a3d8d08476be9bc18a5db407cd5f..b9a3981d075b73570e3bb8b5ccc6f8f70d790c95 100644 (file)
@@ -1,37 +1,41 @@
 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
 // File:    PlaneGCSSolver_EntityWrapper.h
-// Created: 14 Dec 2015
+// Created: 30 Nov 2015
 // Author:  Artem ZHIDKOV
 
 #ifndef PlaneGCSSolver_EntityWrapper_H_
 #define PlaneGCSSolver_EntityWrapper_H_
 
 #include <PlaneGCSSolver_Defs.h>
-#include <SketchSolver_IEntityWrapper.h>
+
+#include <ModelAPI_Attribute.h>
+#include <ModelAPI_Feature.h>
+
+#include <list>
+#include <memory>
 
 /**
- *  Wrapper providing operations with PlaneGCS entities (lines, circles and arcs).
+ *  Wrapper providing operations with entities regardless the solver.
  */
-class PlaneGCSSolver_EntityWrapper : public SketchSolver_IEntityWrapper
+class PlaneGCSSolver_EntityWrapper
 {
 public:
-  PlaneGCSSolver_EntityWrapper(const GCSCurvePtr theEntity);
-
-  /// \brief Return PlaneGCS geometric entity
-  const GCSCurvePtr& entity() const
-  { return myEntity; }
-  /// \brief Return PlaneGCS geometric entity to change
-  GCSCurvePtr& changeEntity()
-  { return myEntity; }
+  PlaneGCSSolver_EntityWrapper() : myExternal(false) {}
+  virtual ~PlaneGCSSolver_EntityWrapper() {}
 
   /// \brief Return type of current entity
-  virtual SketchSolver_EntityType type() const
-  { return myType; }
+  virtual SketchSolver_EntityType type() const = 0;
+
+  /// \brief Change flag indicating the entity cannot be changed in the solver
+  void setExternal(bool theExternal) { myExternal = theExternal; }
+  /// \brief Return the External flag
+  bool isExternal() const { return myExternal; }
 
 private:
-  SketchSolver_EntityType myType;
-  GCSCurvePtr myEntity;
+  bool myExternal;
 };
 
+typedef std::shared_ptr<PlaneGCSSolver_EntityWrapper> EntityWrapperPtr;
+
 #endif