MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Kakshya::EigenAccess Class Reference

Type-erased accessor for converting DataVariant to Eigen types. More...

#include <EigenAccess.hpp>

+ Collaboration diagram for MayaFlux::Kakshya::EigenAccess:

Public Member Functions

 EigenAccess (const Kakshya::DataVariant &variant)
 
Eigen::VectorXd to_vector () const
 Convert DataVariant to Eigen column vector.
 
Eigen::MatrixXd to_matrix () const
 Convert DataVariant to Eigen matrix.
 
Eigen::VectorXd to_magnitude_vector () const
 Convert complex data to magnitude vector.
 
Eigen::VectorXcd to_complex_vector () const
 Convert complex data to Eigen complex vector.
 
Eigen::VectorXd to_phase_vector () const
 Convert complex data to phase vector (angle in radians)
 
size_t element_count () const noexcept
 Get number of elements (columns in matrix representation)
 
size_t component_count () const
 Get number of components per element (rows in matrix representation)
 
std::pair< size_t, size_t > matrix_dimensions () const
 Get matrix dimensions as (rows, cols)
 
bool validate_dimensions () const
 Validate that data dimensions fit within Eigen limits.
 
bool is_complex () const
 Check if data contains complex numbers.
 
bool is_structured () const
 Check if data contains GLM types.
 
std::string type_name () const
 Get underlying data type name.
 
template<typename EigenType >
auto view () const -> std::optional< Eigen::Map< const EigenType > >
 Get zero-copy Eigen::Map view of data.
 
template<typename Scalar = double>
auto view_as_matrix (Eigen::Index rows) const -> std::optional< Eigen::Map< const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > > >
 Get zero-copy matrix view with explicit row count.
 
template<typename GlmVecType >
requires GlmType<GlmVecType>
auto view_as_glm () const -> std::optional< std::span< const GlmVecType > >
 Get zero-copy span view of GLM vector data.
 

Private Member Functions

template<typename T >
Eigen::VectorXd scalar_to_vector (const std::vector< T > &vec) const
 
template<typename T >
Eigen::MatrixXd scalar_to_matrix (const std::vector< T > &vec) const
 
template<typename T >
Eigen::MatrixXd complex_to_matrix (const std::vector< std::complex< T > > &vec) const
 
template<typename T >
Eigen::MatrixXd glm_to_matrix (const std::vector< T > &vec) const
 

Private Attributes

const Kakshya::DataVariantm_variant
 

Detailed Description

Type-erased accessor for converting DataVariant to Eigen types.

Provides semantic, easy-to-follow conversion from NDData to Eigen. Companion to EigenInsertion for write operations.

Design principle: All numeric types convert cleanly to Eigen's double representation. Complex types become 2-row matrices (real, imaginary).

Definition at line 22 of file EigenAccess.hpp.


The documentation for this class was generated from the following files: