cuda-kat
CUDA kernel author's tools
Classes | Typedefs | Functions | Variables
span.hpp File Reference

This file implements kat::span an equivalent of C++'s std::span which may be used both in host-side and CUDA-device-side code, along with some supporting functions and overloaded operators for that class. More...

#include <type_traits>
#include <iterator>
#include <array>
#include <cassert>
#include <kat/containers/array.hpp>
#include "detail/normal_iterator.hpp"
#include <kat/detail/execution_space_specifiers.hpp>
#include <kat/detail/range_access.hpp>

Go to the source code of this file.

Classes

class  kat::span< Type, Extent >
 
struct  kat::detail::is_span< T >
 
struct  kat::detail::is_span< kat::span< T, Num > >
 
class  kat::detail::extent_storage< Extent >
 
class  kat::detail::extent_storage< dynamic_extent >
 
class  kat::span< Type, Extent >
 
struct  std::tuple_size< T >
 
struct  std::tuple_element< Integer, T >
 
struct  std::tuple_size< kat::span< Type, Extent > >
 
struct  std::tuple_element< Index, kat::span< Type, Extent > >
 

Typedefs

template<typename T >
using kat::detail::iter_reference_t = decltype(*std::declval< T & >())
 

Functions

template<class Type >
constexpr KAT_HD span< Type > kat::make_span (Type *first, Type *last)
 
template<class Type >
constexpr KAT_HD span< Type > kat::make_span (Type *ptr, std::size_t count)
 
template<class Type , std::size_t Extent>
constexpr KAT_HD span< Type, Extent > kat::make_span (Type(&arr)[Extent])
 
template<class Type , std::size_t Extent>
constexpr KAT_HD span< const Type, Extent > kat::make_span (const kat::array< Type, Extent > &arr)
 
template<class Type , std::size_t Extent>
constexpr KAT_HD span< Type, Extent > kat::make_span (kat::array< Type, Extent > &arr)
 
template<class Container >
constexpr KAT_HD span< typename Container::value_type > kat::make_span (Container &container)
 
template<class Container >
constexpr KAT_HD span< const typename Container::value_type > kat::make_span (const Container &container)
 
template<class Pointer >
constexpr KAT_HD span< typename Pointer::element_type > kat::make_span (Pointer &container, std::size_t count)
 
template<class Pointer >
constexpr KAT_HD span< typename Pointer::element_type > kat::make_span (Pointer &container)
 
template<std::size_t Index, typename Type , std::size_t Extent>
constexpr KAT_HD Type & std::get (kat::span< Type, Extent > sp) noexcept
 

Variables

constexpr const std::size_t kat::dynamic_extent = static_cast<std::size_t>(-1)
 

Detailed Description

This file implements kat::span an equivalent of C++'s std::span which may be used both in host-side and CUDA-device-side code, along with some supporting functions and overloaded operators for that class.