Skip to content

Commit 51696e8

Browse files
authored
Merge branch 'feature/main-model-refactor-clean-templates-experiment' into feature/clean-main-core-ybus-templates
Signed-off-by: Nitish Bharambe <[email protected]>
2 parents 9ab47b9 + a0c44fb commit 51696e8

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

power_grid_model_c/power_grid_model/include/power_grid_model/main_core/core_utils.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
#pragma once
66

7-
#include "../all_components.hpp"
87
#include "../container.hpp"
98
#include "state.hpp"
109

@@ -15,8 +14,8 @@ namespace power_grid_model::main_core::utils {
1514
namespace detail {
1615

1716
template <typename Tuple, class Functor, std::size_t... Indices>
18-
constexpr void run_functor_with_tuple_index_return_void(Functor functor, std::index_sequence<Indices...> /*unused*/) {
19-
(functor.template operator()<std::tuple_element_t<Indices, Tuple>>(), ...);
17+
constexpr void run_functor_with_tuple_index_return_void(Functor&& functor, std::index_sequence<Indices...> /*unused*/) {
18+
(std::forward<Functor>(functor).template operator()<std::tuple_element_t<Indices, Tuple>>(), ...);
2019
}
2120

2221
} // namespace detail
@@ -41,8 +40,8 @@ template <class... Types, class Functor> constexpr auto run_functor_with_all_typ
4140
}
4241
/////////////////// To remove ///////////////////
4342

44-
template <typename Tuple, class Functor> constexpr void run_functor_with_tuple_return_void(Functor functor) {
45-
detail::run_functor_with_tuple_index_return_void<Tuple>(functor,
43+
template <typename Tuple, class Functor> constexpr void run_functor_with_tuple_return_void(Functor&& functor) {
44+
detail::run_functor_with_tuple_index_return_void<Tuple>(std::forward<Functor>(functor),
4645
std::make_index_sequence<std::tuple_size_v<Tuple>>{});
4746
}
4847

power_grid_model_c/power_grid_model/include/power_grid_model/main_core/main_model_type.hpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ constexpr auto filter_tuple_types(std::tuple<std::type_identity<Types>...> /*unu
3535

3636
} // namespace detail
3737

38-
template <class T, class U> struct MainModelType;
38+
template <class T, class U> class MainModelType;
3939

4040
// TODO: discussion on checking dependent types can also be done here.
4141
template <class... ExtraRetrievableType, class... ComponentType>
42-
struct MainModelType<ExtraRetrievableTypes<ExtraRetrievableType...>, ComponentList<ComponentType...>> {
42+
class MainModelType<ExtraRetrievableTypes<ExtraRetrievableType...>, ComponentList<ComponentType...>> {
4343

44+
public:
4445
using ComponentContainer = Container<ExtraRetrievableTypes<ExtraRetrievableType...>, ComponentType...>;
4546
using MainModelState = main_core::MainModelState<ComponentContainer>;
4647
using ComponentTypesTuple = std::tuple<ComponentType...>;
@@ -80,11 +81,12 @@ struct MainModelType<ExtraRetrievableTypes<ExtraRetrievableType...>, ComponentLi
8081
using SequenceIdxRefWrappers = std::array<std::reference_wrapper<std::vector<Idx2D> const>, n_types>;
8182
using ComponentFlags = std::array<bool, n_types>;
8283

83-
template <class Functor> static constexpr void run_functor_with_all_component_types_return_void(Functor functor) {
84-
(functor.template operator()<ComponentType>(), ...);
84+
template <class Functor> static constexpr void run_functor_with_all_component_types_return_void(Functor&& functor) {
85+
(std::forward<Functor>(functor).template operator()<ComponentType>(), ...);
8586
}
86-
template <class Functor> static constexpr auto run_functor_with_all_component_types_return_array(Functor functor) {
87-
return std::array { functor.template operator()<ComponentType>()... };
87+
template <class Functor>
88+
static constexpr auto run_functor_with_all_component_types_return_array(Functor&& functor) {
89+
return std::array { std::forward<Functor>(functor).template operator()<ComponentType>()... };
8890
}
8991
};
9092

0 commit comments

Comments
 (0)