lin
Public Types | Public Member Functions | List of all members
lin::internal::Base< D > Class Template Reference

Value backed tensor interface with resizing support. More...

#include <lin/core/types/base.hpp>

Inheritance diagram for lin::internal::Base< D >:
lin::internal::Mapping< D > lin::internal::Dimensions< D > lin::internal::Stream< D > lin::internal::Tensor< D > lin::internal::TensorView< D >

Public Types

typedef traits< D > Traits
 Traits information for this type. More...
 
- Public Types inherited from lin::internal::Mapping< D >
typedef traits< D > Traits
 Traits information for this type. More...
 
- Public Types inherited from lin::internal::Stream< D >
typedef traits< D > Traits
 Traits information for this type. More...
 

Public Member Functions

constexpr Base (Base< D > const &)=default
 
constexpr Base (Base< D > &&)=default
 
constexpr Base< D > & operator= (Base< D > const &)=default
 
constexpr Base< D > & operator= (Base< D > &&)=default
 
constexpr Traits::elem_tdata ()
 Retrives a pointer to the element backing array. More...
 
constexpr Traits::elem_t const * data () const
 Retrives a constant pointer to the element backing array. More...
 
constexpr Traits::elem_toperator() (size_t i, size_t j)
 Provides read and write access to tensor elements. More...
 
constexpr Traits::elem_toperator() (size_t i)
 Provides read and write access to tensor elements. More...
 
- Public Member Functions inherited from lin::internal::Mapping< D >
constexpr Mapping (Mapping< D > const &)=default
 
constexpr Mapping (Mapping< D > &&)=default
 
constexpr Mapping< D > & operator= (Mapping< D > const &)=default
 
constexpr Mapping< D > & operator= (Mapping< D > &&)=default
 
constexpr Traits::elem_toperator() (size_t i, size_t j)
 Provides read and write access to tensor elements. More...
 
constexpr Traits::elem_t operator() (size_t i, size_t j) const
 Provides read only access to tensor elements. More...
 
constexpr Traits::elem_toperator() (size_t i)
 Provides read and write access to tensor elements. More...
 
constexpr Traits::elem_t operator() (size_t i) const
 Provides read only access to tensor elements. More...
 
constexpr Traits::elem_toperator[] (size_t i)
 Provides read and write access to tensor elements. More...
 
constexpr Traits::elem_t operator[] (size_t i) const
 Provides read only access to tensor elements. More...
 
template<typename T , std::enable_if_t< is_detected< assign_expr, typename Traits::elem_t, T >::value, size_t > = 0>
constexpr D & operator= (std::initializer_list< T > const &list)
 Copy an initializer list's elements into the tensor's elements. More...
 
template<class C , std::enable_if_t< conjunction< have_same_dimensions< D, C >, is_detected< assign_expr, typename Traits::elem_t, traits_elem_t< C >> >::value, size_t > = 0>
constexpr D & operator= (Stream< C > const &s)
 Copy another tensor's elements into this tenosr's elements. More...
 
- Public Member Functions inherited from lin::internal::Stream< D >
constexpr Stream (Stream< D > const &)=default
 
constexpr Stream (Stream< D > &&)=default
 
constexpr Stream< D > & operator= (Stream< D > const &)=default
 
constexpr Stream< D > & operator= (Stream< D > &&)=default
 
constexpr size_t rows () const
 
constexpr size_t cols () const
 
constexpr size_t size () const
 
constexpr Traits::elem_t operator() (size_t i, size_t j) const
 Provides read only access to tensor elements. More...
 
constexpr Traits::elem_t operator() (size_t i) const
 Provides read only access to tensor elements. More...
 
constexpr Traits::elem_t operator[] (size_t i) const
 Provides read only access to tensor elements. More...
 
constexpr Traits::eval_t eval () const
 Forces evaluation of this stream to a value backed type. More...
 
- Public Member Functions inherited from lin::internal::Dimensions< D >
constexpr Dimensions (Dimensions< D > const &)=default
 
constexpr Dimensions (Dimensions< D > &&)=default
 
constexpr Dimensions< D > & operator= (Dimensions< D > const &)=default
 
constexpr Dimensions< D > & operator= (Dimensions< D > &&)=default
 
constexpr size_t rows () const
 
constexpr size_t cols () const
 
constexpr void resize (size_t r, size_t c)
 Resizes a tensor's dimensions. More...
 

Additional Inherited Members

- Protected Member Functions inherited from lin::internal::Stream< D >
constexpr D & derived ()
 
constexpr D const & derived () const
 

Detailed Description

template<class D>
class lin::internal::Base< D >

Value backed tensor interface with resizing support.

Template Parameters
DDerived type.

This is the third of the three main entry points on the lin inheritance tree after internal::Mapping.

Here, direct tracking of runtime dimensions and the ability to resize is added. A getter to retrive a pointer to the element backing array is also included.

The main purpose is to provide an interface that supports value backed types

See also
internal::Stream
internal::Mapping
internal::Tensor

Member Typedef Documentation

template<class D>
typedef traits<D> lin::internal::Base< D >::Traits

Traits information for this type.

See also
internal::traits

Member Function Documentation

template<class D>
constexpr Traits::elem_t* lin::internal::Base< D >::data ( )
inline

Retrives a pointer to the element backing array.

Returns
Pointer to the backing array.

The elements of the tensor are layed out in row major order in the backing array. They are stored contiguously in memory.

template<class D>
constexpr Traits::elem_t const* lin::internal::Base< D >::data ( ) const
inline

Retrives a constant pointer to the element backing array.

Returns
Constant pointer to the backing array.

The elements of the tensor are layed out in row major order in the backing array. They are stored contiguously in memory.

template<class D>
constexpr Traits::elem_t& lin::internal::Base< D >::operator() ( size_t  i,
size_t  j 
)
inline

Provides read and write access to tensor elements.

Parameters
iRow index.
jColumn index.
Returns
Reference to the tensor element.

If the indices are out of bounds as defined by the tensor's current dimensions, lin assertion errors will be triggered.

template<class D>
constexpr Traits::elem_t& lin::internal::Base< D >::operator() ( size_t  i)
inline

Provides read and write access to tensor elements.

Parameters
iIndex
Returns
Reference to the tensor element.

Element access proceeds as if all the elements of the tensor stream were flattened into an array in row major order.

If the index is out of bounds as defined by the tensor's current size, lin lin assertion errors will be triggered.


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