1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: GeomAPI_ShapeExplorer.h
4 // Created: 5 June 2015
5 // Author: Dmitry Bobylev
7 #ifndef GeomAPI_ShapeExplorer_H_
8 #define GeomAPI_ShapeExplorer_H_
11 #include <GeomAPI_Shape.h>
13 /** \class GeomAPI_ShapeExplorer
15 * \brief This class is used to explore subshapes on shape.
17 class GeomAPI_ShapeExplorer : public GeomAPI_Interface
20 /// Default constructor. Creates an empty explorer, becomes usefull after Init.
22 GeomAPI_ShapeExplorer();
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] toFind shape type to find.
28 \param[in] toAvoid shape type to avoid.
31 GeomAPI_ShapeExplorer(const std::shared_ptr<GeomAPI_Shape>& theShape,
32 const GeomAPI_Shape::ShapeType toFind,
33 const GeomAPI_Shape::ShapeType toAvoid = GeomAPI_Shape::SHAPE);
35 /** \brief Resets this explorer. It is initialized to search on theShape, for shapes of type toFind,
36 * that are not part of a shape toAvoid. If the shape toAvoid is equal to GeomAPI_SHape::SHAPE,
37 * or if it is the same as, or less complex than the shape toFind it has no effect on the search.
38 \param[in] toFind shape type to find.
39 \param[in] toAvoid shape type to avoid.
42 void init(const std::shared_ptr<GeomAPI_Shape>& theShape,
43 const GeomAPI_Shape::ShapeType toFind,
44 const GeomAPI_Shape::ShapeType toAvoid = GeomAPI_Shape::SHAPE);
46 /// \return true if there are more shapes in the exploration.
50 /// Moves to the next Shape in the exploration or do nothing if there are no more shapes to explore.
54 /// \return the current shape in the exploration or empty pointer if this explorer has no more shapes to explore.
56 std::shared_ptr<GeomAPI_Shape> current();
58 /// Reinitialize the exploration with the original arguments.
62 /// \return the current depth of the exploration. 0 is the shape to explore itself.
66 /// Clears the content of the explorer. It will return False on more().