LeechCraft  0.6.70-10870-g558588d6ec
Modular cross-platform feature rich live environment.
typegetter.h File Reference
#include <tuple>
#include <type_traits>
+ Include dependency graph for typegetter.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LeechCraft::Util::detail::DecomposeMemberPtr< typename >
 
struct  LeechCraft::Util::detail::DecomposeMemberPtr< R(C::*)>
 

Namespaces

 LeechCraft
 
 LeechCraft::Util
 
 LeechCraft::Util::detail
 

Typedefs

template<typename T >
using LeechCraft::Util::detail::VoidSafe = std::conditional_t< std::is_same< T, void > {}, ReturnsVoid, T >
 
template<typename F >
using LeechCraft::Util::detail::RetTypeRaw_t = std::tuple_element_t< 0, decltype(TypeGetter(*static_cast< F * >(nullptr)))>
 
template<typename F , size_t Idx>
using LeechCraft::Util::ArgType_t = std::tuple_element_t< Idx+1, decltype(detail::TypeGetter(*static_cast< F * >(nullptr)))>
 
template<typename F >
using LeechCraft::Util::RetType_t = std::conditional_t< std::is_same_v< detail::RetTypeRaw_t< F >, detail::ReturnsVoid >, void, detail::RetTypeRaw_t< F > >
 
template<auto Ptr>
using LeechCraft::Util::MemberPtrType_t = typename detail::DecomposeMemberPtr< decltype(Ptr)>::Value_t
 
template<auto Ptr>
using LeechCraft::Util::MemberPtrStruct_t = typename detail::DecomposeMemberPtr< decltype(Ptr)>::StructType_t
 

Functions

template<typename R , typename... Args>
std::tuple< VoidSafe< R >, Args... > LeechCraft::Util::detail::TypeGetter (R(*)(Args...))
 
template<typename F >
auto LeechCraft::Util::detail::TypeGetter (F &&f) -> decltype(TypeGetter(+f))
 
template<typename C , typename R , typename... Args>
std::tuple< VoidSafe< R >, Args... > LeechCraft::Util::detail::TypeGetter (R(C::*)(Args...) const)
 

Variables

template<typename C >
decltype(TypeGetter(&C::operator())) LeechCraft::Util::detail::TypeGetter (const C &c)