Salome HOME
[bos #40653][CEA] New mesh import export formats with meshio.
[modules/smesh.git] / src / SMESHDS / SMESHDS_Mesh.hxx
index 1ffd3e02af430411f5e59cda15729b39ba7571e1..1b8d2e2fd6d18a31c4d3cebc451969b2952d19df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -32,6 +32,8 @@
 #include "SMDS_Mesh.hxx"
 #include "SMESHDS_SubMesh.hxx"
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TopoDS_Shape.hxx>
 
@@ -57,8 +59,34 @@ class SMDS_BallElement;
  * So this functionality implement on new NCollection_DataMap technology
  */
 #include <NCollection_DataMap.hxx>
-#include "SMESHDS_DataMapOfShape.hxx"
 typedef std::list<const SMESHDS_Hypothesis*>                          THypList;
+
+struct SMESHDS_Hasher
+{
+#if OCC_VERSION_LARGE < 0x07080000
+  static inline Standard_Boolean IsEqual(const TopoDS_Shape& S1,
+                                         const TopoDS_Shape& S2)
+  {
+    return S1.IsSame(S2);
+  }
+  static inline Standard_Integer HashCode(const TopoDS_Shape& S,
+                                          const Standard_Integer Upper)
+  {
+    return ::HashCode( S, Upper);
+  }
+#else
+  bool operator()(const TopoDS_Shape& S1, const TopoDS_Shape& S2) const
+  {
+    // for the purpose of ShapeToHypothesis map we don't consider shapes orientation
+    return S1.IsSame(S2);
+  }
+  size_t operator()(const TopoDS_Shape& S) const
+  {
+    return std::hash<TopoDS_Shape>{}(S);
+  }
+#endif
+};
+
 typedef NCollection_DataMap< TopoDS_Shape, THypList, SMESHDS_Hasher > ShapeToHypothesis;
 
 class SMESHDS_GroupBase;