diff --git a/src/osp/framework/framework.h b/src/osp/framework/framework.h index 1d05c972..f3cd60e3 100644 --- a/src/osp/framework/framework.h +++ b/src/osp/framework/framework.h @@ -344,28 +344,20 @@ struct Framework if constexpr ( ! std::is_empty_v ) { - constexpr size_t members_size = sizeof(typename FI_T::Pipelines)/sizeof(PipelineDefBlank_t); - PipelineDefBlank_t plMembers[members_size] ; - std::memcpy(plMembers, &out.pl, sizeof(typename FI_T::Pipelines)); - //auto const plMembers = arrayCast( arrayCast( arrayView(&out.pl, 1) ) ); - for (std::size_t i = 0; i < members_size; ++i) + auto const plMembers = arrayCast( arrayCast( arrayView(&out.pl, 1) ) ); + for (std::size_t i = 0; i < plMembers.size(); ++i) { - plMembers[i].m_value = rInterface.pipelines[i]; + memcpy(&plMembers[i].m_value, &rInterface.pipelines[i], sizeof(PipelineId)); } - std::memcpy(&out.pl, plMembers, sizeof(typename FI_T::Pipelines)); } if constexpr ( ! std::is_empty_v ) - { - constexpr size_t members_size = sizeof(typename FI_T::DataIds)/sizeof(DataId); - DataId diMembers[members_size] ; - std::memcpy(diMembers, &out.di, sizeof(typename FI_T::DataIds)); - //auto const diMembers = arrayCast( arrayCast( arrayView(&out.di, 1) ) ); - for (std::size_t i = 0; i < members_size; ++i) + { + auto const diMembers = arrayCast( arrayCast( arrayView(&out.di, 1) ) ); + for (std::size_t i = 0; i < diMembers.size(); ++i) { - diMembers[i] = rInterface.data[i]; + memcpy(&diMembers[i], &rInterface.data[i], sizeof(DataId)); } - std::memcpy(&out.di, diMembers, sizeof(typename FI_T::DataIds)); } }