493 {
494 if constexpr (is_IO<T>::value) {
495 DataStructureInfo info {};
496 info.original_type = std::type_index(typeid(std::decay_t<decltype(compute_data.data)>));
497 info.dimensions = compute_data.dimensions;
498 info.modality = compute_data.modality;
499 if constexpr (CompositeData<std::decay_t<decltype(compute_data.data)>>)
501 return info;
502 } else {
503 DataStructureInfo info {};
504 info.original_type = std::type_index(typeid(T));
506 info.dimensions = std::move(dims);
507 info.modality = mod;
508 if constexpr (CompositeData<T>)
510 return info;
511 }
512 }
const CompositeLayout & layout() const noexcept
Finalized layout shared by all elements.
static const Kakshya::CompositeArray & extract_composite_data(const Kakshya::CompositeArray &data) noexcept
Borrow an owning Composite array without converting its fields.
static std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_structure(const T &data, const std::shared_ptr< Kakshya::SignalSourceContainer > &container=nullptr)
Infer dimensions and modality from any ComputeData type.