Salome HOME
Copyright update 2022
[modules/smesh.git] / src / SMESH / SMESH_Algo.hxx
index e35a47120a5ed43ac99bc37d1ccdaf92f8a6df3a..3beb89ae12c68c5e97c698bf46df9eaec4d48fac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -36,6 +36,7 @@
 #include "SMESH_Hypothesis.hxx"
 
 #include <GeomAbs_Shape.hxx>
+#include <TopoDS_Shape.hxx>
 
 #include <string>
 #include <vector>
@@ -59,8 +60,8 @@ class TopoDS_Vertex;
 class TopoDS_Wire;
 class gp_XYZ;
 
-typedef std::map< SMESH_subMesh*, std::vector<int> >           MapShapeNbElems;
-typedef std::map< SMESH_subMesh*, std::vector<int> >::iterator MapShapeNbElemsItr;
+typedef std::map< SMESH_subMesh*, std::vector<smIdType> >           MapShapeNbElems;
+typedef std::map< SMESH_subMesh*, std::vector<smIdType> >::iterator MapShapeNbElemsItr;
 
 // ==================================================================================
 /*!
@@ -89,10 +90,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
     std::set<SMDSAbs_GeometryType> _outElemTypes; // produced types of mesh elements
     std::string                    _label;        // GUI type name
 
+    Features(): _dim( -1 ) {}
     bool IsCompatible( const Features& algo2 ) const;
   };
   /*!
-   * \brief Returns a structure describing algorithm features
+   * \brief Return a structure describing algorithm features
    */
   static const Features& GetFeatures( const std::string& algoType );
   const Features&        GetFeatures() const { return GetFeatures( _name ); }
@@ -126,7 +128,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
   virtual std::istream & LoadFrom(std::istream & load);
 
   /*!
-   * \brief Returns all types of compatible hypotheses
+   * \brief Return all types of compatible hypotheses
    */
   const std::vector < std::string > & GetCompatibleHypothesis();
 
@@ -195,7 +197,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
                         MapShapeNbElems& aResMap) = 0;
 
   /*!
-   * \brief Returns a list of compatible hypotheses used to mesh a shape
+   * \brief Return a list of compatible hypotheses used to mesh a shape
     * \param aMesh - the mesh 
     * \param aShape - the shape
     * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list
@@ -212,22 +214,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
                     const TopoDS_Shape & aShape,
                     const bool           ignoreAuxiliary=true) const;
   /*!
-   * \brief Returns a list of compatible hypotheses assigned to a shape in a mesh
-    * \param aMesh - the mesh 
-    * \param aShape - the shape
-    * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list
-    * \retval const std::list <const SMESHDS_Hypothesis*> - hypotheses list
-   * 
-   *  List the relevant hypothesis associated to the shape. Relevant hypothesis
-   *  have a name (type) listed in the algorithm. Hypothesis associated to
-   *  father shape -are not- taken into account (see GetUsedHypothesis)
+   * \brief Return sub-shape to which hypotheses returned by GetUsedHypothesis() are assigned
    */
-  const std::list <const SMESHDS_Hypothesis *> &
-  GetAppliedHypothesis(SMESH_Mesh &         aMesh,
-                       const TopoDS_Shape & aShape,
-                       const bool           ignoreAuxiliary=true) const;
+  virtual const std::list < TopoDS_Shape > & GetAssignedShapes() const;
   /*!
-   * \brief Returns the filter recognizing only compatible hypotheses
+   * \brief Return the filter recognizing only compatible hypotheses
    *  \param ignoreAuxiliary - make filter ignore compatible auxiliary hypotheses
    *  \retval SMESH_HypoFilter* - the filter that can be NULL
    */
@@ -348,7 +339,7 @@ public:
    */
   static double EdgeLength(const TopoDS_Edge & E);
 
-  int NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W);
+  smIdType NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W);
 
   /*!
    * \brief Return continuity of two edges
@@ -441,8 +432,8 @@ protected:
   const SMESH_HypoFilter *              _compatibleAllHypFilter;
   const SMESH_HypoFilter *              _compatibleNoAuxHypFilter;
   std::vector<std::string>              _compatibleHypothesis;
-  std::list<const SMESHDS_Hypothesis *> _appliedHypList;
   std::list<const SMESHDS_Hypothesis *> _usedHypList;
+  std::list<TopoDS_Shape>               _assigedShapeList; // _usedHypList assigned to
   
 
   // Algo features influencing which Compute() and how is called: