summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-11-06 14:11:55 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2016-11-06 14:11:55 +0100
commit2027d59e7f36129e86b4e4cf2c32b18268c337b8 (patch)
tree97a01f3b9ff70dbfd860c57885880f8021600f6b /src/lib/util
parente311c17406f0b6a304e0df44d0f5ae2c317dcfd7 (diff)
Do not use FUNC in delegate where applicable (nw)
Diffstat (limited to 'src/lib/util')
-rw-r--r--src/lib/util/delegate.h39
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; }
};