Salome HOME
updated copyright message
[modules/shaper.git] / src / Selector / Selector_NExplode.h
index dc4d0064bd6d0f3b514f7ef01b284ffd54518ea4..9324e8e33b87f5f434b99356517c87082a876704 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2023  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef Selector_NExplode_H_
 #include "Selector.h"
 
 #include <TopoDS_Shape.hxx>
-#include <TopoDS_ListOfShape.hxx>
+
+#include <memory>
+
+class GeomAlgoAPI_NExplode;
 
 /// \class Selector_NExplode
 /// \ingroup DataModel
@@ -35,17 +37,22 @@ class Selector_NExplode
 {
  public:
    /// \brief Initializes the sorted list of shapes by the shapes list.
-   SELECTOR_EXPORT Selector_NExplode(const TopoDS_ListOfShape& theShapes);
+   SELECTOR_EXPORT Selector_NExplode(const TopoDS_ListOfShape& theShapes,
+                                     const bool theOldOrder = false);
    /// \brief Initializes the sorted list of shapes by the context shape and type of sub-shapes.
-   SELECTOR_EXPORT Selector_NExplode(const TopoDS_Shape& theShape, const TopAbs_ShapeEnum theType);
+   SELECTOR_EXPORT Selector_NExplode(const TopoDS_Shape& theShape,
+                                     const TopAbs_ShapeEnum theType,
+                                     const bool theOldOrder = false);
 
    /// Returns an index (started from one) of sub-shape in the sorted list. Returns 0 if not found.
    SELECTOR_EXPORT int index(const TopoDS_Shape& theSubShape);
    /// Returns a shape by an index (started from one). Returns null if not found.
-   SELECTOR_EXPORT TopoDS_Shape shape(const int theIndex);
+   /// Recompute the index if the old order was used. The value will contain the new ordered index.
+   SELECTOR_EXPORT TopoDS_Shape shape(int& theIndex);
 
 protected:
-  TopoDS_ListOfShape mySorted; ///< keepthe the ordered list of shapes
+  std::shared_ptr<GeomAlgoAPI_NExplode> mySorted; ///< keep the ordered list of shapes
+  bool myToBeReordered; ///< the list has to be reordered
 };
 
 #endif