diff options
author | 2016-11-06 14:11:55 +0100 | |
---|---|---|
committer | 2016-11-06 14:11:55 +0100 | |
commit | 2027d59e7f36129e86b4e4cf2c32b18268c337b8 (patch) | |
tree | 97a01f3b9ff70dbfd860c57885880f8021600f6b /src/lib/util/delegate.h | |
parent | e311c17406f0b6a304e0df44d0f5ae2c317dcfd7 (diff) |
Do not use FUNC in delegate where applicable (nw)
Diffstat (limited to 'src/lib/util/delegate.h')
-rw-r--r-- | src/lib/util/delegate.h | 39 |
1 files changed, 12 insertions, 27 deletions
diff --git a/src/lib/util/delegate.h b/src/lib/util/delegate.h index 632fa10c309..5e2fdb2f143 100644 --- a/src/lib/util/delegate.h +++ b/src/lib/util/delegate.h @@ -116,8 +116,6 @@ #define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE #endif -#define USE_STATIC_DELEGATE 1 - #if defined(FORCE_COMPATIBLE) #undef USE_DELEGATE_TYPE #undef MEMBER_ABI @@ -424,7 +422,6 @@ public: delegate_base() : m_function(nullptr), m_object(nullptr), - m_name(nullptr), m_latebinder(nullptr), m_raw_function(nullptr), m_std_func(nullptr){ } @@ -433,7 +430,6 @@ public: delegate_base(const delegate_base &src) : m_function(src.m_function), m_object(nullptr), - m_name(src.m_name), m_latebinder(src.m_latebinder), m_raw_function(src.m_raw_function), m_raw_mfp(src.m_raw_mfp), @@ -446,7 +442,6 @@ public: delegate_base(const delegate_base &src, delegate_late_bind &object) : m_function(src.m_function), m_object(nullptr), - m_name(src.m_name), m_latebinder(src.m_latebinder), m_raw_function(src.m_raw_function), m_raw_mfp(src.m_raw_mfp), @@ -457,10 +452,9 @@ public: // construct from member function with object pointer template<class _FunctionClass> - delegate_base(typename traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) + delegate_base(typename traits<_FunctionClass>::member_func_type funcptr, _FunctionClass *object) : m_function(nullptr), m_object(nullptr), - m_name(name), m_latebinder(&late_bind_helper<_FunctionClass>), m_raw_function(nullptr), m_raw_mfp(funcptr, object, static_cast<_ReturnType *>(nullptr), static_cast<generic_static_func>(nullptr)), @@ -470,10 +464,9 @@ public: } template<class _FunctionClass> - delegate_base(typename traits<_FunctionClass>::const_member_func_type funcptr, const char *name, _FunctionClass *object) + delegate_base(typename traits<_FunctionClass>::const_member_func_type funcptr, _FunctionClass *object) : m_function(nullptr), m_object(nullptr), - m_name(name), m_latebinder(&late_bind_helper<_FunctionClass>), m_raw_function(nullptr), m_raw_mfp(funcptr, object, static_cast<_ReturnType *>(nullptr), static_cast<generic_static_func>(nullptr)), @@ -484,10 +477,9 @@ public: // construct from static function with object pointer template<class _FunctionClass> - delegate_base(typename traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) + delegate_base(typename traits<_FunctionClass>::static_func_type funcptr, _FunctionClass *object) : m_function(reinterpret_cast<generic_static_func>(funcptr)), m_object(nullptr), - m_name(name), m_latebinder(&late_bind_helper<_FunctionClass>), m_raw_function(reinterpret_cast<generic_static_func>(funcptr)), m_std_func(nullptr) @@ -497,10 +489,9 @@ public: // construct from static reference function with object reference template<class _FunctionClass> - delegate_base(typename traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) + delegate_base(typename traits<_FunctionClass>::static_ref_func_type funcptr, _FunctionClass *object) : m_function(reinterpret_cast<generic_static_func>(funcptr)), m_object(nullptr), - m_name(name), m_latebinder(&late_bind_helper<_FunctionClass>), m_raw_function(reinterpret_cast<generic_static_func>(funcptr)), m_std_func(nullptr) @@ -509,10 +500,9 @@ public: } // construct from static reference function with object reference - delegate_base(functional_type funcptr, const char *name) + delegate_base(functional_type funcptr) : m_function(nullptr), m_object(nullptr), - m_name(name), m_latebinder(nullptr), m_raw_function(nullptr), m_std_func(funcptr) @@ -527,7 +517,6 @@ public: { m_function = src.m_function; m_object = nullptr; - m_name = src.m_name; m_latebinder = src.m_latebinder; m_raw_function = src.m_raw_function; m_raw_mfp = src.m_raw_mfp; @@ -556,8 +545,7 @@ public: } // getters - bool has_object() const { return (object() != nullptr) || (m_std_func); } - const char *name() const { return m_name; } + bool has_object() const { return (object() != nullptr); } // helpers bool isnull() const { return (m_raw_function == nullptr && m_raw_mfp.isnull() && !m_std_func); } @@ -597,7 +585,6 @@ protected: // internal state generic_static_func m_function; // resolved static function pointer delegate_generic_class * m_object; // resolved object to the post-cast object - const char * m_name; // name string late_bind_func m_latebinder; // late binding helper generic_static_func m_raw_function; // raw static function pointer delegate_mfp m_raw_mfp; // raw member function pointer @@ -622,15 +609,13 @@ class delegate<_ReturnType (Params...)> : public delegate_base<_ReturnType, Para public: // create a standard set of constructors delegate() : basetype() { } - delegate(const basetype &src) : basetype(src) { } + explicit delegate(const basetype &src) : basetype(src) { } delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { } - template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { } - template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::const_member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { } - delegate(std::function<_ReturnType(Params...)> funcptr) : basetype(funcptr, "") { } -#ifdef USE_STATIC_DELEGATE - template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { } - template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { } -#endif + template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, _FunctionClass *object) : basetype(funcptr, object) { } + template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::const_member_func_type funcptr, _FunctionClass *object) : basetype(funcptr, object) { } + explicit delegate(std::function<_ReturnType(Params...)> funcptr) : basetype(funcptr) { } + template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, _FunctionClass *object) : basetype(funcptr, object) { } + template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr,_FunctionClass *object) : basetype(funcptr, object) { } delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; } }; |