Salome HOME
Issue #1063: Problem of dynamic cast on Linux for Selection validators is solved
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_MakeShape.h
index 4082464af400eb496fead480e3019ab41d59aa2e..ea89fe89ede7807a76f8a2347c5cb96d53015ed8 100644 (file)
@@ -7,23 +7,30 @@
 #define GeomAlgoAPI_MakeShape_H_
 
 #include <GeomAPI_Shape.h>
-#include <memory>
 #include <GeomAlgoAPI.h>
 
+#include <list>
+#include <memory>
+
 /**\class GeomAlgoAPI_MakeShape
- * \ingroup DataModel
+ * \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();
+  /// Algo type enum
+  enum AlgoType {
+    MakeShape,
+    BOPAlgoBuilder
+  };
+
+public:
   /// Constructor by the already stored builder in the interface
-  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder);
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder, const AlgoType theAlgoType = MakeShape);
 
   /// Returns a shape built by the shape construction algorithm
-  GEOMALGOAPI_EXPORT const std::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 \a theShape
   GEOMALGOAPI_EXPORT virtual void generated(
@@ -33,14 +40,19 @@ public:
   GEOMALGOAPI_EXPORT virtual void modified(
     const std::shared_ptr<GeomAPI_Shape> theShape, ListOfShape& theHistory);
 
-  /// Returns whether the shape is an edge
+  /// Returns whether the shape is deleted
   GEOMALGOAPI_EXPORT virtual bool isDeleted(const std::shared_ptr<GeomAPI_Shape> theShape);
-  /// Initializes the algorithm by the builder stored in the interface
-  GEOMALGOAPI_EXPORT void init(void* theMkShape);
 
-  protected:
-  /// The resulting shape
-       std::shared_ptr<GeomAPI_Shape> myShape;
+protected:
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(){};
+
+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