DNA Calib 1.1
Project brief
Public Types | Public Member Functions | Private Attributes | List of all members
trust::ArrayView< T > Class Template Reference

A view over a continuous sequence of objects. More...

#include <ArrayView.h>

Inheritance diagram for trust::ArrayView< T >:
Inheritance graph
Collaboration diagram for trust::ArrayView< T >:
Collaboration graph

Public Types

using value_type = typename ArrayViewTraits< T >::value_type
 
using reference = typename ArrayViewTraits< T >::reference
 
using const_reference = typename ArrayViewTraits< T >::const_reference
 
using const_pointer = typename ArrayViewTraits< T >::const_pointer
 
using pointer = typename ArrayViewTraits< T >::pointer
 
using size_type = typename ArrayViewTraits< T >::size_type
 
using difference_type = typename ArrayViewTraits< T >::difference_type
 

Public Member Functions

 ArrayView ()=default
 
 ~ArrayView () noexcept=default
 
 ArrayView (const ArrayView &)=default
 
ArrayViewoperator= (const ArrayView &)=default
 
 ArrayView (ArrayView &&)=default
 
ArrayViewoperator= (ArrayView &&)=default
 
 ArrayView (pointer src, size_type size)
 
 ArrayView (std::nullptr_t, size_type)
 
template<typename U >
 ArrayView (ArrayView< U > &src)
 
template<typename U >
 ArrayView (const ArrayView< U > &src)
 
template<typename U >
 ArrayView (ArrayView< U > &&src)
 
template<typename U , typename std::enable_if<!std::is_rvalue_reference< U && >::value, int >::type = 0>
 ArrayView (U &&src)
 
size_type size () const
 
pointer data ()
 
const_pointer data () const
 
pointer begin ()
 
pointer end ()
 
const_pointer cbegin () const
 
const_pointer cend () const
 
const_pointer begin () const
 
const_pointer end () const
 
reference operator[] (std::size_t index)
 
const_reference operator[] (std::size_t index) const
 
reference at (std::size_t index)
 
const_reference at (std::size_t index) const
 
ArrayView subview (std::size_t offset, std::size_t count) const
 
ArrayView first (std::size_t count) const
 
ArrayView last (std::size_t count) const
 

Private Attributes

pointer ptr {nullptr}
 
size_type sz {}
 

Detailed Description

template<typename T>
class trust::ArrayView< T >

A view over a continuous sequence of objects.

Template Parameters
Telement type Provides a view over a continuous sequence of objects owned by some other object. Contains a count of elements and a pointer to a location where they are stored. ArrayView does not own the mmemory it points to - it does not perform any allocation and deallocation. It can be constructed given a pointer and element count, or a container type argument. The class provides helper methods for creating subviews over the objects, and methods for by-value comparison with containers. ConstArrayView represents an immutable view.

Member Typedef Documentation

◆ const_pointer

template<typename T >
using trust::ArrayView< T >::const_pointer = typename ArrayViewTraits<T>::const_pointer

◆ const_reference

template<typename T >
using trust::ArrayView< T >::const_reference = typename ArrayViewTraits<T>::const_reference

◆ difference_type

template<typename T >
using trust::ArrayView< T >::difference_type = typename ArrayViewTraits<T>::difference_type

◆ pointer

template<typename T >
using trust::ArrayView< T >::pointer = typename ArrayViewTraits<T>::pointer

◆ reference

template<typename T >
using trust::ArrayView< T >::reference = typename ArrayViewTraits<T>::reference

◆ size_type

template<typename T >
using trust::ArrayView< T >::size_type = typename ArrayViewTraits<T>::size_type

◆ value_type

template<typename T >
using trust::ArrayView< T >::value_type = typename ArrayViewTraits<T>::value_type

Constructor & Destructor Documentation

◆ ArrayView() [1/9]

template<typename T >
trust::ArrayView< T >::ArrayView ( )
default

◆ ~ArrayView()

template<typename T >
trust::ArrayView< T >::~ArrayView ( )
defaultnoexcept

◆ ArrayView() [2/9]

template<typename T >
trust::ArrayView< T >::ArrayView ( const ArrayView< T > &  )
default

◆ ArrayView() [3/9]

template<typename T >
trust::ArrayView< T >::ArrayView ( ArrayView< T > &&  )
default

◆ ArrayView() [4/9]

template<typename T >
trust::ArrayView< T >::ArrayView ( pointer  src,
size_type  size 
)
inline
74 :
75 ptr{src},
76 sz{size} {
77 }
pointer ptr
Definition: ArrayView.h:169
size_type size() const
Definition: ArrayView.h:98
size_type sz
Definition: ArrayView.h:170

◆ ArrayView() [5/9]

template<typename T >
trust::ArrayView< T >::ArrayView ( std::nullptr_t  ,
size_type   
)
inline
79 : ArrayView{nullptr, {}} {
80 }
ArrayView()=default

◆ ArrayView() [6/9]

template<typename T >
template<typename U >
trust::ArrayView< T >::ArrayView ( ArrayView< U > &  src)
inline
83 : ArrayView{src.data(), src.size()} {
84 }

◆ ArrayView() [7/9]

template<typename T >
template<typename U >
trust::ArrayView< T >::ArrayView ( const ArrayView< U > &  src)
inline
87 : ArrayView{src.data(), src.size()} {
88 }

◆ ArrayView() [8/9]

template<typename T >
template<typename U >
trust::ArrayView< T >::ArrayView ( ArrayView< U > &&  src)
inline
91 : ArrayView{src.data(), src.size()} {
92 }

◆ ArrayView() [9/9]

template<typename T >
template<typename U , typename std::enable_if<!std::is_rvalue_reference< U && >::value, int >::type = 0>
trust::ArrayView< T >::ArrayView ( U &&  src)
inlineexplicit
95 : ArrayView{src.data(), src.size()} {
96 }

Member Function Documentation

◆ at() [1/2]

template<typename T >
reference trust::ArrayView< T >::at ( std::size_t  index)
inline
144 {
145 return this->operator[](index);
146 }
reference operator[](std::size_t index)
Definition: ArrayView.h:134

◆ at() [2/2]

template<typename T >
const_reference trust::ArrayView< T >::at ( std::size_t  index) const
inline
148 {
149 return this->operator[](index);
150 }

◆ begin() [1/2]

template<typename T >
pointer trust::ArrayView< T >::begin ( )
inline

◆ begin() [2/2]

template<typename T >
const_pointer trust::ArrayView< T >::begin ( ) const
inline
126 {
127 return cbegin();
128 }
const_pointer cbegin() const
Definition: ArrayView.h:118

◆ cbegin()

template<typename T >
const_pointer trust::ArrayView< T >::cbegin ( ) const
inline
118 {
119 return ptr;
120 }

◆ cend()

template<typename T >
const_pointer trust::ArrayView< T >::cend ( ) const
inline
122 {
123 return ptr + sz;
124 }

◆ data() [1/2]

template<typename T >
pointer trust::ArrayView< T >::data ( )
inline

◆ data() [2/2]

template<typename T >
const_pointer trust::ArrayView< T >::data ( ) const
inline
106 {
107 return ptr;
108 }

◆ end() [1/2]

template<typename T >
pointer trust::ArrayView< T >::end ( )
inline

◆ end() [2/2]

template<typename T >
const_pointer trust::ArrayView< T >::end ( ) const
inline
130 {
131 return cend();
132 }
const_pointer cend() const
Definition: ArrayView.h:122

◆ first()

template<typename T >
ArrayView trust::ArrayView< T >::first ( std::size_t  count) const
inline
158 {
159 assert(count <= sz);
160 return {ptr, count};
161 }

◆ last()

template<typename T >
ArrayView trust::ArrayView< T >::last ( std::size_t  count) const
inline
163 {
164 assert(count <= sz);
165 return {ptr + (sz - count), count};
166 }

◆ operator=() [1/2]

template<typename T >
ArrayView & trust::ArrayView< T >::operator= ( ArrayView< T > &&  )
default

◆ operator=() [2/2]

template<typename T >
ArrayView & trust::ArrayView< T >::operator= ( const ArrayView< T > &  )
default

◆ operator[]() [1/2]

template<typename T >
reference trust::ArrayView< T >::operator[] ( std::size_t  index)
inline
134 {
135 assert(index < sz);
136 return ptr[index];
137 }

◆ operator[]() [2/2]

template<typename T >
const_reference trust::ArrayView< T >::operator[] ( std::size_t  index) const
inline
139 {
140 assert(index < sz);
141 return ptr[index];
142 }

◆ size()

template<typename T >
size_type trust::ArrayView< T >::size ( ) const
inline
98 {
99 return sz;
100 }

Referenced by trust::operator==().

◆ subview()

template<typename T >
ArrayView trust::ArrayView< T >::subview ( std::size_t  offset,
std::size_t  count 
) const
inline
152 {
153 assert(offset <= sz);
154 assert((offset + count) <= sz);
155 return {ptr + offset, count};
156 }

Member Data Documentation

◆ ptr

template<typename T >
pointer trust::ArrayView< T >::ptr {nullptr}
private

◆ sz

template<typename T >
size_type trust::ArrayView< T >::sz {}
private

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