Salome HOME
23033: EDF 10568 SMESH: wrong header when exporting 2D to gmf
[modules/smesh.git] / src / SMESH / SMESH_Algo.hxx
index 8aeaf7bb67636f791f51f7a2ac0ab62f5aef2aeb..3462f0a0db212570b83314350624f59ed18981a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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
@@ -138,6 +138,8 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
     * \param aShape - the shape
     * \param aStatus - check result
     * \retval bool - true if hypothesis is well defined
+    *
+    * Textual description of a problem can be stored in _comment field.
    */
   virtual bool CheckHypothesis(SMESH_Mesh&                          aMesh,
                                const TopoDS_Shape&                  aShape,
@@ -218,13 +220,12 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
                        const TopoDS_Shape & aShape,
                        const bool           ignoreAuxiliary=true) const;
   /*!
-   * \brief Make the filter recognize only compatible hypotheses
-   * \param theFilter - the filter to initialize
-   * \param ignoreAuxiliary - make filter ignore compatible auxiliary hypotheses
-   * \retval bool - true if the algo has compatible hypotheses
+   * \brief Returns the filter recognizing only compatible hypotheses
+   *  \param ignoreAuxiliary - make filter ignore compatible auxiliary hypotheses
+   *  \retval SMESH_HypoFilter* - the filter that can be NULL
    */
-  bool InitCompatibleHypoFilter( SMESH_HypoFilter & theFilter,
-                                 const bool         ignoreAuxiliary) const;
+  const SMESH_HypoFilter* GetCompatibleHypoFilter(const bool ignoreAuxiliary) const;
+
   /*!
    * \brief Just return false as the algorithm does not hold parameters values
    */
@@ -322,12 +323,14 @@ public:
    * \param theEdge - The geometrical edge of interest
    * \param theNodes - The resulting map
    * \param ignoreMediumNodes - to store medium nodes of quadratic elements or not
+   * \param typeToCheck - type of elements to check for medium nodes
    * \retval bool - false if not all parameters are OK
    */
   static bool GetSortedNodesOnEdge(const SMESHDS_Mesh*                        theMesh,
                                    const TopoDS_Edge&                         theEdge,
                                    const bool                                 ignoreMediumNodes,
-                                   std::map< double, const SMDS_MeshNode* > & theNodes);
+                                   std::map< double, const SMDS_MeshNode* > & theNodes,
+                                   const SMDSAbs_ElementType                  typeToCheck = SMDSAbs_All);
   /*!
    * Moved to SMESH_MesherHelper
    */
@@ -408,9 +411,12 @@ public:
 
 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;
+  
 
   // Algo features influencing which Compute() and how is called:
   // in what turn and with what input shape.
@@ -419,7 +425,7 @@ protected:
   bool _requireDiscreteBoundary;// GetDim()-1 mesh must be present. Default TRUE
   bool _requireShape;           // work with GetDim()-1 mesh bound to geom only. Default TRUE
   bool _supportSubmeshes;       // if !_requireDiscreteBoundary. Default FALSE
-  bool _neededLowerHyps[4];     // hyp dims needed by algo that !NeedDiscreteBoundary(). Df. FALSE
+  bool _neededLowerHyps[4];     // hyp dims needed by algo that !_requireDiscreteBoundary. Df. FALSE
 
   // indicates if quadratic mesh creation is required,
   // is usually set like this: _quadraticMesh = SMESH_MesherHelper::IsQuadraticSubMesh(shape)