Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy > Class Template Reference

TensorView materialization over writable and read-only mdspec values. More...

#include <mdspec_tensor_view.hpp>

Inheritance diagram for uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >:
[legend]
Collaboration diagram for uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >:
[legend]

Public Types

using backend_selector_type = std::remove_cvref_t< decltype(storage_policy::backend_selector())>
 
using const_mdspec_type = ConstMdspec
 
using element_type = typename mutable_mdspec_type::element_type
 
using extents_type = typename mutable_mdspec_type::extents_type
 
using index_type = typename extents_type::index_type
 
using mutable_mdspec_type = MutableMdspec
 
using storage_policy = StoragePolicy
 
using value_type = std::remove_cv_t< element_type >
 

Public Member Functions

constexpr auto extent (std::size_t axis) const noexcept -> index_type
 Return one dense-block extent.
 
constexpr auto extents () const noexcept -> extents_type const &
 Return the dense-block extents.
 
constexpr auto mdspan () &-> mutable_mdspec_type
 Return the writable mdspan when the metadata is immediate.
 
constexpr auto mdspan () const &-> const_mdspec_type
 Return the read-only mdspan when the metadata is immediate.
 
constexpr auto mdspec () &-> mutable_mdspec_type
 Return writable immediate or descriptor-backed metadata.
 
constexpr auto mdspec () const &-> const_mdspec_type
 Return read-only immediate or descriptor-backed metadata.
 
constexpr MdspecTensorView (mutable_mdspec_type mutable_mdspec, const_mdspec_type const_mdspec)
 Construct a tensor view from writable and read-only metadata.
 
template<class... Index>
requires MdspanLike<mutable_mdspec_type> && (sizeof...(Index) == extents_type::rank())
constexpr decltype(auto) operator[] (Index... indices)
 Evaluate or assign one element when writable metadata is immediate.
 
template<class... Index>
requires MdspanLike<const_mdspec_type> && (sizeof...(Index) == extents_type::rank())
constexpr decltype(auto) operator[] (Index... indices) const
 Evaluate one element when read-only metadata is immediate.
 
constexpr auto stride (std::size_t axis) const -> index_type
 Return one dense-block stride when the mapping is strided.
 

Static Public Member Functions

static constexpr auto backend_selector () noexcept -> backend_selector_type
 Return the dense storage policy's default backend selector.
 
static constexpr std::size_t rank () noexcept
 Return the static dense-block rank.
 

Detailed Description

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy>
requires (std::same_as<typename MutableMdspec::extents_type, typename ConstMdspec::extents_type> && std::same_as<std::remove_const_t<typename MutableMdspec::element_type>, std::remove_const_t<typename ConstMdspec::element_type>> && std::is_const_v<typename ConstMdspec::element_type> && requires { StoragePolicy::backend_selector(); })
class uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >

TensorView materialization over writable and read-only mdspec values.

The view owns multidimensional metadata but not the described element storage. Its storage policy supplies tensor-level backend selection; access acquisition remains governed by the stored mdspec data descriptor.

Template Parameters
MutableMdspecMetadata exposed through the mutable interface.
ConstMdspecRead-only metadata exposed through the const interface.
StoragePolicyDense storage policy associated with the metadata.

Member Typedef Documentation

◆ backend_selector_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::backend_selector_type = std::remove_cvref_t<decltype(storage_policy::backend_selector())>

◆ const_mdspec_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::const_mdspec_type = ConstMdspec

◆ element_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::element_type = typename mutable_mdspec_type::element_type

◆ extents_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::extents_type = typename mutable_mdspec_type::extents_type

◆ index_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::index_type = typename extents_type::index_type

◆ mutable_mdspec_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::mutable_mdspec_type = MutableMdspec

◆ storage_policy

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::storage_policy = StoragePolicy

◆ value_type

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
using uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::value_type = std::remove_cv_t<element_type>

Constructor & Destructor Documentation

◆ MdspecTensorView()

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::MdspecTensorView ( mutable_mdspec_type  mutable_mdspec,
const_mdspec_type  const_mdspec 
)
inlineconstexpr

Construct a tensor view from writable and read-only metadata.

Member Function Documentation

◆ backend_selector()

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
static constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::backend_selector ( ) -> backend_selector_type
inlinestaticconstexprnoexcept

Return the dense storage policy's default backend selector.

◆ extent()

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::extent ( std::size_t  axis) const -> index_type
inlineconstexprnoexcept

Return one dense-block extent.

◆ extents()

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::extents ( ) const -> extents_type const&
inlineconstexprnoexcept

Return the dense-block extents.

◆ mdspan() [1/2]

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::mdspan ( ) & -> mutable_mdspec_type
inlineconstexpr

Return the writable mdspan when the metadata is immediate.

◆ mdspan() [2/2]

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::mdspan ( ) const & -> const_mdspec_type
inlineconstexpr

Return the read-only mdspan when the metadata is immediate.

◆ mdspec() [1/2]

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::mdspec ( ) & -> mutable_mdspec_type
inlineconstexpr

Return writable immediate or descriptor-backed metadata.

◆ mdspec() [2/2]

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::mdspec ( ) const & -> const_mdspec_type
inlineconstexpr

Return read-only immediate or descriptor-backed metadata.

◆ operator[]() [1/2]

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
template<class... Index>
requires MdspanLike<mutable_mdspec_type> && (sizeof...(Index) == extents_type::rank())
constexpr decltype(auto) uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::operator[] ( Index...  indices)
inlineconstexpr

Evaluate or assign one element when writable metadata is immediate.

◆ operator[]() [2/2]

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
template<class... Index>
requires MdspanLike<const_mdspec_type> && (sizeof...(Index) == extents_type::rank())
constexpr decltype(auto) uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::operator[] ( Index...  indices) const
inlineconstexpr

Evaluate one element when read-only metadata is immediate.

◆ rank()

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
static constexpr std::size_t uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::rank ( )
inlinestaticconstexprnoexcept

Return the static dense-block rank.

◆ stride()

template<MdspecLike MutableMdspec, MdspecLike ConstMdspec, class StoragePolicy >
constexpr auto uni20::MdspecTensorView< MutableMdspec, ConstMdspec, StoragePolicy >::stride ( std::size_t  axis) const -> index_type
inlineconstexpr

Return one dense-block stride when the mapping is strided.


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