📄 function_pointer_adaptors.hpp
字号:
typedef A argument_type;
typedef return_type (STLSOFT_STDCALL *function_type)(argument_type);
public:
ss_explicit_k unary_stdcall_void_function_pointer(function_type func)
: m_func(func)
{}
void operator ()(argument_type arg) const
{
(*m_func)(arg);
}
private:
function_type m_func;
};
/** \brief A binary function adaptor for pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
// [[synesis:class:function-class:binary-function: binary_stdcall_void_function_pointer<T<R>, T<A0>, T<A1>>]]
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
struct binary_stdcall_void_function_pointer
: public stlsoft_ns_qual_std(binary_function)<A0, A1, void>
{
public:
typedef void return_type;
typedef A0 first_argument_type;
typedef A1 second_argument_type;
typedef return_type (STLSOFT_STDCALL *function_type)(first_argument_type, second_argument_type);
public:
ss_explicit_k binary_stdcall_void_function_pointer(function_type func)
: m_func(func)
{}
void operator ()(first_argument_type a0, second_argument_type a1) const
{
(*m_func)(a0, a1);
}
private:
function_type m_func;
};
# endif /* STLSOFT_CF_STDCALL_SUPPORTED */
#endif /* !STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID */
/* /////////////////////////////////////////////////////////////////////////
* Creator functions
*/
#ifdef STLSOFT_CF_CDECL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k R
, ss_typename_param_k A
>
unary_cdecl_function_pointer<R, A> ptr_fun(R (STLSOFT_CDECL *func)(A))
{
return unary_cdecl_function_pointer<R, A>(func);
}
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_cdecl_function_pointer<R, A0, A1> ptr_fun(R (STLSOFT_CDECL *func)(A0, A1))
{
return binary_cdecl_function_pointer<R, A0, A1>(func);
}
#endif /* STLSOFT_CF_CDECL_SUPPORTED */
#ifdef STLSOFT_CF_FASTCALL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k R
, ss_typename_param_k A
>
unary_fastcall_function_pointer<R, A> ptr_fun(R (STLSOFT_FASTCALL *func)(A))
{
return unary_fastcall_function_pointer<R, A>(func);
}
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_fastcall_function_pointer<R, A0, A1> ptr_fun(R (STLSOFT_FASTCALL *func)(A0, A1))
{
return binary_fastcall_function_pointer<R, A0, A1>(func);
}
#endif /* STLSOFT_CF_FASTCALL_SUPPORTED */
#ifdef STLSOFT_CF_STDCALL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k R
, ss_typename_param_k A
>
unary_stdcall_function_pointer<R, A> ptr_fun(R (STLSOFT_STDCALL *func)(A))
{
return unary_stdcall_function_pointer<R, A>(func);
}
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_stdcall_function_pointer<R, A0, A1> ptr_fun(R (STLSOFT_STDCALL *func)(A0, A1))
{
return binary_stdcall_function_pointer<R, A0, A1>(func);
}
#endif /* STLSOFT_CF_STDCALL_SUPPORTED */
#if defined(STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID)
# ifdef STLSOFT_CF_CDECL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_cdecl_function_pointer<void, A> ptr_fun_void(void (STLSOFT_CDECL *func)(A))
{
return unary_cdecl_function_pointer<void, A>(func);
}
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_cdecl_function_pointer<void, A0, A1> ptr_fun_void(void (STLSOFT_CDECL *func)(A0, A1))
{
return binary_cdecl_function_pointer<void, A0, A1>(func);
}
# endif /* STLSOFT_CF_CDECL_SUPPORTED */
# ifdef STLSOFT_CF_FASTCALL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_fastcall_function_pointer<void, A> ptr_fun_void(void (STLSOFT_FASTCALL *func)(A))
{
return unary_fastcall_function_pointer<void, A>(func);
}
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_fastcall_function_pointer<void, A0, A1> ptr_fun_void(void (STLSOFT_FASTCALL *func)(A0, A1))
{
return binary_fastcall_function_pointer<void, A0, A1>(func);
}
# endif /* STLSOFT_CF_FASTCALL_SUPPORTED */
# ifdef STLSOFT_CF_STDCALL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_stdcall_function_pointer<void, A> ptr_fun_void(void (STLSOFT_STDCALL *func)(A))
{
return unary_stdcall_function_pointer<void, A>(func);
}
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_stdcall_function_pointer<void, A0, A1> ptr_fun_void(void (STLSOFT_STDCALL *func)(A0, A1))
{
return binary_stdcall_function_pointer<void, A0, A1>(func);
}
# endif /* STLSOFT_CF_STDCALL_SUPPORTED */
#else /* ? STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID */
# ifdef STLSOFT_CF_CDECL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_cdecl_void_function_pointer<A> ptr_fun_void(void (STLSOFT_CDECL *func)(A))
{
return unary_cdecl_void_function_pointer<A>(func);
}
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_cdecl_void_function_pointer<A> ptr_fun(void (STLSOFT_CDECL *func)(A))
{
return ptr_fun_void(func);
}
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_cdecl_void_function_pointer<A0, A1> ptr_fun_void(void (STLSOFT_CDECL *func)(A0, A1))
{
return binary_cdecl_void_function_pointer<A0, A1>(func);
}
/** \brief Creator function to adapt pointers to functions with CDecl (__cdecl) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_cdecl_void_function_pointer<A0, A1> ptr_fun(void (STLSOFT_CDECL *func)(A0, A1))
{
return ptr_fun_void(func);
}
# endif /* STLSOFT_CF_CDECL_SUPPORTED */
# ifdef STLSOFT_CF_FASTCALL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_fastcall_void_function_pointer<A> ptr_fun_void(void (STLSOFT_FASTCALL *func)(A))
{
return unary_fastcall_void_function_pointer<A>(func);
}
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_fastcall_void_function_pointer<A> ptr_fun(void (STLSOFT_FASTCALL *func)(A))
{
return ptr_fun_void(func);
}
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_fastcall_void_function_pointer<A0, A1> ptr_fun_void(void (STLSOFT_FASTCALL *func)(A0, A1))
{
return binary_fastcall_void_function_pointer<A0, A1>(func);
}
/** \brief Creator function to adapt pointers to functions with FastCall (__fastcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_fastcall_void_function_pointer<A0, A1> ptr_fun(void (STLSOFT_FASTCALL *func)(A0, A1))
{
return ptr_fun_void(func);
}
# endif /* STLSOFT_CF_FASTCALL_SUPPORTED */
# ifdef STLSOFT_CF_STDCALL_SUPPORTED
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_stdcall_void_function_pointer<A> ptr_fun_void(void (STLSOFT_STDCALL *func)(A))
{
return unary_stdcall_void_function_pointer<A>(func);
}
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template <ss_typename_param_k A>
unary_stdcall_void_function_pointer<A> ptr_fun(void (STLSOFT_STDCALL *func)(A))
{
return ptr_fun_void(func);
}
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_stdcall_void_function_pointer<A0, A1> ptr_fun_void(void (STLSOFT_STDCALL *func)(A0, A1))
{
return binary_stdcall_void_function_pointer<A0, A1>(func);
}
/** \brief Creator function to adapt pointers to functions with StdCall (__stdcall) calling convention that
* have a void return type
*
* \ingroup group__library__functional
*
*/
template< ss_typename_param_k A0
, ss_typename_param_k A1
>
binary_stdcall_void_function_pointer<A0, A1> ptr_fun(void (STLSOFT_STDCALL *func)(A0, A1))
{
return ptr_fun_void(func);
}
# endif /* STLSOFT_CF_STDCALL_SUPPORTED */
#endif /* STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID */
/* ////////////////////////////////////////////////////////////////////// */
#ifndef _STLSOFT_NO_NAMESPACE
} // namespace stlsoft
#endif /* _STLSOFT_NO_NAMESPACE */
/* ////////////////////////////////////////////////////////////////////// */
#endif /* !STLSOFT_INCL_STLSOFT_FUNCTIONAL_HPP_FUNCTION_POINTER_ADAPTORS */
/* ////////////////////////////////////////////////////////////////////// */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -