PXL
direction.hpp File Reference
#include <cstddef>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for direction.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pxl::ArgDirections
 
struct  pxl::detail::KernelFunctionTraits< R(*)(Args...)>
 
struct  pxl::detail::KernelFunctionTraits< R(*)(Args...) noexcept >
 
struct  pxl::detail::KernelParamDirection< T, typename >
 
struct  pxl::detail::KernelParamDirection< T, std::void_t< typename T::element_type, typename T::kernel_buffer_direction > >
 
struct  pxl::detail::IsDirectionalKernelParam< T, typename >
 
struct  pxl::detail::IsDirectionalKernelParam< T, std::void_t< typename T::element_type, typename T::kernel_buffer_direction > >
 
struct  pxl::detail::ActualKernelBuffer< T >
 
struct  pxl::detail::ActualKernelBuffer< T * >
 
struct  pxl::detail::ActualKernelBuffer< pxl::NDArray< T > >
 
struct  pxl::detail::KernelArgumentCompatible< Param, Actual, bool >
 
struct  pxl::detail::KernelArgumentCompatible< Param, Actual, true >
 

Namespaces

 pxl
 
 pxl::detail
 

Typedefs

template<auto Func, std::size_t Index>
using pxl::detail::KernelParamT = std::tuple_element_t< Index, typename KernelFunctionTraits< decltype(Func)>::parameters >
 
template<auto Func, typename... Actual>
using pxl::detail::EnableCompatibleKernelArguments = std::enable_if_t< KernelArgumentsCompatibleV< Func, Actual... >, int >
 

Enumerations

enum class  pxl::ArgDir : unsigned char { pxl::InOut , pxl::Input , pxl::Output }
 

Functions

template<auto Func, typename ActualTuple , std::size_t... Indices>
constexpr bool pxl::detail::KernelArgumentsCompatible (std::index_sequence< Indices... >)
 
template<auto Func, typename... Actual>
constexpr bool pxl::detail::KernelArgumentsCompatible ()
 
template<auto Func>
ArgDirections pxl::detail::MakeKernelDirections ()
 

Variables

template<auto Func>
constexpr std::size_t pxl::detail::KernelArityV = KernelFunctionTraits<decltype(Func)>::arity
 
template<typename T >
constexpr ArgDir pxl::detail::KernelParamDirectionV
 
template<typename T >
constexpr bool pxl::detail::IsDirectionalKernelParamV
 
template<typename Param , typename Actual >
constexpr bool pxl::detail::KernelArgumentCompatibleV
 
template<auto Func, typename... Actual>
constexpr bool pxl::detail::KernelArgumentsCompatibleV
 
template<auto Func, std::size_t... Indices>
ArgDirections pxl::detail::MakeKernelDirections (std::index_sequence< Indices... >)