diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-04-05 00:00:34 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-04-05 00:00:34 +0100 |
commit | 42363c4f91753036de1198d29d142c11571f37d8 (patch) | |
tree | a6107d71140b16788be13bfba4dee07814668d9c | |
parent | Merge branch 'imgui' (diff) | |
download | ilt-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.h | 22 |
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> { |