13 typename T::value_type;
14 requires std::same_as<T, std::vector<typename T::value_type>>;
15 requires std::constructible_from<Kakshya::DataVariant, typename T::value_type>;
38 std::same_as<T, Kakshya::DataVariant> ||
39 std::same_as<T, std::vector<Kakshya::DataVariant>> ||
40 std::same_as<T, std::shared_ptr<Kakshya::SignalSourceContainer>> ||
41 std::same_as<T, Kakshya::Region> ||
42 std::same_as<T, Kakshya::RegionGroup> ||
43 std::same_as<T, std::vector<Kakshya::RegionSegment>> ||
44 std::is_base_of_v<Eigen::MatrixBase<T>, T> ||
46 std::constructible_from<Kakshya::DataVariant, T>;
78 || std::is_same_v<T, Kakshya::RegionGroup>
79 || std::is_same_v<T, std::vector<Kakshya::RegionSegment>>;
83concept MultiVariant = std::is_same_v<T, std::vector<Kakshya::DataVariant>>
84 || std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>>
99 || (std::is_base_of_v<Eigen::MatrixBase<T>, T> && T::ColsAtCompileTime == 1)
100 || std::is_same_v<T, Eigen::VectorXd>
101 || (std::constructible_from<Kakshya::DataVariant, T>
102 && !std::is_same_v<T, std::vector<Kakshya::DataVariant>>
103 && !std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>>
105 && !std::is_base_of_v<Eigen::MatrixBase<T>, T>);
182template <
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
183struct is_eigen_matrix<Eigen::Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>> : std::true_type { };
193 requires is_eigen_matrix_v<T> && std::is_same_v<typename T::Scalar, double>
221concept EigenMatrixLike = is_eigen_matrix_v<T> && std::is_same_v<typename T::Scalar, double>;
Universal concept for types that can be used as data in compute operations.
Concept for Eigen matrix types with double scalar.
A SingleVariant is either a single DataVariant, an Eigen vector type, or any type constructible from ...
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
std::enable_if_t< extraction_traits_d< T >::is_region_like > enable_if_region_like_t
std::enable_if_t< extraction_traits_d< T >::is_multi_variant > enable_if_multi_variant_t
typename extraction_traits_d< T >::result_type extraction_result_t
std::enable_if_t< is_eigen_matrix_v< T > &&std::is_same_v< typename T::Scalar, double > > enable_if_eigen_matrix_t
constexpr bool is_eigen_matrix_v
std::enable_if_t< SingleVariant< T > > enable_if_single_variant_t
typename extraction_traits_d< T >::variant_result_type variant_result_t
std::enable_if_t< extraction_traits_d< T >::is_multi_variant &&!extraction_traits_d< T >::requires_container > enable_if_multi_no_container_t
std::enable_if_t< extraction_traits_d< T >::is_multi_variant &&extraction_traits_d< T >::requires_container > enable_if_multi_with_container_t