#include <type_traits>
#include <cstddef>
#include <algorithm>
#include <assert.h>
Go to the source code of this file.
|
template<typename A , int N> |
Span< A > constexpr | MakeSpan (A(&a)[N]) |
| MakeSpan for arrays: More...
|
|
template<typename V > |
constexpr auto | MakeSpan (V &&v SPAN_ATTR_LIFETIMEBOUND) -> typename std::enable_if<!std::is_lvalue_reference< V >::value, Span< const typename std::remove_pointer< decltype(v.data())>::type >>::type |
| MakeSpan for temporaries / rvalue references, only supporting const output. More...
|
|
template<typename V > |
constexpr auto | MakeSpan (V &v SPAN_ATTR_LIFETIMEBOUND) -> Span< typename std::remove_pointer< decltype(v.data())>::type > |
| MakeSpan for (lvalue) references, supporting mutable output. More...
|
|
template<typename T > |
T & | SpanPopBack (Span< T > &span) |
| Pop the last element off a span, and return a reference to that element. More...
|
|
unsigned char * | UCharCast (char *c) |
|
unsigned char * | UCharCast (unsigned char *c) |
|
const unsigned char * | UCharCast (const char *c) |
|
const unsigned char * | UCharCast (const unsigned char *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(MakeSpan(std::forward< V >(v)))) |
| Like MakeSpan, but for (const) unsigned char member types only. More...
|
|
◆ ASSERT_IF_DEBUG
#define ASSERT_IF_DEBUG |
( |
|
x | ) |
|
◆ CONSTEXPR_IF_NOT_DEBUG
#define CONSTEXPR_IF_NOT_DEBUG constexpr |
◆ SPAN_ATTR_LIFETIMEBOUND
#define SPAN_ATTR_LIFETIMEBOUND |
◆ MakeSpan() [1/3]
template<typename A , int N>
Span<A> constexpr MakeSpan |
( |
A(&) |
a[N] | ) |
|
MakeSpan for arrays:
Definition at line 222 of file span.h.
◆ MakeSpan() [2/3]
template<typename V >
constexpr auto MakeSpan |
( |
V &&v |
SPAN_ATTR_LIFETIMEBOUND | ) |
-> typename std::enable_if<!std::is_lvalue_reference<V>::value, Span<const typename std::remove_pointer<decltype(v.data())>::type>>::type |
MakeSpan for temporaries / rvalue references, only supporting const output.
Definition at line 224 of file span.h.
◆ MakeSpan() [3/3]
template<typename V >
constexpr auto MakeSpan |
( |
V &v |
SPAN_ATTR_LIFETIMEBOUND | ) |
-> Span<typename std::remove_pointer<decltype(v.data())>::type> |
MakeSpan for (lvalue) references, supporting mutable output.
Definition at line 226 of file span.h.
◆ MakeUCharSpan()
Like MakeSpan, but for (const) unsigned char member types only.
Only works for (un)signed char containers.
Definition at line 249 of file span.h.
◆ 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 230 of file span.h.
◆ UCharCast() [1/4]
unsigned char* UCharCast |
( |
char * |
c | ) |
|
|
inline |
◆ UCharCast() [2/4]
unsigned char* UCharCast |
( |
unsigned char * |
c | ) |
|
|
inline |
◆ UCharCast() [3/4]
const unsigned char* UCharCast |
( |
const char * |
c | ) |
|
|
inline |
◆ UCharCast() [4/4]
const unsigned char* UCharCast |
( |
const unsigned char * |
c | ) |
|
|
inline |
◆ UCharSpanCast()
template<typename T >
constexpr auto UCharSpanCast |
( |
Span< T > |
s | ) |
-> Span<typename std::remove_pointer<decltype(UCharCast(s.data()))>::type> |