Salome HOME
Fix error on attempt to assign a hypothesis.
[modules/smesh.git] / src / SMESHDS / SMESHDS_Mesh.cxx
index 3351960a8ca6041ba7c66e27b7353e4dee2e191b..9f48b7b15b588585f9f0e66f6e016f1105d7b208 100644 (file)
@@ -112,11 +112,15 @@ void SMESHDS_Mesh::ShapeToMesh(const TopoDS_Shape & S)
 bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
                                  const SMESHDS_Hypothesis * H)
 {
-  list<const SMESHDS_Hypothesis *>& alist=
-    myShapeToHypothesis[SS.Oriented(TopAbs_FORWARD)]; // ignore orientation of SS
+  if (!myShapeToHypothesis.IsBound(SS.Oriented(TopAbs_FORWARD))) {
+    list<const SMESHDS_Hypothesis *> aList;
+    myShapeToHypothesis.Bind(SS.Oriented(TopAbs_FORWARD), aList);
+  }
+  list<const SMESHDS_Hypothesis *>& alist =
+    myShapeToHypothesis(SS.Oriented(TopAbs_FORWARD)); // ignore orientation of SS
 
   //Check if the Hypothesis is still present
-  list<const SMESHDS_Hypothesis*>::iterator ith=find(alist.begin(),alist.end(), H );
+  list<const SMESHDS_Hypothesis*>::iterator ith = find(alist.begin(),alist.end(), H );
 
   if (alist.end() != ith) return false;
 
@@ -132,12 +136,9 @@ bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
 bool SMESHDS_Mesh::RemoveHypothesis(const TopoDS_Shape &       S,
                                     const SMESHDS_Hypothesis * H)
 {
-  ShapeToHypothesis::iterator its=
-    myShapeToHypothesis.find(S.Oriented(TopAbs_FORWARD)); // ignore orientation of S
-
-  if(its!=myShapeToHypothesis.end())
+  if( myShapeToHypothesis.IsBound( S.Oriented(TopAbs_FORWARD) ) )
   {
-    list<const SMESHDS_Hypothesis *>& alist=(*its).second;
+    list<const SMESHDS_Hypothesis *>& alist=myShapeToHypothesis.ChangeFind( S.Oriented(TopAbs_FORWARD) );
     list<const SMESHDS_Hypothesis*>::iterator ith=find(alist.begin(),alist.end(), H );
     if (ith != alist.end())
     {
@@ -1024,10 +1025,8 @@ list<int> SMESHDS_Mesh::SubMeshIndices()
 const list<const SMESHDS_Hypothesis*>&
 SMESHDS_Mesh::GetHypothesis(const TopoDS_Shape & S) const
 {
-  ShapeToHypothesis::const_iterator its=
-    myShapeToHypothesis.find(S.Oriented(TopAbs_FORWARD)); // ignore orientation of S
-  if (its!=myShapeToHypothesis.end())
-    return its->second;
+  if ( myShapeToHypothesis.IsBound( S.Oriented(TopAbs_FORWARD) ) ) // ignore orientation of S
+     return myShapeToHypothesis.Find( S.Oriented(TopAbs_FORWARD) );
 
   static list<const SMESHDS_Hypothesis*> empty;
   return empty;
@@ -1068,7 +1067,7 @@ bool SMESHDS_Mesh::HasMeshElements(const TopoDS_Shape & S)
 //=======================================================================
 bool SMESHDS_Mesh::HasHypothesis(const TopoDS_Shape & S)
 {
-  return myShapeToHypothesis.find(S.Oriented(TopAbs_FORWARD))!=myShapeToHypothesis.end();
+  return myShapeToHypothesis.IsBound(S.Oriented(TopAbs_FORWARD));
 }
 
 //=======================================================================