17 #ifndef polybori_ring_CCallback_Wrapper_h_
18 #define polybori_ring_CCallback_Wrapper_h_
39 template <
class Type,
class ResultType,
class ArgType>
46 return (static_cast<const Type&>(*this).object .*
47 static_cast<const Type&>(*this).function)(arg);
52 template <
class Type,
class ArgType>
58 (
static_cast<const Type&
>(*this).object .*
59 static_cast<const Type&
>(*this).function)(arg);
71 template <
class MemberFuncPtr>
74 typename CMemberFunctionTraits<MemberFuncPtr>::result_type,
75 typename CMemberFunctionTraits<MemberFuncPtr>::argument_type> {
85 typename traits::argument_type>;
87 typedef typename traits::object_reference
reference;
90 CCallbackWrapper(reference value, MemberFuncPtr ptr):
91 object(value), function(ptr) { }
95 MemberFuncPtr
function;
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
traits::object_reference reference
Reference to object.
Definition: CCallbackWrapper.h:87
This template class defines a functional, which wraps operator .*, which is the callback of a dynamic...
Definition: CCallbackWrapper.h:72
void operator()(ArgType arg) const
Apply member function pointer to argument (avoid returning void())
Definition: CCallbackWrapper.h:57
Variant for constant non-void member functions.
Definition: CCallbackWrapper.h:41
This template class defines related types for member function pointer.
Definition: CMemberFunctionTraits.h:33
CMemberFunctionTraits< MemberFuncPtr > traits
Related types.
Definition: CCallbackWrapper.h:81
ResultType operator()(ArgType arg) const
Apply member function pointer to argument.
Definition: CCallbackWrapper.h:45