16 typename T::value_type;
17 requires std::same_as<T, std::vector<typename T::value_type>>;
18 requires std::constructible_from<Kakshya::DataVariant, typename T::value_type>;
28template <
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
29struct is_eigen_matrix<Eigen::Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>> : std::true_type { };
56 std::same_as<T, Kakshya::DataVariant> ||
57 std::same_as<T, std::vector<Kakshya::DataVariant>> ||
58 std::same_as<T, std::shared_ptr<Kakshya::SignalSourceContainer>> ||
59 std::same_as<T, Kakshya::Region> ||
60 std::same_as<T, Kakshya::RegionGroup> ||
61 std::same_as<T, std::vector<Kakshya::RegionSegment>> ||
62 std::is_base_of_v<Eigen::MatrixBase<T>, T> ||
64 std::constructible_from<Kakshya::DataVariant, T>;
76concept RegionLike = std::is_same_v<T, Kakshya::Region> || std::is_same_v<T, Kakshya::RegionGroup> || std::is_same_v<T, std::vector<Kakshya::RegionSegment>>;
83concept MultiVariant = std::is_same_v<T, std::vector<Kakshya::DataVariant>> || std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>> ||
RegionLike<T>;
111 || (is_eigen_matrix_v<T> && T::ColsAtCompileTime == 1)
112 || (std::constructible_from<Kakshya::DataVariant, T>
113 && !std::is_same_v<T, std::vector<Kakshya::DataVariant>>
114 && !std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>>
116 && !is_eigen_matrix_v<T>);
205 requires is_eigen_matrix_v<T>
228 template <
typename T>
243 template <
typename T>
244 requires is_eigen_matrix_v<T>
246 using type =
typename T::Scalar;
249 template <
typename T>
276 std::is_same_v<native_element_type, void>,
280 std::vector<std::span<native_element_type>>,
281 std::span<native_element_type>>>;
305 requires is_eigen_matrix_v<T>
Universal concept for types that can flow through the computation pipeline.
Any Eigen matrix type, regardless of scalar type.
Types that yield multiple data channels on extraction.
Types that represent spatial or temporal markers requiring a container to resolve data.
Types that need an associated SignalSourceContainer to extract data.
Single data source: one DataVariant, a column Eigen vector of any scalar type, or any type constructi...
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.
typename extraction_traits< T >::native_result_type native_result_t
Native result type for T – zero-copy in the source's own scalar type.
std::enable_if_t< extraction_traits_d< T >::is_region_like > enable_if_region_like_t
std::enable_if_t< is_eigen_matrix_v< T > > enable_if_eigen_matrix_t
std::enable_if_t< extraction_traits_d< T >::is_multi_variant > enable_if_multi_variant_t
typename extraction_traits< T >::native_element_type native_element_t
Native element type for T.
typename extraction_traits_d< T >::result_type extraction_result_t
Algorithm (double) result type for T – for Kinesis callers.
std::enable_if_t< extraction_traits_d< T >::is_multi_variant &&!extraction_traits_d< T >::requires_container > enable_if_multi_no_container_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
Variant result type for T.
std::enable_if_t< extraction_traits_d< T >::is_multi_variant &&extraction_traits_d< T >::requires_container > enable_if_multi_with_container_t
void type
Runtime-determined via value_element_type().
void type
Heterogeneous – visit the variant at runtime.