39 #ifndef ORO_UN_MEMBER_HPP 40 #define ORO_UN_MEMBER_HPP 42 #include <boost/shared_ptr.hpp> 43 #include <boost/mpl/erase.hpp> 44 #include <boost/mpl/insert.hpp> 45 #include <boost/mpl/begin_end.hpp> 46 #include <boost/mpl/next_prior.hpp> 47 #include <boost/mpl/vector.hpp> 48 #include <boost/mpl/back.hpp> 49 #include <boost/mpl/int.hpp> 50 #include <boost/type_traits.hpp> 51 #include <boost/function_types/function_type.hpp> 52 #include <boost/function_types/components.hpp> 53 #include <boost/function_types/member_function_pointer.hpp> 68 typedef boost::function_types::components<F> member_signature;
69 typedef typename boost::mpl::erase<
typename member_signature::types,
70 typename boost::mpl::next<typename boost::mpl::begin<member_signature>::type>
::type>
::type non_member_signature;
72 typedef typename boost::function_types::function_type<non_member_signature>::type
type;
80 template<
class F,
class Class>
83 typedef boost::function_types::components<F> non_member_signature;
84 typedef typename boost::mpl::insert<non_member_signature,
85 typename boost::mpl::next<typename boost::mpl::begin<non_member_signature>::type>
::type,
86 Class>::type with_member_signature;
88 typedef typename boost::function_types::member_function_pointer<with_member_signature>::type
type;
99 typedef boost::function_types::components<F> member_signature;
102 typedef typename boost::mpl::erase<
typename member_signature::types,
103 typename boost::mpl::next<typename boost::mpl::begin<member_signature>::type>
::type>
::type non_member_signature;
104 typedef typename boost::shared_ptr<typename boost::remove_const<typename boost::remove_reference<typename boost::mpl::at<typename member_signature::types,boost::mpl::int_<1> >
::type>
::type>
::type> object_pointer;
106 typedef typename boost::mpl::insert<non_member_signature,
107 typename boost::mpl::next<typename boost::mpl::begin<non_member_signature>::type>
::type,
111 >::type arg_signature;
113 typedef typename boost::function_types::function_type<arg_signature>::type
type;
122 typedef boost::function_types::components<F> signature;
124 typedef typename boost::function_types::function_type<signature>::type
type;
boost::function_types::function_type< arg_signature >::type type
Convert a function R (X::)(Args) to a plain function signature R(X::,Args)
boost::function_types::function_type< signature >::type type
boost::function_types::function_type< non_member_signature >::type type
boost::function_types::member_function_pointer< with_member_signature >::type type
A complexer variant of UnMember: Convert a member function type to a function type which contains the...
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.