📄 method_adaptors.hpp
字号:
ss_explicit_k stdcall_mem_fun_const_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type const* pt) const
{
return (pt->*m_func)();
}
private:
method_type m_func;
};
# ifndef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
template< ss_typename_param_k T
>
struct stdcall_mem_fun_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_STDCALL (T::*method_type)();
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_STDCALL T::*method_type)();
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k stdcall_mem_fun_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type *pt) const
{
(pt->*m_func)();
}
private:
method_type m_func;
};
template< ss_typename_param_k T
>
struct stdcall_mem_fun_const_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_STDCALL (T::*method_type)() const;
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_STDCALL T::*method_type)() const;
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k stdcall_mem_fun_const_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type const* pt) const
{
(pt->*m_func)();
}
private:
method_type m_func;
};
# endif /* STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID */
#endif /* STLSOFT_CF_STDCALL_SUPPORTED */
#ifdef STLSOFT_CF_CDECL_SUPPORTED
/** \brief A function class that invokes a <b>cdecl</b> calling convention
* 0-parameter mutating (non-const) member function on its pointer argument.
*
* \ingroup group__library__functional
*/
// [[synesis:class:function-class:unary-function: cdecl_mem_fun_ref_t<T<R>, T<A>>]]
template< ss_typename_param_k R
, ss_typename_param_k T
>
struct cdecl_mem_fun_ref_t
: public stlsoft_ns_qual_std(unary_function)<T*, R>
{
public:
typedef R return_type;
typedef T operand_class_type;
# ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_CDECL (T::*method_type)();
# else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_CDECL T::*method_type)();
# endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k cdecl_mem_fun_ref_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type &rt) const
{
return (rt.*m_func)();
}
private:
method_type m_func;
};
/** \brief A function class that invokes a <b>cdecl</b> calling convention
* 0-parameter non-mutating (const) member function on its pointer argument.
*
* \ingroup group__library__functional
*/
// [[synesis:class:function-class:unary-function: cdecl_mem_fun_ref_t<T<R>, T<A>>]]
template< ss_typename_param_k R
, ss_typename_param_k T
>
struct cdecl_mem_fun_ref_const_t
: public stlsoft_ns_qual_std(unary_function)<T*, R>
{
public:
typedef R return_type;
typedef T operand_class_type;
# ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_CDECL (T::*method_type)() const;
# else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_CDECL T::*method_type)() const;
# endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k cdecl_mem_fun_ref_const_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type const& rt) const
{
return (rt.*m_func)();
}
private:
method_type m_func;
};
# ifndef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
template< ss_typename_param_k T
>
struct cdecl_mem_fun_ref_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
# ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_CDECL (T::*method_type)();
# else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_CDECL T::*method_type)();
# endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k cdecl_mem_fun_ref_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type &rt) const
{
(rt.*m_func)();
}
private:
method_type m_func;
};
template< ss_typename_param_k T
>
struct cdecl_mem_fun_ref_const_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
# ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_CDECL (T::*method_type)() const;
# else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_CDECL T::*method_type)() const;
# endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k cdecl_mem_fun_ref_const_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type const& rt) const
{
(rt.*m_func)();
}
private:
method_type m_func;
};
# endif /* STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID */
#endif /* STLSOFT_CF_CDECL_SUPPORTED */
#ifdef STLSOFT_CF_FASTCALL_SUPPORTED
/** \brief A function class that invokes a <b>fastcall</b> calling convention
* 0-parameter mutating (non-const) member function on its pointer argument.
*
* \ingroup group__library__functional
*/
// [[synesis:class:function-class:unary-function: fastcall_mem_fun_ref_t<T<R>, T<A>>]]
template< ss_typename_param_k R
, ss_typename_param_k T
>
struct fastcall_mem_fun_ref_t
: public stlsoft_ns_qual_std(unary_function)<T*, R>
{
public:
typedef R return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_FASTCALL (T::*method_type)();
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_FASTCALL T::*method_type)();
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k fastcall_mem_fun_ref_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type &rt) const
{
return (rt.*m_func)();
}
private:
method_type m_func;
};
/** \brief A function class that invokes a <b>fastcall</b> calling convention
* 0-parameter non-mutating (const) member function on its pointer argument.
*
* \ingroup group__library__functional
*/
// [[synesis:class:function-class:unary-function: fastcall_mem_fun_ref_t<T<R>, T<A>>]]
template< ss_typename_param_k R
, ss_typename_param_k T
>
struct fastcall_mem_fun_ref_const_t
: public stlsoft_ns_qual_std(unary_function)<T*, R>
{
public:
typedef R return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_FASTCALL (T::*method_type)() const;
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_FASTCALL T::*method_type)() const;
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k fastcall_mem_fun_ref_const_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type const& rt) const
{
return (rt.*m_func)();
}
private:
method_type m_func;
};
# ifndef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
template< ss_typename_param_k T
>
struct fastcall_mem_fun_ref_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_FASTCALL (T::*method_type)();
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_FASTCALL T::*method_type)();
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k fastcall_mem_fun_ref_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type &rt) const
{
(rt.*m_func)();
}
private:
method_type m_func;
};
template< ss_typename_param_k T
>
struct fastcall_mem_fun_ref_const_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_FASTCALL (T::*method_type)() const;
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_FASTCALL T::*method_type)() const;
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k fastcall_mem_fun_ref_const_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type const& rt) const
{
(rt.*m_func)();
}
private:
method_type m_func;
};
# endif /* STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID */
#endif /* STLSOFT_CF_FASTCALL_SUPPORTED */
#ifdef STLSOFT_CF_STDCALL_SUPPORTED
/** \brief A function class that invokes a <b>stdcall</b> calling convention
* 0-parameter mutating (non-const) member function on its pointer argument.
*
* \ingroup group__library__functional
*/
// [[synesis:class:function-class:unary-function: stdcall_mem_fun_ref_t<T<T>, T<A>>]]
template< ss_typename_param_k R
, ss_typename_param_k T
>
struct stdcall_mem_fun_ref_t
: public stlsoft_ns_qual_std(unary_function)<T*, R>
{
public:
typedef R return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_STDCALL (T::*method_type)();
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_STDCALL T::*method_type)();
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k stdcall_mem_fun_ref_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type &rt) const
{
return (rt.*m_func)();
}
private:
method_type m_func;
};
/** \brief A function class that invokes a <b>stdcall</b> calling convention
* 0-parameter non-mutating (const) member function on its pointer argument.
*
* \ingroup group__library__functional
*/
// [[synesis:class:function-class:unary-function: stdcall_mem_fun_ref_t<T<T>, T<A>>]]
template< ss_typename_param_k R
, ss_typename_param_k T
>
struct stdcall_mem_fun_ref_const_t
: public stlsoft_ns_qual_std(unary_function)<T*, R>
{
public:
typedef R return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_STDCALL (T::*method_type)() const;
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_STDCALL T::*method_type)() const;
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k stdcall_mem_fun_ref_const_t(method_type func)
: m_func(func)
{}
return_type operator ()(operand_class_type const& rt) const
{
return (rt.*m_func)();
}
private:
method_type m_func;
};
# ifndef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
template< ss_typename_param_k T
>
struct stdcall_mem_fun_ref_void_t
: public stlsoft_ns_qual_std(unary_function)<T*, void>
{
public:
typedef void return_type;
typedef T operand_class_type;
#ifdef STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED
typedef return_type STLSOFT_STDCALL (T::*method_type)();
#else /* ? STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
typedef return_type (STLSOFT_STDCALL T::*method_type)();
#endif /* STLSOFT_CF_CALLING_CONVENTION_OUTSIDE_BRACE_REQUIRED */
public:
ss_explicit_k stdcall_mem_fun_ref_void_t(method_type func)
: m_func(func)
{}
void operator ()(operand_class_type &rt) const
{
(rt.*m_func)();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -