MCRO
C++23 utilities for Unreal Engine.
Loading...
Searching...
No Matches
Mcro::FunctionTraits Namespace Reference

Namespaces

namespace  Detail
 

Data Structures

struct  TFunctionFromTuple_Struct
 
struct  TFunctionTraits
 
struct  TFunctionTraits< ReturnIn(*)(Args...)>
 
struct  TFunctionTraits< ReturnIn(Args...)>
 
struct  TFunctionTraits< ReturnIn(ClassIn::*)(Args...) const >
 
struct  TFunctionTraits< ReturnIn(ClassIn::*)(Args...)>
 
struct  TFunctionTraits< T >
 

Concepts

concept  CFunctorObject
 
concept  CFunctionLike
 
concept  CFunctionPtr
 
concept  CHasFunction
 

Typedefs

template<typename T >
using TFunction_Arguments = typename TFunctionTraits<std::decay_t<T>>::Arguments
 
template<typename T , int I>
using TFunction_Arg = typename TFunctionTraits<std::decay_t<T>>::template Arg<I>
 
template<typename T , int I>
using TFunction_ArgDecay = typename TFunctionTraits<std::decay_t<T>>::template ArgDecay<I>
 
template<typename T >
using TFunction_Return = typename TFunctionTraits<std::decay_t<T>>::Return
 
template<typename T >
using TFunction_Signature = typename TFunctionTraits<std::decay_t<T>>::Signature
 
template<typename T >
using TFunction_Class = typename TFunctionTraits<std::decay_t<T>>::Class
 
template<typename Return , typename Tuple , size_t... Indices>
using TFunctionFromTupleIndices = Return(typename TTupleElement<Indices, Tuple>::Type...)
 
template<typename Return , typename Tuple >
using TFunctionFromTuple = typename TFunctionFromTuple_Struct<std::decay_t<Return>, std::decay_t<Tuple>>::Type
 
template<typename Return , typename DstFunction >
using TSetReturn = TFunctionFromTuple<Return, TFunction_Arguments<DstFunction>>
 
template<typename SrcFunction , typename DstFunction >
using TCopyReturn = TSetReturn<TFunction_Return<SrcFunction>, DstFunction>
 

Functions

template<typename Function >
TFunction_Return< Function > InvokeWithTuple (Function &&function, TFunction_Arguments< Function > const &arguments)
 
template<CFunctionPtr Function, CHasFunction< Function > Object>
TFunction_Return< Function > InvokeWithTuple (Object *object, Function &&function, TFunction_Arguments< Function > const &arguments)
 

Variables

template<typename T >
constexpr size_t TFunction_ArgCount = TFunctionTraits<std::decay_t<T>>::ArgumentCount
 
template<typename T >
constexpr bool TFunction_IsMember = TFunctionTraits<std::decay_t<T>>::IsMember
 
template<typename T >
constexpr bool TFunction_IsConst = TFunctionTraits<std::decay_t<T>>::IsConst
 

Typedef Documentation

◆ TCopyReturn

template<typename SrcFunction , typename DstFunction >
using Mcro::FunctionTraits::TCopyReturn = TSetReturn<TFunction_Return<SrcFunction>, DstFunction>

Definition at line 191 of file FunctionTraits.h.

◆ TFunction_Arg

template<typename T , int I>
using Mcro::FunctionTraits::TFunction_Arg = typename TFunctionTraits<std::decay_t<T>>::template Arg<I>

Shorthand for getting a type of a function argument at given position I.

Definition at line 134 of file FunctionTraits.h.

◆ TFunction_ArgDecay

template<typename T , int I>
using Mcro::FunctionTraits::TFunction_ArgDecay = typename TFunctionTraits<std::decay_t<T>>::template ArgDecay<I>

Shorthand for getting a decayed type of a function argument at given position I.

Definition at line 138 of file FunctionTraits.h.

◆ TFunction_Arguments

template<typename T >
using Mcro::FunctionTraits::TFunction_Arguments = typename TFunctionTraits<std::decay_t<T>>::Arguments

Shorthand for getting a type of a function argument at given position I.

Definition at line 130 of file FunctionTraits.h.

◆ TFunction_Class

template<typename T >
using Mcro::FunctionTraits::TFunction_Class = typename TFunctionTraits<std::decay_t<T>>::Class

Definition at line 150 of file FunctionTraits.h.

◆ TFunction_Return

template<typename T >
using Mcro::FunctionTraits::TFunction_Return = typename TFunctionTraits<std::decay_t<T>>::Return

Definition at line 144 of file FunctionTraits.h.

◆ TFunction_Signature

template<typename T >
using Mcro::FunctionTraits::TFunction_Signature = typename TFunctionTraits<std::decay_t<T>>::Signature

Definition at line 147 of file FunctionTraits.h.

◆ TFunctionFromTuple

template<typename Return , typename Tuple >
using Mcro::FunctionTraits::TFunctionFromTuple = typename TFunctionFromTuple_Struct<std::decay_t<Return>, std::decay_t<Tuple>>::Type

Definition at line 185 of file FunctionTraits.h.

◆ TFunctionFromTupleIndices

template<typename Return , typename Tuple , size_t... Indices>
using Mcro::FunctionTraits::TFunctionFromTupleIndices = Return(typename TTupleElement<Indices, Tuple>::Type...)

Definition at line 171 of file FunctionTraits.h.

◆ TSetReturn

template<typename Return , typename DstFunction >
using Mcro::FunctionTraits::TSetReturn = TFunctionFromTuple<Return, TFunction_Arguments<DstFunction>>

Definition at line 188 of file FunctionTraits.h.

Function Documentation

◆ InvokeWithTuple() [1/2]

template<typename Function >
TFunction_Return< Function > Mcro::FunctionTraits::InvokeWithTuple ( Function && function,
TFunction_Arguments< Function > const & arguments )

A clone of std::apply for Unreal tuples which also supports function pointers. TL;DR: It calls a function with arguments supplied from a tuple.

Definition at line 222 of file FunctionTraits.h.

◆ InvokeWithTuple() [2/2]

template<CFunctionPtr Function, CHasFunction< Function > Object>
TFunction_Return< Function > Mcro::FunctionTraits::InvokeWithTuple ( Object * object,
Function && function,
TFunction_Arguments< Function > const & arguments )

A clone of std::apply for Unreal tuples which also supports function pointers. This overload can bind an object TL;DR: It calls a function with arguments supplied from a tuple.

Definition at line 235 of file FunctionTraits.h.

Variable Documentation

◆ TFunction_ArgCount

template<typename T >
size_t Mcro::FunctionTraits::TFunction_ArgCount = TFunctionTraits<std::decay_t<T>>::ArgumentCount
inlineconstexpr

Definition at line 141 of file FunctionTraits.h.

◆ TFunction_IsConst

template<typename T >
bool Mcro::FunctionTraits::TFunction_IsConst = TFunctionTraits<std::decay_t<T>>::IsConst
inlineconstexpr

Definition at line 156 of file FunctionTraits.h.

◆ TFunction_IsMember

template<typename T >
bool Mcro::FunctionTraits::TFunction_IsMember = TFunctionTraits<std::decay_t<T>>::IsMember
inlineconstexpr

Definition at line 153 of file FunctionTraits.h.