Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Macros
SkCallableTraits.h File Reference
#include <type_traits>
#include <tuple>

Go to the source code of this file.

Classes

struct  sk_base_callable_traits< R, Args >
 
struct  sk_base_callable_traits< R, Args >::argument< N >
 
struct  SkCallableTraits< T >
 
struct  SkCallableTraits< R T::* >
 

Macros

#define SK_CALLABLE_TRAITS__COMMA   ,
 
#define SK_CALLABLE_TRAITS__VARARGS(quals, _)
 
#define SK_CALLABLE_TRAITS__NE_VARARGS(quals, _)   SK_CALLABLE_TRAITS__VARARGS(quals,)
 
#define SK_CALLABLE_TRAITS__REF_NE_VARARGS(quals, _)
 
#define SK_CALLABLE_TRAITS__CV_REF_NE_VARARGS()
 
#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs)
 
#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs)
 
#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs)
 

Macro Definition Documentation

◆ SK_CALLABLE_TRAITS__COMMA

#define SK_CALLABLE_TRAITS__COMMA   ,

Definition at line 23 of file SkCallableTraits.h.

◆ SK_CALLABLE_TRAITS__CV_REF_NE_VARARGS

#define SK_CALLABLE_TRAITS__CV_REF_NE_VARARGS ( )
Value:
SK_CALLABLE_TRAITS__REF_NE_VARARGS(const,) \
SK_CALLABLE_TRAITS__REF_NE_VARARGS(volatile,) \
SK_CALLABLE_TRAITS__REF_NE_VARARGS(const volatile,)
#define SK_CALLABLE_TRAITS__REF_NE_VARARGS(quals, _)

Definition at line 43 of file SkCallableTraits.h.

49 : SkCallableTraits<decltype(&T::operator())> {};
50
51// function (..., (const, volatile), (&, &&), noexcept)
52#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs) \
53template <typename R, typename... Args> \
54struct SkCallableTraits<R(Args... varargs) quals> : sk_base_callable_traits<R, Args...> {};
55
57#undef SK_CALLABLE_TRAITS__INSTANCE
58
59// pointer to function (..., noexcept)
60#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs) \
61template <typename R, typename... Args> \
62struct SkCallableTraits<R(*)(Args... varargs) quals> : sk_base_callable_traits<R, Args...> {};
63
65#undef SK_CALLABLE_TRAITS__INSTANCE
66
67// pointer to method (..., (const, volatile), (&, &&), noexcept)
68#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs) \
69template <typename T, typename R, typename... Args> \
70struct SkCallableTraits<R(T::*)(Args... varargs) quals> : sk_base_callable_traits<R, Args...> {};
71
73#undef SK_CALLABLE_TRAITS__INSTANCE
74
75// pointer to field
76template <typename T, typename R>
77struct SkCallableTraits<R T::*> : sk_base_callable_traits<typename std::add_lvalue_reference<R>::type> {};
78
79#undef SK_CALLABLE_TRAITS__CV_REF_NE_VARARGS
80#undef SK_CALLABLE_TRAITS__REF_NE_VARARGS
81#undef SK_CALLABLE_TRAITS__NE_VARARGS
82#undef SK_CALLABLE_TRAITS__VARARGS
83#undef SK_CALLABLE_TRAITS__COMMA
84
85#endif
#define SK_CALLABLE_TRAITS__NE_VARARGS(quals, _)
#define SK_CALLABLE_TRAITS__CV_REF_NE_VARARGS()
#define R(r)
#define T

◆ SK_CALLABLE_TRAITS__INSTANCE [1/3]

#define SK_CALLABLE_TRAITS__INSTANCE (   quals,
  varargs 
)
Value:
template <typename R, typename... Args> \
struct SkCallableTraits<R(Args... varargs) quals> : sk_base_callable_traits<R, Args...> {};

Definition at line 53 of file SkCallableTraits.h.

55 : sk_base_callable_traits<R, Args...> {};

◆ SK_CALLABLE_TRAITS__INSTANCE [2/3]

#define SK_CALLABLE_TRAITS__INSTANCE (   quals,
  varargs 
)
Value:
template <typename R, typename... Args> \
struct SkCallableTraits<R(*)(Args... varargs) quals> : sk_base_callable_traits<R, Args...> {};

Definition at line 53 of file SkCallableTraits.h.

55 : sk_base_callable_traits<R, Args...> {};

◆ SK_CALLABLE_TRAITS__INSTANCE [3/3]

#define SK_CALLABLE_TRAITS__INSTANCE (   quals,
  varargs 
)
Value:
template <typename T, typename R, typename... Args> \
struct SkCallableTraits<R(T::*)(Args... varargs) quals> : sk_base_callable_traits<R, Args...> {};

Definition at line 53 of file SkCallableTraits.h.

55 : sk_base_callable_traits<R, Args...> {};

◆ SK_CALLABLE_TRAITS__NE_VARARGS

#define SK_CALLABLE_TRAITS__NE_VARARGS (   quals,
 
)    SK_CALLABLE_TRAITS__VARARGS(quals,)

Definition at line 34 of file SkCallableTraits.h.

◆ SK_CALLABLE_TRAITS__REF_NE_VARARGS

#define SK_CALLABLE_TRAITS__REF_NE_VARARGS (   quals,
 
)
Value:
SK_CALLABLE_TRAITS__NE_VARARGS(quals &,) \
SK_CALLABLE_TRAITS__NE_VARARGS(quals &&,)

Definition at line 38 of file SkCallableTraits.h.

◆ SK_CALLABLE_TRAITS__VARARGS

#define SK_CALLABLE_TRAITS__VARARGS (   quals,
 
)
Value:
SK_CALLABLE_TRAITS__INSTANCE(quals, SK_CALLABLE_TRAITS__COMMA ...)
#define SK_CALLABLE_TRAITS__COMMA
#define SK_CALLABLE_TRAITS__INSTANCE(quals, varargs)

Definition at line 25 of file SkCallableTraits.h.