COMMS
Template library intended to help with implementation of communication protocols.
Public Types | Public Member Functions | Related Functions | List of all members
comms::util::ArrayView< T > Class Template Reference

#include "comms/util/ArrayView.h"

Detailed Description

template<typename T>
class comms::util::ArrayView< T >

Describes an object that can refer to a constant contiguous sequence of other objects.

Provides "view" on the original data.

Public Types

using const_iterator = const_pointer
 Implementation defined constant RandomAccessIterator and ContiguousIterator whose value_type is T.
 
using const_pointer = const T *
 Pointer to the constant element (const T*)
 
using const_reference = const T &
 Reference to a const element (const T&)
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 Same as std::reverse_iterator<const_iterator>
 
using ConstIterator = const_iterator
 Same as const_iterator.
 
using ConstPointer = const_pointer
 Same as const_pointer.
 
using ConstReference = const_reference
 Same as const_reference.
 
using ConstReverseIterator = const_reverse_iterator
 Same as const_reverse_iterator.
 
using iterator = const_iterator
 Same as const_iterator.
 
using Iterator = iterator
 Same as iterator.
 
using pointer = T *
 Pointer to the single element (T*)
 
using Pointer = pointer
 Same as pointer.
 
using reference = T &
 Reference to an element (T&)
 
using Reference = reference
 Same as reference.
 
using reverse_iterator = const_reverse_iterator
 Same as const_reverse_iterator.
 
using ReverseIterator = reverse_iterator
 Same as reverse_iterator.
 
using size_type = std::size_t
 Equal to std::size_t.
 
using SizeType = size_type
 Same as size_type;.
 
using value_type = T
 Type of the single element.
 
using ValueType = value_type
 Same as value_type.
 

Public Member Functions

 ArrayView () noexcept=default
 Default constructor.
 
 ArrayView (const ArrayView &) noexcept=default
 Copy constructor.
 
template<std::size_t TN>
 ArrayView (const T(&data)[TN]) noexcept
 Construct out of array of elements with known size.
 
 ArrayView (const_pointer data, size_type len) noexcept
 Constructor.
 
template<std::size_t TN>
 ArrayView (T(&data)[TN]) noexcept
 Construct out of array of elements with known size.
 
template<typename TIter >
 ArrayView (TIter iter, size_type len) noexcept
 Constructor.
 
 ~ArrayView () noexcept=default
 Destructor.
 
const_reference at (size_type pos) const
 Element access with range check. More...
 
constexpr const_reference back () const
 Access the last element. More...
 
constexpr const_iterator begin () const noexcept
 Iterator to begining of the sequence.
 
constexpr const_iterator cbegin () const noexcept
 Iterator to begining of the sequence.
 
constexpr const_iterator cend () const noexcept
 Iterator to the end of the sequence.
 
const_reverse_iterator crbegin () const noexcept
 Reverse iterator to the end of the sequence.
 
const_reverse_iterator crend () const noexcept
 Reverse iterator to the beginning of the sequence.
 
constexpr bool empty () const noexcept
 Check the view is empty. More...
 
constexpr const_iterator end () const noexcept
 Iterator to the end of the sequence.
 
constexpr const_reference front () const
 Access the first element. More...
 
constexpr size_type length () const noexcept
 Same as ref size()
 
ArrayViewoperator= (const ArrayView &)=default
 Copy assign.
 
template<std::size_t TN>
ArrayViewoperator= (const T(&data)[TN])
 Assign array of elements with known size.
 
template<std::size_t TN>
ArrayViewoperator= (T(&data)[TN])
 Assign array of elements with known size.
 
constexpr const_reference operator[] (size_type pos) const
 Element access operator.
 
const_reverse_iterator rbegin () const noexcept
 Reverse iterator to the end of the sequence.
 
void remove_prefix (size_type n)
 Narrow the view by skipping number of elements at the beginning. More...
 
void remove_suffix (size_type n)
 Narrow the view by dropping number of elements at the end. More...
 
reverse_iterator rend () const noexcept
 Reverse iterator to the beginning of the sequence.
 
constexpr size_type size () const noexcept
 Get number of element in the view.
 
void swap (ArrayView &other) noexcept
 Swap contents of two views.
 

Related Functions

(Note that these are not member functions.)

template<typename T >
bool operator!= (const ArrayView< T > &view1, const ArrayView< T > &view2) noexcept
 Inequality compare between the views.
 
template<typename T >
bool operator< (const ArrayView< T > &view1, const ArrayView< T > &view2) noexcept
 Lexicographical compare between the views.
 
template<typename T >
bool operator<= (const ArrayView< T > &view1, const ArrayView< T > &view2) noexcept
 Lexicographical compare between the views.
 
template<typename T >
bool operator== (const ArrayView< T > &view1, const ArrayView< T > &view2) noexcept
 Equality compare between the views.
 
template<typename T >
bool operator> (const ArrayView< T > &view1, const ArrayView< T > &view2) noexcept
 Lexicographical compare between the views.
 
template<typename T >
bool operator>= (const ArrayView< T > &view1, const ArrayView< T > &view2) noexcept
 Lexicographical compare between the views.
 
template<typename T >
void swap (comms::util::ArrayView< T > &view1, comms::util::ArrayView< T > &view2)
 Specializes the std::swap algorithm.
 

Member Function Documentation

◆ at()

template<typename T >
const_reference comms::util::ArrayView< T >::at ( size_type  pos) const

Element access with range check.

Checks the range with COMMS_ASSERT() macro without throwing exception.

◆ back()

template<typename T >
constexpr const_reference comms::util::ArrayView< T >::back ( ) const
constexpr

Access the last element.

Precondition
The view is not empty

◆ empty()

template<typename T >
constexpr bool comms::util::ArrayView< T >::empty ( ) const
constexprnoexcept

Check the view is empty.

Returns
true if and only if call to size() returns 0.

◆ front()

template<typename T >
constexpr const_reference comms::util::ArrayView< T >::front ( ) const
constexpr

Access the first element.

Precondition
The view is not empty

◆ remove_prefix()

template<typename T >
void comms::util::ArrayView< T >::remove_prefix ( size_type  n)

Narrow the view by skipping number of elements at the beginning.

Precondition
n is less or equal to value returned by size().

◆ remove_suffix()

template<typename T >
void comms::util::ArrayView< T >::remove_suffix ( size_type  n)

Narrow the view by dropping number of elements at the end.

Precondition
n is less or equal to value returned by size().

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