summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-04-05 00:00:34 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2025-04-05 00:00:34 +0100
commit42363c4f91753036de1198d29d142c11571f37d8 (patch)
treea6107d71140b16788be13bfba4dee07814668d9c
parentMerge branch 'imgui' (diff)
downloadilt-42363c4f91753036de1198d29d142c11571f37d8.tar.bz2
ilt-42363c4f91753036de1198d29d142c11571f37d8.tar.xz
ilt-42363c4f91753036de1198d29d142c11571f37d8.zip
Add OpenMesh/range helpers which support OpenMesh11
Exactly which version introduces the new types, not sure... Easy to change the version check macro though.
-rw-r--r--thirdparty/openmesh/helpers.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/thirdparty/openmesh/helpers.h b/thirdparty/openmesh/helpers.h
index a0105c8..0e29261 100644
--- a/thirdparty/openmesh/helpers.h
+++ b/thirdparty/openmesh/helpers.h
@@ -7,6 +7,7 @@ namespace OpenMesh {
template<typename Iter, typename... IterParams>
using IteratorFunction = Iter (OpenMesh::PolyConnectivity::*)(IterParams...) const;
+#if OM_GET_VER < 8
template<typename Iter, typename CenterEntityHandle, IteratorFunction<Iter, CenterEntityHandle> BeginFunc,
IteratorFunction<Iter, CenterEntityHandle> EndFunc, typename Adaptor>
auto
@@ -26,6 +27,27 @@ namespace OpenMesh {
{
return std::views::iota(range.begin(), range.end()) | std::forward<Adaptor>(adaptor);
}
+#else
+ template<typename Iter, typename CenterEntityHandle, typename ToEntityHandle,
+ IteratorFunction<Iter, CenterEntityHandle> BeginFunc, IteratorFunction<Iter, CenterEntityHandle> EndFunc,
+ typename Adaptor>
+ auto
+ operator|(const CirculatorRange<CirculatorRangeTraitT<OpenMesh::PolyConnectivity, Iter, CenterEntityHandle,
+ ToEntityHandle, BeginFunc, EndFunc>> & range,
+ Adaptor && adaptor)
+ {
+ return std::views::iota(range.begin(), range.end()) | std::forward<Adaptor>(adaptor);
+ }
+
+ template<typename Iter, IteratorFunction<Iter> BeginFunc, IteratorFunction<Iter> EndFunc, typename Adaptor>
+ auto
+ operator|(const EntityRange<RangeTraitT<const OpenMesh::PolyConnectivity, Iter, BeginFunc, EndFunc>> & range,
+ Adaptor && adaptor)
+ {
+ return std::views::iota(range.begin(), range.end()) | std::forward<Adaptor>(adaptor);
+ }
+
+#endif
namespace Helpers {
template<typename Type, template<typename> typename PropertyT> struct Property : public PropertyT<Type> {