//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #pragma once #include #include #include #include #include namespace rotgen { //================================================================================================== // Internal payload - Required for cross-referencing from block_impl* //================================================================================================== struct matrix_impl64_col::payload { using data_type = Eigen::Matrix; data_type data; payload(std::size_t r = 0, std::size_t c = 0) : data(r, c) {} payload(std::initializer_list> init) : data(init) { } payload(data_type&& matrix) : data(std::move(matrix)) {} void assign(Eigen::Block ref) { data = ref; } void assign(data_type const& mat) { data = mat; } void assign(data_type&& mat) { data = std::move(mat); } }; struct matrix_impl64_row::payload { using data_type = Eigen::Matrix; data_type data; payload(std::size_t r = 0, std::size_t c = 0) : data(r, c) {} payload(std::initializer_list> init) : data(init) { } payload(data_type&& matrix) : data(std::move(matrix)) {} void assign(Eigen::Block ref) { data = ref; } void assign(data_type const& mat) { data = mat; } void assign(data_type&& mat) { data = std::move(mat); } }; struct matrix_impl32_col::payload { using data_type = Eigen::Matrix; data_type data; payload(std::size_t r = 0, std::size_t c = 0) : data(r, c) {} payload(std::initializer_list> init) : data(init) { } payload(data_type&& matrix) : data(std::move(matrix)) {} void assign(Eigen::Block ref) { data = ref; } void assign(data_type const& mat) { data = mat; } void assign(data_type&& mat) { data = std::move(mat); } }; struct matrix_impl32_row::payload { using data_type = Eigen::Matrix; data_type data; payload(std::size_t r = 0, std::size_t c = 0) : data(r, c) {} payload(std::initializer_list> init) : data(init) { } payload(data_type&& matrix) : data(std::move(matrix)) {} void assign(Eigen::Block ref) { data = ref; } void assign(data_type const& mat) { data = mat; } void assign(data_type&& mat) { data = std::move(mat); } }; }