From c40b51dacd37f532edaeef8ecd5fb3ef5ac5a386 Mon Sep 17 00:00:00 2001 From: Daniel Campora <dcampora@cern.ch> Date: Wed, 23 Aug 2023 12:35:43 +0200 Subject: [PATCH] Add unaltered parameters to keep track of the config. --- stream/gear/include/TransformParameters.cuh | 2 +- stream/store/include/Store.cuh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/stream/gear/include/TransformParameters.cuh b/stream/gear/include/TransformParameters.cuh index d7c24eca0ad..57a431e8e91 100644 --- a/stream/gear/include/TransformParameters.cuh +++ b/stream/gear/include/TransformParameters.cuh @@ -103,6 +103,6 @@ struct TransformParameters<const Allen::Store::StoreRef<T...>&> { { return TransformParametersImpl< Allen::Store::StoreRef<T...>, - typename Allen::Store::StoreRef<T...>::parameters_tuple_t>::transform(t, config); + typename Allen::Store::StoreRef<T...>::unaltered_parameters_tuple_t>::transform(t, config); } }; diff --git a/stream/store/include/Store.cuh b/stream/store/include/Store.cuh index 75b0d0d1e08..47947ec497a 100644 --- a/stream/store/include/Store.cuh +++ b/stream/store/include/Store.cuh @@ -236,11 +236,13 @@ namespace Allen::Store { * @brief Manager of argument references for every handler. */ template< + typename UnalteredParameterTuple, typename ParameterTuple, typename ParameterStruct, typename InputAggregatesTuple = std::tuple<>> struct StoreRef { public: + using unaltered_parameters_tuple_t = UnalteredParameterTuple; using parameters_tuple_t = ParameterTuple; using parameters_struct_t = ParameterStruct; using input_aggregates_t = typename AggregateTypes<InputAggregatesTuple>::aggregates_tuple_type_t; @@ -372,6 +374,7 @@ namespace Allen::Store { struct WrappedTupleDetails<Tuple, std::index_sequence<>> { using parameters_tuple_t = std::tuple<>; using aggregates_tuple_t = std::tuple<>; + using unaltered_parameters_tuple_t = std::tuple<>; }; template<typename Tuple, std::size_t I, std::size_t... Is> @@ -386,6 +389,8 @@ namespace Allen::Store { using prev_parameters_tuple_t = typename prev_wrapped_tuple::parameters_tuple_t; using parameters_tuple_t = prepend_to_tuple_t<boost::pfr::tuple_element_t<I, Tuple>, prev_parameters_tuple_t>; using aggregates_tuple_t = typename prev_wrapped_tuple::aggregates_tuple_t; + using unaltered_parameters_tuple_t = + prepend_to_tuple_t<boost::pfr::tuple_element_t<I, Tuple>, typename prev_wrapped_tuple::unaltered_parameters_tuple_t>; }; template<typename Tuple, std::size_t I, std::size_t... Is> @@ -397,6 +402,8 @@ namespace Allen::Store { using parameters_tuple_t = typename prev_wrapped_tuple::parameters_tuple_t; using aggregates_tuple_t = prepend_to_tuple_t<boost::pfr::tuple_element_t<I, Tuple>, typename prev_wrapped_tuple::aggregates_tuple_t>; + using unaltered_parameters_tuple_t = + prepend_to_tuple_t<boost::pfr::tuple_element_t<I, Tuple>, typename prev_wrapped_tuple::unaltered_parameters_tuple_t>; }; template<typename Tuple, std::size_t I, std::size_t... Is> @@ -410,6 +417,8 @@ namespace Allen::Store { using prev_wrapped_tuple = WrappedTupleDetails<Tuple, std::index_sequence<Is...>>; using parameters_tuple_t = typename prev_wrapped_tuple::parameters_tuple_t; using aggregates_tuple_t = typename prev_wrapped_tuple::aggregates_tuple_t; + using unaltered_parameters_tuple_t = + prepend_to_tuple_t<boost::pfr::tuple_element_t<I, Tuple>, typename prev_wrapped_tuple::unaltered_parameters_tuple_t>; }; template<size_t... Is> @@ -426,6 +435,7 @@ namespace Allen::Store { template<typename T> using ArgumentReferences = Allen::Store::StoreRef< + typename Allen::Store::WrappedTuple<T>::unaltered_parameters_tuple_t, typename Allen::Store::WrappedTuple<T>::parameters_tuple_t, T, typename Allen::Store::WrappedTuple<T>::aggregates_tuple_t>; -- GitLab