Salome HOME
23239: [CEA 1739] Regression : crash trying to create mesh
[modules/smesh.git] / src / SMESHUtils / SMESH_MAT2d.hxx
index 2ba0066c5efa9566c3a5bc82427de6be63c32df5..328366ccefe7d81b9e71f8d80c7d65adf540f27d 100644 (file)
@@ -82,7 +82,8 @@ namespace SMESH_MAT2d
     std::size_t   _iEdge; // MA edge index within the branch
     double        _edgeParam; // normalized param within the MA edge
 
-    BranchPoint(): _branch(0), _iEdge(0), _edgeParam(-1) {}
+    BranchPoint( const Branch* b = 0, std::size_t e = 0, double u = -1 ):
+      _branch(b), _iEdge(e), _edgeParam(u) {}
   };
   //-------------------------------------------------------------------------------------
   /*!
@@ -119,9 +120,9 @@ namespace SMESH_MAT2d
 
   public: // internal: construction
 
-    void init( std::vector<const TVDEdge*>&                maEdges,
-               const Boundary*                             boundary,
-               std::map< const TVDVertex*, BranchEndType > endType);
+    void init( std::vector<const TVDEdge*>&                 maEdges,
+               const Boundary*                              boundary,
+               std::map< const TVDVertex*, BranchEndType >& endType);
     void setBranchesToEnds( const std::vector< Branch >&   branches);
     BranchPoint getPoint( const TVDVertex* vertex ) const;
     void setRemoved( const BranchPoint& proxyPoint );
@@ -138,7 +139,7 @@ namespace SMESH_MAT2d
                                   std::vector< BranchPoint >&        divPoints,
                                   const std::vector<const TVDEdge*>& maEdges,
                                   const std::vector<const TVDEdge*>& maEdgesTwin,
-                                  size_t &                           i) const;
+                                  int &                              i) const;
 
     // association of _maEdges with boundary segments is stored in this way:
     // index of an EDGE:           TVDEdge->cell()->color()
@@ -180,6 +181,8 @@ namespace SMESH_MAT2d
 
     bool getBranchPoint( const std::size_t iEdge, double u, BranchPoint& p ) const;
 
+    bool getBranchPoint( const BoundaryPoint& bp, BranchPoint& p ) const;
+
     bool isConcaveSegment( std::size_t iEdge, std::size_t iSeg ) const;
 
     bool moveToClosestEdgeEnd( BoundaryPoint& bp ) const;