Bitcoin ABC  0.28.12
P2P Digital Currency
Classes | Macros | Functions
span.h File Reference
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <type_traits>
Include dependency graph for span.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Span< C >
 A Span is an object that can refer to a contiguous sequence of objects. More...
 
struct  Span< C >::is_Span_int< T >
 
struct  Span< C >::is_Span_int< Span< T > >
 
struct  Span< C >::is_Span< T >
 

Macros

#define CONSTEXPR_IF_NOT_DEBUG   constexpr
 
#define ASSERT_IF_DEBUG(x)
 
#define SPAN_ATTR_LIFETIMEBOUND
 

Functions

template<typename T , typename EndOrSize >
 Span (T *, EndOrSize) -> Span< T >
 
template<typename T , std::size_t N>
 Span (T(&)[N]) -> Span< T >
 
template<typename T >
 Span (T &&) -> Span< std::enable_if_t< !std::is_lvalue_reference_v< T >, const std::remove_pointer_t< decltype(std::declval< T && >().data())>>>
 
template<typename T >
 Span (T &) -> Span< std::remove_pointer_t< decltype(std::declval< T & >().data())>>
 
template<typename T >
T & SpanPopBack (Span< T > &span)
 Pop the last element off a span, and return a reference to that element. More...
 
uint8_t * UCharCast (char *c)
 
uint8_t * UCharCast (uint8_t *c)
 
const uint8_t * UCharCast (const char *c)
 
const uint8_t * UCharCast (const uint8_t *c)
 
template<typename T >
constexpr auto UCharSpanCast (Span< T > s) -> Span< typename std::remove_pointer< decltype(UCharCast(s.data()))>::type >
 
template<typename V >
constexpr auto MakeUCharSpan (V &&v) -> decltype(UCharSpanCast(Span{std::forward< V >(v)}))
 Like the Span constructor, but for (const) uint8_t member types only. More...
 

Macro Definition Documentation

◆ ASSERT_IF_DEBUG

#define ASSERT_IF_DEBUG (   x)

Definition at line 19 of file span.h.

◆ CONSTEXPR_IF_NOT_DEBUG

#define CONSTEXPR_IF_NOT_DEBUG   constexpr

Definition at line 18 of file span.h.

◆ SPAN_ATTR_LIFETIMEBOUND

#define SPAN_ATTR_LIFETIMEBOUND

Definition at line 29 of file span.h.

Function Documentation

◆ MakeUCharSpan()

template<typename V >
constexpr auto MakeUCharSpan ( V &&  v) -> decltype(UCharSpanCast(Span{std::forward<V>(v)}))
constexpr

Like the Span constructor, but for (const) uint8_t member types only.

Only works for (un)signed char containers.

Definition at line 307 of file span.h.

Here is the caller graph for this function:

◆ Span() [1/4]

template<typename T >
Span ( T &&  ) -> Span< std::enable_if_t< !std::is_lvalue_reference_v< T >, const std::remove_pointer_t< decltype(std::declval< T && >().data())>>>

◆ Span() [2/4]

template<typename T >
Span ( T &  ) -> Span< std::remove_pointer_t< decltype(std::declval< T & >().data())>>

◆ Span() [3/4]

template<typename T , typename EndOrSize >
Span ( T *  ,
EndOrSize   
) -> Span< T >

◆ Span() [4/4]

template<typename T , std::size_t N>
Span ( T(&)  [N]) -> Span< T >

◆ SpanPopBack()

template<typename T >
T& SpanPopBack ( Span< T > &  span)

Pop the last element off a span, and return a reference to that element.

Definition at line 273 of file span.h.

Here is the call graph for this function:

◆ UCharCast() [1/4]

uint8_t* UCharCast ( char *  c)
inline

Definition at line 282 of file span.h.

Here is the caller graph for this function:

◆ UCharCast() [2/4]

const uint8_t* UCharCast ( const char *  c)
inline

Definition at line 288 of file span.h.

◆ UCharCast() [3/4]

const uint8_t* UCharCast ( const uint8_t *  c)
inline

Definition at line 291 of file span.h.

◆ UCharCast() [4/4]

uint8_t* UCharCast ( uint8_t *  c)
inline

Definition at line 285 of file span.h.

◆ UCharSpanCast()

template<typename T >
constexpr auto UCharSpanCast ( Span< T >  s) -> Span<typename std::remove_pointer<decltype(UCharCast(s.data()))>::type>
constexpr

Definition at line 297 of file span.h.

Here is the call graph for this function: