5#ifndef WASMTIME_SPAN_HH 
    6#define WASMTIME_SPAN_HH 
    9#if __has_include(<span>) 
   25template <
typename T, std::
size_t Extent = std::dynamic_extent>
 
   26using Span = std::span<T, Extent>;
 
   32    std::numeric_limits<std::size_t>::max();
 
   39template <
typename T, std::
size_t Extent = dynamic_extent> 
class Span;
 
   42template <
typename T> 
struct IsSpan : std::false_type {};
 
   44template <
typename T, std::
size_t Extent>
 
   47template <
typename T, std::
size_t Extent> 
class Span {
 
   49                "The current implementation supports dynamic-extent span only");
 
   56  Span(T *t, std::size_t n) : ptr_{t}, size_{n} {}
 
   62                    std::is_pointer_v<decltype(std::declval<C &>().data())> &&
 
   63                    std::is_convertible_v<
 
   64                        std::remove_pointer_t<
 
   65                            decltype(std::declval<C &>().data())> (*)[],
 
   67                    std::is_convertible_v<decltype(std::declval<C>().size()),
 
   70  Span(C &range) : ptr_{range.data()}, size_{range.size()} {}
 
   78  T *
data()
 const { 
return ptr_; }
 
   81  std::size_t 
size()
 const { 
return size_; }
 
   92  std::size_t 
size_bytes()
 const { 
return sizeof(T) * size_; }
 
Span class used when c++20 is not available.
Definition: span.hh:47
 
std::size_t size_bytes() const
Returns size in bytes.
Definition: span.hh:92
 
std::size_t size() const
Returns number of data that referred by Span class.
Definition: span.hh:81
 
iterator end() const
Returns end iterator.
Definition: span.hh:87
 
T * iterator
Type used to iterate over this span (a raw pointer)
Definition: span.hh:53
 
T * data() const
Returns pointer to data.
Definition: span.hh:78
 
Span(T *t, std::size_t n)
Constructor of Span class.
Definition: span.hh:56
 
iterator begin() const
Returns begin iterator.
Definition: span.hh:84
 
T & operator[](ptrdiff_t idx) const
Returns item by index.
Definition: span.hh:73
 
Span(C &range)
Constructor of Span class for containers.
Definition: span.hh:70
 
constexpr size_t dynamic_extent
Means number of elements determined at runtime.
Definition: span.hh:31
 
Check whether a type is Span
Definition: span.hh:42