From 9782672896b208a44ad4917a800bae3ecf5a9a1c Mon Sep 17 00:00:00 2001 From: Hugo Talbot Date: Thu, 12 Dec 2024 12:15:08 +0100 Subject: [PATCH 1/4] [Helper] Fix warning in SelectableItem --- Sofa/framework/Helper/src/sofa/helper/SelectableItem.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h index 9fd1eba9891..ee7dbed974b 100644 --- a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h +++ b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h @@ -246,8 +246,16 @@ class SelectableItem : public BaseSelectableItem template static constexpr id_type findId_impl(const std::string_view key, std::index_sequence) { + constexpr id_type indices[] = { Is... }; id_type result = static_cast(-1); - ((Derived::s_items[Is].key == key ? (result = Is, true) : false) || ...); + for (id_type i : indices) + { + if (Derived::s_items[i].key == key) + { + result = i; + break; + } + } return result; } From 583831cfbc9f524dc055c44e5c2d0df76345982e Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Wed, 8 Jan 2025 13:51:42 +0100 Subject: [PATCH 2/4] simpler code --- .../Helper/src/sofa/helper/SelectableItem.h | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h index ee7dbed974b..0f3e59cd10b 100644 --- a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h +++ b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h @@ -27,6 +27,7 @@ #include #include #include +#include namespace sofa::helper @@ -240,23 +241,15 @@ class SelectableItem : public BaseSelectableItem static constexpr id_type findId(const std::string_view key) { - return findId_impl(key, std::make_index_sequence{}); - } - - template - static constexpr id_type findId_impl(const std::string_view key, std::index_sequence) - { - constexpr id_type indices[] = { Is... }; - id_type result = static_cast(-1); - for (id_type i : indices) + //use std::ranges::enumerate in C++23 + for (id_type i = 0; i < numberOfItems(); ++i) { - if (Derived::s_items[i].key == key) + if (key == Derived::s_items[i].key) { - result = i; - break; + return i; } } - return result; + return static_cast(-1); } template > From 869b42afd844714929952377aa0e1ddf79f449d0 Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Wed, 8 Jan 2025 14:01:25 +0100 Subject: [PATCH 3/4] simplify trait using concept --- Sofa/framework/Helper/src/sofa/helper/SelectableItem.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h index 0f3e59cd10b..339a89d5136 100644 --- a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h +++ b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h @@ -252,16 +252,9 @@ class SelectableItem : public BaseSelectableItem return static_cast(-1); } - template > - struct has_deprecation_map : std::false_type {}; - - // Specialization when T has a static member s_foo - template - struct has_deprecation_map> : std::true_type {}; - void keyError(const std::string_view key) { - if constexpr (has_deprecation_map::value) + if constexpr (requires {Derived::s_deprecationMap;}) { static_assert(std::is_same_v, std::map>); const auto it = Derived::s_deprecationMap.find(key); From 042bdb33f022c76d65417c56c3e06080ea093548 Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Wed, 8 Jan 2025 14:10:34 +0100 Subject: [PATCH 4/4] remove unused include --- Sofa/framework/Helper/src/sofa/helper/SelectableItem.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h index 339a89d5136..06a86c4cc9b 100644 --- a/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h +++ b/Sofa/framework/Helper/src/sofa/helper/SelectableItem.h @@ -27,7 +27,6 @@ #include #include #include -#include namespace sofa::helper