vcpkg/ports/netgen/occ-78.patch
Alexander Neumann 0258ea3338
[netgen] occ 7.8 fix (#36259)
* remove accidental , from patch

* [netgen] fix build with occ 7.8

* bump port version

* v db
2024-01-19 12:29:00 -08:00

160 lines
4.4 KiB
Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0846f39bd..f7516afa4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -372,25 +372,20 @@ if (USE_OCC)
TKGeomAlgo
TKGeomBase
TKHLR
- TKIGES
TKLCAF
TKMath
TKMesh
TKOffset
TKPrim
- TKSTEP
- TKSTEP209
- TKSTEPAttr
- TKSTEPBase
- TKSTL
+ TKDESTL
TKService
TKShHealing
TKTopAlgo
TKV3d
TKVCAF
TKXCAF
- TKXDEIGES
- TKXDESTEP
+ TKDEIGES
+ TKDESTEP
TKXSBase
TKernel
)
diff --git a/libsrc/occ/Partition_Loop3d.hxx b/libsrc/occ/Partition_Loop3d.hxx
index e1716691c..e8a434911 100644
--- a/libsrc/occ/Partition_Loop3d.hxx
+++ b/libsrc/occ/Partition_Loop3d.hxx
@@ -10,27 +10,16 @@
#ifndef _Partition_Loop3d_HeaderFile
#define _Partition_Loop3d_HeaderFile
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#endif
-#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Version.hxx>
#include <Standard_Boolean.hxx>
-#endif
-#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
-#endif
-#ifndef _Standard_Version_HeaderFile
-#include <Standard_Version.hxx>
-#endif
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#if OCC_VERSION_HEX < 0x070000
+#if OCC_VERSION_HEX < 0x070000 || OCC_VERSION_HEX > 0x070799
#else
#include <TopTools_ShapeMapHasher.hxx>
#include <TopTools_OrientedShapeMapHasher.hxx>
- #include <TopTools_MapOfOrientedShape.hxx>
#endif
class TopoDS_Shape;
@@ -38,6 +27,8 @@ class TopoDS_Shape;
#if OCC_VERSION_HEX < 0x070000
class TopTools_ListOfShape;
class TopTools_MapOfOrientedShape;
+#else
+#include <TopTools_MapOfOrientedShape.hxx>
#endif
class TopoDS_Edge;
diff --git a/libsrc/occ/occ_edge.cpp b/libsrc/occ/occ_edge.cpp
index 0c907d78b..fd64c9a42 100644
--- a/libsrc/occ/occ_edge.cpp
+++ b/libsrc/occ/occ_edge.cpp
@@ -55,7 +55,11 @@ namespace netgen
size_t OCCEdge::GetHash() const
{
+#if OCC_VERSION_HEX < 0x070800
return edge.HashCode(std::numeric_limits<Standard_Integer>::max());
+#else
+ return std::hash<TopoDS_Shape>{}(edge);
+#endif
}
void OCCEdge::ProjectPoint(Point<3>& p, EdgePointGeomInfo* gi) const
diff --git a/libsrc/occ/occ_face.cpp b/libsrc/occ/occ_face.cpp
index 239982aa8..ea4dd15b4 100644
--- a/libsrc/occ/occ_face.cpp
+++ b/libsrc/occ/occ_face.cpp
@@ -32,7 +32,11 @@ namespace netgen
size_t OCCFace::GetHash() const
{
+#if OCC_VERSION_HEX < 0x070800
return face.HashCode(std::numeric_limits<Standard_Integer>::max());
+#else
+ return std::hash<TopoDS_Shape>{}(face);
+#endif
}
Point<3> OCCFace::GetCenter() const
diff --git a/libsrc/occ/occ_solid.hpp b/libsrc/occ/occ_solid.hpp
index d598de4a2..66f28d73a 100644
--- a/libsrc/occ/occ_solid.hpp
+++ b/libsrc/occ/occ_solid.hpp
@@ -16,8 +16,11 @@ namespace netgen
OCCSolid(TopoDS_Shape dshape)
: solid(TopoDS::Solid(dshape))
{ }
-
+#if OCC_VERSION_HEX < 0x070800
size_t GetHash() const override { return solid.HashCode(std::numeric_limits<Standard_Integer>::max()); }
+#else
+ size_t GetHash() const override { return std::hash<TopoDS_Solid>{}(solid); }
+#endif
};
}
diff --git a/libsrc/occ/occ_vertex.cpp b/libsrc/occ/occ_vertex.cpp
index 6e83c8944..be8e38732 100644
--- a/libsrc/occ/occ_vertex.cpp
+++ b/libsrc/occ/occ_vertex.cpp
@@ -19,6 +19,10 @@ namespace netgen
size_t OCCVertex::GetHash() const
{
+#if OCC_VERSION_HEX < 0x070800
return vertex.HashCode(std::numeric_limits<Standard_Integer>::max());
+#else
+ return std::hash<TopoDS_Shape>{}(vertex);
+#endif
}
}
diff --git a/libsrc/occ/occgeom.cpp b/libsrc/occ/occgeom.cpp
index bc0383f99..826134ba0 100644
--- a/libsrc/occ/occgeom.cpp
+++ b/libsrc/occ/occgeom.cpp
@@ -1716,8 +1716,12 @@ namespace netgen
// enumerate shapes and archive only integers
auto my_hash = [](const TopoDS_Shape & key) {
+#if OCC_VERSION_HEX < 0x070800
auto occ_hash = key.HashCode(1<<31UL);
return std::hash<decltype(occ_hash)>()(occ_hash);
+#else
+ return std::hash<TopoDS_Shape>{}(key);
+#endif
};
TopTools_IndexedMapOfShape shape_map;
Array<TopoDS_Shape> shape_list;