Salome HOME
Issue #1063: Problem of dynamic cast on Linux for Selection validators is solved
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_MakeShape.h
index 4fa0ef0a13522ec6d794db8e62369a56c31ca740..ea89fe89ede7807a76f8a2347c5cb96d53015ed8 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        GeomAlgoAPI_MakeShape.h
 // Created:     17 Oct 2014
 // Author:      Sergey ZARITCHNY
@@ -5,39 +7,52 @@
 #define GeomAlgoAPI_MakeShape_H_
 
 #include <GeomAPI_Shape.h>
-#include <boost/shared_ptr.hpp>
 #include <GeomAlgoAPI.h>
-//#include <BRepBuilderAPI_MakeShape.hxx>
+
+#include <list>
+#include <memory>
+
 /**\class GeomAlgoAPI_MakeShape
- * \ingroup DataModel
- * \Interface to the root class of all topological shapes constructions
+ * \ingroup DataAlgo
+ * \brief Interface to the root class of all topological shapes constructions
  */
 class GeomAlgoAPI_MakeShape : public GeomAPI_Interface
 {
- public:
-   /// Constructor
-  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape();
+public:
+  /// Algo type enum
+  enum AlgoType {
+    MakeShape,
+    BOPAlgoBuilder
+  };
 
-  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder);
+public:
+  /// Constructor by the already stored builder in the interface
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder, const AlgoType theAlgoType = MakeShape);
 
   /// Returns a shape built by the shape construction algorithm
-  GEOMALGOAPI_EXPORT const boost::shared_ptr<GeomAPI_Shape>  shape() const;
+  GEOMALGOAPI_EXPORT virtual const std::shared_ptr<GeomAPI_Shape> shape() const;
 
-  /// Returns the  list   of shapes generated   from the shape <theShape>
+  /// Returns the list of shapes generated from the shape \a theShape
   GEOMALGOAPI_EXPORT virtual void generated(
-    const boost::shared_ptr<GeomAPI_Shape> theShape, ListOfShape& theHistory);
+    const std::shared_ptr<GeomAPI_Shape> theShape, ListOfShape& theHistory);
 
-  /// Returns the  list   of shapes modified   from the shape <theShape>
+  /// Returns the  list of shapes modified from the shape \a theShape
   GEOMALGOAPI_EXPORT virtual void modified(
-    const boost::shared_ptr<GeomAPI_Shape> theShape, ListOfShape& theHistory);
+    const std::shared_ptr<GeomAPI_Shape> theShape, ListOfShape& theHistory);
 
-  /// Returns whether the shape is an edge
-  GEOMALGOAPI_EXPORT virtual bool isDeleted(const boost::shared_ptr<GeomAPI_Shape> theShape);
+  /// Returns whether the shape is deleted
+  GEOMALGOAPI_EXPORT virtual bool isDeleted(const std::shared_ptr<GeomAPI_Shape> theShape);
 
-  GEOMALGOAPI_EXPORT void init(void* theMkShape);
+protected:
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(){};
 
-  protected:
-       boost::shared_ptr<GeomAPI_Shape> myShape;
+protected:
+  GeomAlgoAPI_MakeShape::AlgoType myAlgoType; ///< Type of make shape algo.
+  std::shared_ptr<GeomAPI_Shape> myShape; ///< Resulting shape.
+  std::shared_ptr<GeomAPI_Shape> myWire; ///< Wire for pipe algo.
+  std::shared_ptr<GeomAPI_Shape> myBaseShape; ///< Base shape of algo.
 };
 
+typedef std::list<std::shared_ptr<GeomAlgoAPI_MakeShape> > ListOfMakeShape;
+
 #endif