unilink  0.4.3
A simple C++ library for unified async communication
unilink::memory::SafeSpan< T > Class Template Reference

A C++17 compatible span-like class for safe array access. More...

#include <safe_span.hpp>

Public Types

using element_type = T
 
using value_type = std::remove_cv_t< T >
 
using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 
using pointer = T *
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using iterator = T *
 
using const_iterator = const T *
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 

Public Member Functions

constexpr SafeSpan () noexcept
 
constexpr SafeSpan (pointer data, size_type size) noexcept
 
template<typename Container >
constexpr SafeSpan (Container &container) noexcept
 
template<typename Container >
constexpr SafeSpan (const Container &container) noexcept
 
constexpr reference operator[] (size_type index) const
 
constexpr reference at (size_type index) const
 
constexpr reference front () const
 
constexpr reference back () const
 
constexpr pointer data () const noexcept
 
constexpr size_type size () const noexcept
 
constexpr size_type size_bytes () const noexcept
 
constexpr bool empty () const noexcept
 
constexpr iterator begin () const noexcept
 
constexpr iterator end () const noexcept
 
constexpr const_iterator cbegin () const noexcept
 
constexpr const_iterator cend () const noexcept
 
constexpr reverse_iterator rbegin () const noexcept
 
constexpr reverse_iterator rend () const noexcept
 
constexpr const_reverse_iterator crbegin () const noexcept
 
constexpr const_reverse_iterator crend () const noexcept
 
constexpr SafeSpan< T > subspan (size_type offset, size_type count=SIZE_MAX) const
 
constexpr SafeSpan< T > first (size_type count) const
 
constexpr SafeSpan< T > last (size_type count) const
 

Detailed Description

template<typename T>
class unilink::memory::SafeSpan< T >

A C++17 compatible span-like class for safe array access.

This provides a lightweight, non-owning view over a contiguous sequence of objects. Similar to std::span (C++20) but fully compatible with C++17 environments.

Design Intent:

  • Zero-copy memory safety: Avoids unnecessary data copying.
  • Bounds safety: Provides safe access to underlying memory.
  • Interface compatibility: Mimics std::span for future upgradability.

Definition at line 38 of file safe_span.hpp.

Member Typedef Documentation

◆ const_iterator

template<typename T >
using unilink::memory::SafeSpan< T >::const_iterator = const T*

Definition at line 49 of file safe_span.hpp.

◆ const_pointer

template<typename T >
using unilink::memory::SafeSpan< T >::const_pointer = const T*

Definition at line 45 of file safe_span.hpp.

◆ const_reference

template<typename T >
using unilink::memory::SafeSpan< T >::const_reference = const T&

Definition at line 47 of file safe_span.hpp.

◆ const_reverse_iterator

template<typename T >
using unilink::memory::SafeSpan< T >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Definition at line 51 of file safe_span.hpp.

◆ difference_type

template<typename T >
using unilink::memory::SafeSpan< T >::difference_type = std::ptrdiff_t

Definition at line 43 of file safe_span.hpp.

◆ element_type

template<typename T >
using unilink::memory::SafeSpan< T >::element_type = T

Definition at line 40 of file safe_span.hpp.

◆ iterator

template<typename T >
using unilink::memory::SafeSpan< T >::iterator = T*

Definition at line 48 of file safe_span.hpp.

◆ pointer

template<typename T >
using unilink::memory::SafeSpan< T >::pointer = T*

Definition at line 44 of file safe_span.hpp.

◆ reference

template<typename T >
using unilink::memory::SafeSpan< T >::reference = T&

Definition at line 46 of file safe_span.hpp.

◆ reverse_iterator

template<typename T >
using unilink::memory::SafeSpan< T >::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 50 of file safe_span.hpp.

◆ size_type

template<typename T >
using unilink::memory::SafeSpan< T >::size_type = std::size_t

Definition at line 42 of file safe_span.hpp.

◆ value_type

template<typename T >
using unilink::memory::SafeSpan< T >::value_type = std::remove_cv_t<T>

Definition at line 41 of file safe_span.hpp.

Constructor & Destructor Documentation

◆ SafeSpan() [1/4]

template<typename T >
constexpr unilink::memory::SafeSpan< T >::SafeSpan ( )
inlineconstexprnoexcept

Definition at line 54 of file safe_span.hpp.

◆ SafeSpan() [2/4]

template<typename T >
constexpr unilink::memory::SafeSpan< T >::SafeSpan ( pointer  data,
size_type  size 
)
inlineconstexprnoexcept

Definition at line 56 of file safe_span.hpp.

◆ SafeSpan() [3/4]

template<typename T >
template<typename Container >
constexpr unilink::memory::SafeSpan< T >::SafeSpan ( Container &  container)
inlineconstexprnoexcept

Definition at line 59 of file safe_span.hpp.

◆ SafeSpan() [4/4]

template<typename T >
template<typename Container >
constexpr unilink::memory::SafeSpan< T >::SafeSpan ( const Container &  container)
inlineconstexprnoexcept

Definition at line 62 of file safe_span.hpp.

Member Function Documentation

◆ at()

template<typename T >
constexpr reference unilink::memory::SafeSpan< T >::at ( size_type  index) const
inlineconstexpr

Definition at line 68 of file safe_span.hpp.

◆ back()

template<typename T >
constexpr reference unilink::memory::SafeSpan< T >::back ( ) const
inlineconstexpr

Definition at line 77 of file safe_span.hpp.

◆ begin()

template<typename T >
constexpr iterator unilink::memory::SafeSpan< T >::begin ( ) const
inlineconstexprnoexcept

Definition at line 88 of file safe_span.hpp.

◆ cbegin()

template<typename T >
constexpr const_iterator unilink::memory::SafeSpan< T >::cbegin ( ) const
inlineconstexprnoexcept

Definition at line 92 of file safe_span.hpp.

◆ cend()

template<typename T >
constexpr const_iterator unilink::memory::SafeSpan< T >::cend ( ) const
inlineconstexprnoexcept

Definition at line 94 of file safe_span.hpp.

◆ crbegin()

template<typename T >
constexpr const_reverse_iterator unilink::memory::SafeSpan< T >::crbegin ( ) const
inlineconstexprnoexcept

Definition at line 100 of file safe_span.hpp.

◆ crend()

template<typename T >
constexpr const_reverse_iterator unilink::memory::SafeSpan< T >::crend ( ) const
inlineconstexprnoexcept

Definition at line 102 of file safe_span.hpp.

◆ data()

template<typename T >
constexpr pointer unilink::memory::SafeSpan< T >::data ( ) const
inlineconstexprnoexcept

Definition at line 79 of file safe_span.hpp.

◆ empty()

template<typename T >
constexpr bool unilink::memory::SafeSpan< T >::empty ( ) const
inlineconstexprnoexcept

Definition at line 85 of file safe_span.hpp.

◆ end()

template<typename T >
constexpr iterator unilink::memory::SafeSpan< T >::end ( ) const
inlineconstexprnoexcept

Definition at line 90 of file safe_span.hpp.

◆ first()

template<typename T >
constexpr SafeSpan<T> unilink::memory::SafeSpan< T >::first ( size_type  count) const
inlineconstexpr

Definition at line 116 of file safe_span.hpp.

◆ front()

template<typename T >
constexpr reference unilink::memory::SafeSpan< T >::front ( ) const
inlineconstexpr

Definition at line 75 of file safe_span.hpp.

◆ last()

template<typename T >
constexpr SafeSpan<T> unilink::memory::SafeSpan< T >::last ( size_type  count) const
inlineconstexpr

Definition at line 118 of file safe_span.hpp.

◆ operator[]()

template<typename T >
constexpr reference unilink::memory::SafeSpan< T >::operator[] ( size_type  index) const
inlineconstexpr

Definition at line 66 of file safe_span.hpp.

◆ rbegin()

template<typename T >
constexpr reverse_iterator unilink::memory::SafeSpan< T >::rbegin ( ) const
inlineconstexprnoexcept

Definition at line 96 of file safe_span.hpp.

◆ rend()

template<typename T >
constexpr reverse_iterator unilink::memory::SafeSpan< T >::rend ( ) const
inlineconstexprnoexcept

Definition at line 98 of file safe_span.hpp.

◆ size()

template<typename T >
constexpr size_type unilink::memory::SafeSpan< T >::size ( ) const
inlineconstexprnoexcept

Definition at line 81 of file safe_span.hpp.

◆ size_bytes()

template<typename T >
constexpr size_type unilink::memory::SafeSpan< T >::size_bytes ( ) const
inlineconstexprnoexcept

Definition at line 83 of file safe_span.hpp.

◆ subspan()

template<typename T >
constexpr SafeSpan<T> unilink::memory::SafeSpan< T >::subspan ( size_type  offset,
size_type  count = SIZE_MAX 
) const
inlineconstexpr

Definition at line 105 of file safe_span.hpp.


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