⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 method_adaptors.hpp

📁 新版本TR1的stl
💻 HPP
📖 第 1 页 / 共 4 页
字号:
    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 + -