Salome HOME
Regression of BelongToGeom on Debian-6
[modules/smesh.git] / src / SMESH / SMESH_MesherHelper.hxx
index 9e8d82958744f6c1d7be562d407f50c0c6ef2eb7..8c598fb62ffeecdb5b0bd14619d60fa9f422ad15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -30,8 +30,6 @@
 #include "SMESH_SMESH.hxx"
 
 #include "SMESH_MeshEditor.hxx" // needed for many meshers
-#include <SMDS_MeshNode.hxx>
-#include <SMDS_QuadraticEdge.hxx>
 
 #include <Geom_Surface.hxx>
 #include <ShapeAnalysis_Surface.hxx>
 #include <map>
 #include <vector>
 
-class GeomAPI_ProjectPointOnSurf;
 class GeomAPI_ProjectPointOnCurve;
+class GeomAPI_ProjectPointOnSurf;
+class SMDS_MeshNode;
+class SMESHDS_Hypothesis;
+class SMESH_Gen;
 class SMESH_ProxyMesh;
 
 typedef std::map<SMESH_TLink, const SMDS_MeshNode*>           TLinkNodeMap;
@@ -248,12 +249,12 @@ public:
   // constructor
   SMESH_MesherHelper(SMESH_Mesh& theMesh);
 
-  SMESH_Gen*    GetGen() const { return GetMesh()->GetGen(); }
+  SMESH_Gen*    GetGen() const;
     
   SMESH_Mesh*   GetMesh() const { return myMesh; }
     
-  SMESHDS_Mesh* GetMeshDS() const { return GetMesh()->GetMeshDS(); }
-    
+  SMESHDS_Mesh* GetMeshDS() const;
+
   /*!
    * Check submesh for given shape: if all elements on this shape are quadratic,
    * quadratic elements will be created. Also fill myTLinkNodeMap
@@ -317,6 +318,11 @@ public:
    */
   const TopoDS_Shape& GetSubShape() const  { return myShape; }
 
+  /*!
+   * \brief Convert a shape to its index in the SMESHDS_Mesh
+   */
+  int ShapeToIndex( const TopoDS_Shape& S ) const;
+
   /*!
    * Creates a node (!Note ID before u=0.,v0.)
    */
@@ -532,14 +538,14 @@ public:
   /*!
    * \brief Return a cached ShapeAnalysis_Surface of a FACE
    */
-  Handle(ShapeAnalysis_Surface) GetSurface(const TopoDS_Face& F )
+  Handle(ShapeAnalysis_Surface) GetSurface(const TopoDS_Face& F ) const;
 
   /*!
    * \brief Check if shape is a degenerated edge or it's vertex
-    * \param subShape - edge or vertex index in SMESHDS
-    * \retval bool - true if subShape is a degenerated shape
-    *
-    * It works only if IsQuadraticSubMesh() or SetSubShape() has been called
+    \param subShape - edge or vertex index in SMESHDS
+    \retval bool - true if subShape is a degenerated shape
+   *
+   * It works only if IsQuadraticSubMesh() or SetSubShape() has been called
    */
   bool IsDegenShape(const int subShape) const
   { return myDegenShapeIds.find( subShape ) != myDegenShapeIds.end(); }
@@ -569,7 +575,7 @@ public:
     * Seam shape has two 2D alternative represenations on the face
    */
   bool IsSeamShape(const TopoDS_Shape& subShape) const
-  { return IsSeamShape( GetMeshDS()->ShapeToIndex( subShape )); }
+  { return IsSeamShape( ShapeToIndex( subShape )); }
   /*!
    * \brief Return true if an edge or a vertex encounters twice in face wire
    *  \param subShape - Id of edge or vertex
@@ -581,7 +587,7 @@ public:
    *  \param subShape - edge or vertex
    */
   bool IsRealSeam(const TopoDS_Shape& subShape) const
-  { return IsRealSeam( GetMeshDS()->ShapeToIndex( subShape)); }
+  { return IsRealSeam( ShapeToIndex( subShape )); }
   /*!
    * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape()
    *        has a seam edge, i.e. an edge that has two parametric representations
@@ -684,6 +690,8 @@ public:
   
   virtual ~SMESH_MesherHelper();
 
+  static void WriteShape(const TopoDS_Shape& s);
+
  protected:
 
   /*!
@@ -739,7 +747,7 @@ public:
   typedef std::map< int, Handle(ShapeAnalysis_Surface)> TID2Surface;
   typedef std::map< int, GeomAPI_ProjectPointOnSurf* >  TID2ProjectorOnSurf;
   typedef std::map< int, GeomAPI_ProjectPointOnCurve* > TID2ProjectorOnCurve;
-  TID2Surface          myFace2Surface;
+  mutable TID2Surface  myFace2Surface;
   TID2ProjectorOnSurf  myFace2Projector;
   TID2ProjectorOnCurve myEdge2Projector;