Loading...
Searching...
No Matches
PLMD::View2D< T, N, M > Class Template Reference

A not-owning view for accessing array witha 2D interface. More...

#include <View2D.h>

Inheritance diagram for PLMD::View2D< T, N, M >:

Public Types

using const_iterator = const pointer
 
using const_reference = const value_type&
 
using element_type = View<value_type,M>
 
using iterator = pointer
 
using pointer = value_type*
 
using reference = value_type&
 
using value_type = T
 

Public Member Functions

 View2D (const View2D &) noexcept=default
 
template<size_t N_ = N, size_t M_ = M, typename = std::enable_if_t<N_ != helpers::dynamic_extent && M_ != helpers::dynamic_extent>>
 View2D (pointer p) noexcept
 constructor for fixed size View2D
 
template<size_t N_ = N, size_t M_ = M, typename = std::enable_if_t<N_ == helpers::dynamic_extent && M_ != helpers::dynamic_extent>>
 View2D (pointer p, size_t NN) noexcept
 constructor for a View2D with known second dimension at compile time
 
template<size_t N_ = N, size_t M_ = M, typename = std::enable_if_t<N_ == helpers::dynamic_extent && M_ == helpers::dynamic_extent>>
 View2D (pointer p, size_t NN, size_t MM) noexcept
 constructor for a View2D with all dimension known at run time
 
 View2D (View2D &&) noexcept=default
 
constexpr pointer data () const noexcept
 return the pointer to the data
 
View2Doperator= (const View2D &) noexcept=default
 
View2Doperator= (View2D &&) noexcept=default
 
constexpr const element_type operator[] (size_t i) const noexcept
 returns the reference i-th element
 
constexpr element_type operator[] (size_t i) noexcept
 returns the View to the i-th row
 
constexpr size_t size () const noexcept
 returns the size of the first dimension
 

Private Attributes

pointer ptr_
 
std::size_t sizeM_ {M}
 
std::size_t sizeN_ {N}
 

Detailed Description

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
class PLMD::View2D< T, N, M >

A not-owning view for accessing array witha 2D interface.

The main idea is to have something that works like the mdspan from c++23.

Views are CHEAP to copy (pointer and an integer), so it is better to pass them as values

Todo
ctors from std::array and from iterators to parallel the span implementatio

Member Typedef Documentation

◆ const_iterator

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::const_iterator = const pointer

◆ const_reference

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::const_reference = const value_type&

◆ element_type

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::element_type = View<value_type,M>

◆ iterator

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::iterator = pointer

◆ pointer

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::pointer = value_type*

◆ reference

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::reference = value_type&

◆ value_type

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
using PLMD::View2D< T, N, M >::value_type = T

Constructor & Destructor Documentation

◆ View2D() [1/5]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
template<size_t N_ = N, size_t M_ = M, typename = std::enable_if_t<N_ != helpers::dynamic_extent && M_ != helpers::dynamic_extent>>
PLMD::View2D< T, N, M >::View2D ( pointer p)
inlineexplicitnoexcept

constructor for fixed size View2D

◆ View2D() [2/5]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
template<size_t N_ = N, size_t M_ = M, typename = std::enable_if_t<N_ == helpers::dynamic_extent && M_ != helpers::dynamic_extent>>
PLMD::View2D< T, N, M >::View2D ( pointer p,
size_t NN )
inlinenoexcept

constructor for a View2D with known second dimension at compile time

◆ View2D() [3/5]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
template<size_t N_ = N, size_t M_ = M, typename = std::enable_if_t<N_ == helpers::dynamic_extent && M_ == helpers::dynamic_extent>>
PLMD::View2D< T, N, M >::View2D ( pointer p,
size_t NN,
size_t MM )
inlinenoexcept

constructor for a View2D with all dimension known at run time

◆ View2D() [4/5]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
PLMD::View2D< T, N, M >::View2D ( const View2D< T, N, M > & )
defaultnoexcept

◆ View2D() [5/5]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
PLMD::View2D< T, N, M >::View2D ( View2D< T, N, M > && )
defaultnoexcept

Member Function Documentation

◆ data()

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
pointer PLMD::View2D< T, N, M >::data ( ) const
inlineconstexprnoexcept

return the pointer to the data

◆ operator=() [1/2]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
View2D & PLMD::View2D< T, N, M >::operator= ( const View2D< T, N, M > & )
defaultnoexcept

◆ operator=() [2/2]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
View2D & PLMD::View2D< T, N, M >::operator= ( View2D< T, N, M > && )
defaultnoexcept

◆ operator[]() [1/2]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
const element_type PLMD::View2D< T, N, M >::operator[] ( size_t i) const
inlineconstexprnoexcept

returns the reference i-th element

◆ operator[]() [2/2]

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
element_type PLMD::View2D< T, N, M >::operator[] ( size_t i)
inlineconstexprnoexcept

returns the View to the i-th row

◆ size()

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
size_t PLMD::View2D< T, N, M >::size ( ) const
inlineconstexprnoexcept

returns the size of the first dimension

Member Data Documentation

◆ ptr_

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
pointer PLMD::View2D< T, N, M >::ptr_
private

◆ sizeM_

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
std::size_t PLMD::View2D< T, N, M >::sizeM_ {M}
private

◆ sizeN_

template<typename T, std::size_t N = helpers::dynamic_extent, std::size_t M = helpers::dynamic_extent>
std::size_t PLMD::View2D< T, N, M >::sizeN_ {N}
private

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