Salome HOME
#1182 point is attched to Sketch Constraint line
[modules/shaper.git] / src / GeomAPI / GeomAPI_ShapeExplorer.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        GeomAPI_ShapeExplorer.h
4 // Created:     5 June 2015
5 // Author:      Dmitry Bobylev
6
7 #ifndef GeomAPI_ShapeExplorer_H_
8 #define GeomAPI_ShapeExplorer_H_
9
10 #include <GeomAPI.h>
11 #include <GeomAPI_Shape.h>
12
13 /** \class GeomAPI_ShapeExplorer
14  *  \ingroup DataModel
15  *  \brief This class is used to explore subshapes on shape.
16  */
17 class GeomAPI_ShapeExplorer : public GeomAPI_Interface
18 {
19 public:
20   /// Default constructor. Creates an empty explorer, becomes usefull after Init.
21   GEOMAPI_EXPORT
22   GeomAPI_ShapeExplorer();
23
24   /** \brief Constructs an explorer to search on theShape, for shapes of type toFind,
25    *  that are not part of a shape toAvoid. If the shape toAvoid is equal to GeomAPI_SHape::SHAPE,
26    *  or if it is the same as, or less complex than the shape toFind it has no effect on the search.
27    *  \param[in] theShape shape to explore.
28    *  \param[in] toFind shape type to find.
29    *  \param[in] toAvoid shape type to avoid.
30    */
31   GEOMAPI_EXPORT
32   GeomAPI_ShapeExplorer(const std::shared_ptr<GeomAPI_Shape>& theShape,
33                         const GeomAPI_Shape::ShapeType toFind,
34                         const GeomAPI_Shape::ShapeType toAvoid = GeomAPI_Shape::SHAPE);
35
36   /** \brief Resets this explorer. It is initialized to search on theShape, for shapes of type toFind,
37    *  that are not part of a shape toAvoid. If the shape toAvoid is equal to GeomAPI_SHape::SHAPE,
38    *  or if it is the same as, or less complex than the shape toFind it has no effect on the search.
39    *  \param[in] theShape shape to explore.
40    *  \param[in] toFind shape type to find.
41    *  \param[in] toAvoid shape type to avoid.
42    */
43   GEOMAPI_EXPORT
44   void init(const std::shared_ptr<GeomAPI_Shape>& theShape,
45             const GeomAPI_Shape::ShapeType toFind,
46             const GeomAPI_Shape::ShapeType toAvoid = GeomAPI_Shape::SHAPE);
47
48   /// \return true if there are more shapes in the exploration.
49   GEOMAPI_EXPORT
50   bool more() const;
51
52   /// Moves to the next Shape in the exploration or do nothing if there are no more shapes to explore.
53   GEOMAPI_EXPORT
54   void next();
55
56   /// \return the current shape in the exploration or empty pointer if this explorer has no more shapes to explore.
57   GEOMAPI_EXPORT
58   std::shared_ptr<GeomAPI_Shape> current();
59
60   /// Reinitialize the exploration with the original arguments.
61   GEOMAPI_EXPORT
62   void reinit();
63
64   /// \return the current depth of the exploration. 0 is the shape to explore itself.
65   GEOMAPI_EXPORT
66   int depth() const;
67
68   /// Clears the content of the explorer. It will return False on more().
69   GEOMAPI_EXPORT
70   void clear();
71
72 };
73
74 #endif