[Cppunit-cvs] cppunit2/include/cpptl reflectionimpl.py,1.1,1.2 reflectionimpl10.h,1.1,1.2
Brought to you by:
blep
From: Baptiste L. <bl...@us...> - 2005-03-05 09:41:10
|
Update of /cvsroot/cppunit/cppunit2/include/cpptl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1644/include/cpptl Modified Files: reflectionimpl.py reflectionimpl10.h Log Message: * added support for reflection of const methods * factorised parameter type registration for better template function reuse. Index: reflectionimpl.py =================================================================== RCS file: /cvsroot/cppunit/cppunit2/include/cpptl/reflectionimpl.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** reflectionimpl.py 4 Mar 2005 07:30:32 -0000 1.1 --- reflectionimpl.py 5 Mar 2005 09:41:00 -0000 1.2 *************** *** 14,17 **** --- 14,41 ---- %(invokables)s + + template< class Arg1 > + void registerArgTypes( Invokable &invokable, Type<Arg1> ) + { + invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); + } + + template< class Arg1, class Arg2 > + void registerArgTypes( Invokable &invokable, Type<Arg1>, Type<Arg2> ) + { + registerArgTypes( invokable, Type<Arg1>() ); + registerArgTypes( invokable, Type<Arg2>() ); + + } + + template< class Arg1, class Arg2, class Arg3 > + void registerArgTypes( Invokable &invokable, Type<Arg1>, Type<Arg2>, Type<Arg3> ) + { + registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>() ); + registerArgTypes( invokable, Type<Arg3>() ); + + } + + %(invokable_generators)s *************** *** 27,31 **** { public: ! typedef void (Object::*Member)( %(fn_parameter_types)s ); %(invokable)s( Member member ) --- 51,55 ---- { public: ! typedef void (Object::*Member)( %(fn_parameter_types)s )%(const_method)s; %(invokable)s( Member member ) *************** *** 51,63 **** # invokable : Invokable2 # fn_parameter_types : Arg1, Arg2 # fn_call : # any_cast( call.args_.at(0), Type<Arg1>() ), # any_cast( call.args_.at(1), Type<Arg2>() ) - invokable_generator = \ """ %(invokable_template_decl)s ! Invokable makeInvokable( void (Object::*member)( %(fn_parameter_types)s ) ) { Invokable invokable( InvokableBasePtr( new %(invokable_instantiation)s( member ) ) ); --- 75,87 ---- # invokable : Invokable2 # fn_parameter_types : Arg1, Arg2 + # const_method : const # fn_call : # any_cast( call.args_.at(0), Type<Arg1>() ), # any_cast( call.args_.at(1), Type<Arg2>() ) invokable_generator = \ """ %(invokable_template_decl)s ! Invokable makeInvokable( void (Object::*member)( %(fn_parameter_types)s )%(const_method)s ) { Invokable invokable( InvokableBasePtr( new %(invokable_instantiation)s( member ) ) ); *************** *** 72,88 **** class GenerationParameters(object): ! def __init__( self, count ): self.count = count ! invokable_template_parameters = ['Object'] + [ 'Arg%d' % n for n in xrange(1,count+1) ] self.invokable_template_decl = self.makeTemplateDecl( invokable_template_parameters ) ! self.invokable = 'Invokable%d' % count ! self.fn_parameter_types = ', '.join( [ 'Arg%d' % n for n in xrange(1,count+1) ] ) self.fn_call = '\n ,'.join( [ 'any_cast( call.args_.at(%d), Type<Arg%d>() )' % (n,n+1) for n in xrange(0,count) ] ) self.invokable_instantiation = self.invokable + self.makeTemplateInstantiation( invokable_template_parameters ) ! self.push_back_parameter_types = '\n'.join( ! [ ' invokable.argTypes_.push_back( typeId( Type<Arg%d>() ) );' % (n+1) ! for n in xrange(0,count) ] ) def __getitem__( self, key ): --- 96,116 ---- class GenerationParameters(object): ! def __init__( self, count, is_const ): self.count = count + self.is_const = is_const ! args = [ 'Arg%d' % n for n in xrange(1,count+1) ] ! invokable_template_parameters = ['Object'] + args self.invokable_template_decl = self.makeTemplateDecl( invokable_template_parameters ) ! if is_const: ! self.invokable = 'InvokableConst%d' % count ! else: ! self.invokable = 'Invokable%d' % count ! self.fn_parameter_types = ', '.join( args ) ! self.const_method = (is_const and ' const') or '' self.fn_call = '\n ,'.join( [ 'any_cast( call.args_.at(%d), Type<Arg%d>() )' % (n,n+1) for n in xrange(0,count) ] ) self.invokable_instantiation = self.invokable + self.makeTemplateInstantiation( invokable_template_parameters ) ! self.push_back_parameter_types = self.makePushBackParameterTypes( args ) def __getitem__( self, key ): *************** *** 98,101 **** --- 126,139 ---- return '' return '< ' + ', '.join( parameters ) + ' >' + + def makePushBackParameterTypes( self, args ): + args = args[:] + source = '' + for limit in (3,2,1): + while len(args) >= limit: + source += ' registerArgTypes( invokable, %s );\n' % ', '.join( + [ 'Type<%s>()' % type for type in args[0:limit] ]) + args = args[limit:] + return source invokables = '' *************** *** 103,109 **** for argument_count in xrange(MIN_ARGUMENT_COUNT,MAX_ARGUMENT_COUNT+1): ! parameters = GenerationParameters( argument_count ) ! invokables += invokable % parameters ! invokable_generators += invokable_generator % parameters final_header = header % locals() --- 141,148 ---- for argument_count in xrange(MIN_ARGUMENT_COUNT,MAX_ARGUMENT_COUNT+1): ! for is_const in (False,True): ! parameters = GenerationParameters( argument_count, is_const ) ! invokables += invokable % parameters ! invokable_generators += invokable_generator % parameters final_header = header % locals() Index: reflectionimpl10.h =================================================================== RCS file: /cvsroot/cppunit/cppunit2/include/cpptl/reflectionimpl10.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** reflectionimpl10.h 4 Mar 2005 07:30:32 -0000 1.1 --- reflectionimpl10.h 5 Mar 2005 09:41:00 -0000 1.2 *************** *** 27,30 **** --- 27,51 ---- }; + template< class Object > + class InvokableConst0 : public InvokableBase + { + public: + typedef void (Object::*Member)( ) const; + + InvokableConst0( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( ); + } + + private: + Member member_; + }; + template< class Object, class Arg1 > class Invokable1 : public InvokableBase *************** *** 48,51 **** --- 69,93 ---- }; + template< class Object, class Arg1 > + class InvokableConst1 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1 ) const; + + InvokableConst1( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2 > class Invokable2 : public InvokableBase *************** *** 70,73 **** --- 112,137 ---- }; + template< class Object, class Arg1, class Arg2 > + class InvokableConst2 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2 ) const; + + InvokableConst2( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3 > class Invokable3 : public InvokableBase *************** *** 93,96 **** --- 157,183 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3 > + class InvokableConst3 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3 ) const; + + InvokableConst3( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4 > class Invokable4 : public InvokableBase *************** *** 117,120 **** --- 204,231 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4 > + class InvokableConst4 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4 ) const; + + InvokableConst4( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5 > class Invokable5 : public InvokableBase *************** *** 142,145 **** --- 253,281 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5 > + class InvokableConst5 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4, Arg5 ) const; + + InvokableConst5( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) + ,any_cast( call.args_.at(4), Type<Arg5>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6 > class Invokable6 : public InvokableBase *************** *** 168,171 **** --- 304,333 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6 > + class InvokableConst6 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 ) const; + + InvokableConst6( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) + ,any_cast( call.args_.at(4), Type<Arg5>() ) + ,any_cast( call.args_.at(5), Type<Arg6>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7 > class Invokable7 : public InvokableBase *************** *** 195,198 **** --- 357,387 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7 > + class InvokableConst7 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 ) const; + + InvokableConst7( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) + ,any_cast( call.args_.at(4), Type<Arg5>() ) + ,any_cast( call.args_.at(5), Type<Arg6>() ) + ,any_cast( call.args_.at(6), Type<Arg7>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8 > class Invokable8 : public InvokableBase *************** *** 223,226 **** --- 412,443 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8 > + class InvokableConst8 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 ) const; + + InvokableConst8( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) + ,any_cast( call.args_.at(4), Type<Arg5>() ) + ,any_cast( call.args_.at(5), Type<Arg6>() ) + ,any_cast( call.args_.at(6), Type<Arg7>() ) + ,any_cast( call.args_.at(7), Type<Arg8>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9 > class Invokable9 : public InvokableBase *************** *** 252,255 **** --- 469,501 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9 > + class InvokableConst9 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9 ) const; + + InvokableConst9( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) + ,any_cast( call.args_.at(4), Type<Arg5>() ) + ,any_cast( call.args_.at(5), Type<Arg6>() ) + ,any_cast( call.args_.at(6), Type<Arg7>() ) + ,any_cast( call.args_.at(7), Type<Arg8>() ) + ,any_cast( call.args_.at(8), Type<Arg9>() ) ); + } + + private: + Member member_; + }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9, class Arg10 > class Invokable10 : public InvokableBase *************** *** 282,285 **** --- 528,585 ---- }; + template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9, class Arg10 > + class InvokableConst10 : public InvokableBase + { + public: + typedef void (Object::*Member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10 ) const; + + InvokableConst10( Member member ) + : member_( member ) + { + } + + void invoke( MethodCall &call ) const + { + Object &object = *any_cast( call.holder_, Type<Object *>() ); + (object.*member_)( any_cast( call.args_.at(0), Type<Arg1>() ) + ,any_cast( call.args_.at(1), Type<Arg2>() ) + ,any_cast( call.args_.at(2), Type<Arg3>() ) + ,any_cast( call.args_.at(3), Type<Arg4>() ) + ,any_cast( call.args_.at(4), Type<Arg5>() ) + ,any_cast( call.args_.at(5), Type<Arg6>() ) + ,any_cast( call.args_.at(6), Type<Arg7>() ) + ,any_cast( call.args_.at(7), Type<Arg8>() ) + ,any_cast( call.args_.at(8), Type<Arg9>() ) + ,any_cast( call.args_.at(9), Type<Arg10>() ) ); + } + + private: + Member member_; + }; + + + + + template< class Arg1 > + void registerArgTypes( Invokable &invokable, Type<Arg1> ) + { + invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); + } + + template< class Arg1, class Arg2 > + void registerArgTypes( Invokable &invokable, Type<Arg1>, Type<Arg2> ) + { + registerArgTypes( invokable, Type<Arg1>() ); + registerArgTypes( invokable, Type<Arg2>() ); + + } + + template< class Arg1, class Arg2, class Arg3 > + void registerArgTypes( Invokable &invokable, Type<Arg1>, Type<Arg2>, Type<Arg3> ) + { + registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>() ); + registerArgTypes( invokable, Type<Arg3>() ); + + } *************** *** 293,301 **** } template< class Object, class Arg1 > Invokable makeInvokable( void (Object::*member)( Arg1 ) ) { Invokable invokable( InvokableBasePtr( new Invokable1< Object, Arg1 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); return invokable; } --- 593,619 ---- } + template< class Object > + Invokable makeInvokable( void (Object::*member)( ) const ) + { + Invokable invokable( InvokableBasePtr( new InvokableConst0< Object >( member ) ) ); + + return invokable; + } + template< class Object, class Arg1 > Invokable makeInvokable( void (Object::*member)( Arg1 ) ) { Invokable invokable( InvokableBasePtr( new Invokable1< Object, Arg1 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1 > ! Invokable makeInvokable( void (Object::*member)( Arg1 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst1< Object, Arg1 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>() ); ! return invokable; } *************** *** 305,310 **** { Invokable invokable( InvokableBasePtr( new Invokable2< Object, Arg1, Arg2 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); return invokable; } --- 623,637 ---- { Invokable invokable( InvokableBasePtr( new Invokable2< Object, Arg1, Arg2 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst2< Object, Arg1, Arg2 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>() ); ! return invokable; } *************** *** 314,320 **** { Invokable invokable( InvokableBasePtr( new Invokable3< Object, Arg1, Arg2, Arg3 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); return invokable; } --- 641,655 ---- { Invokable invokable( InvokableBasePtr( new Invokable3< Object, Arg1, Arg2, Arg3 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst3< Object, Arg1, Arg2, Arg3 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! return invokable; } *************** *** 324,331 **** { Invokable invokable( InvokableBasePtr( new Invokable4< Object, Arg1, Arg2, Arg3, Arg4 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); return invokable; } --- 659,675 ---- { Invokable invokable( InvokableBasePtr( new Invokable4< Object, Arg1, Arg2, Arg3, Arg4 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst4< Object, Arg1, Arg2, Arg3, Arg4 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>() ); ! return invokable; } *************** *** 335,343 **** { Invokable invokable( InvokableBasePtr( new Invokable5< Object, Arg1, Arg2, Arg3, Arg4, Arg5 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg5>() ) ); return invokable; } --- 679,695 ---- { Invokable invokable( InvokableBasePtr( new Invokable5< Object, Arg1, Arg2, Arg3, Arg4, Arg5 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4, Arg5 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst5< Object, Arg1, Arg2, Arg3, Arg4, Arg5 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>() ); ! return invokable; } *************** *** 347,356 **** { Invokable invokable( InvokableBasePtr( new Invokable6< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg5>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg6>() ) ); return invokable; } --- 699,715 ---- { Invokable invokable( InvokableBasePtr( new Invokable6< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst6< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! return invokable; } *************** *** 360,370 **** { Invokable invokable( InvokableBasePtr( new Invokable7< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg5>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg6>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg7>() ) ); return invokable; } --- 719,737 ---- { Invokable invokable( InvokableBasePtr( new Invokable7< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst7< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>() ); ! return invokable; } *************** *** 374,385 **** { Invokable invokable( InvokableBasePtr( new Invokable8< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg5>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg6>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg7>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg8>() ) ); return invokable; } --- 741,759 ---- { Invokable invokable( InvokableBasePtr( new Invokable8< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>(), Type<Arg8>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst8< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>(), Type<Arg8>() ); ! return invokable; } *************** *** 389,401 **** { Invokable invokable( InvokableBasePtr( new Invokable9< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg5>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg6>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg7>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg8>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg9>() ) ); return invokable; } --- 763,781 ---- { Invokable invokable( InvokableBasePtr( new Invokable9< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>(), Type<Arg8>(), Type<Arg9>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst9< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>(), Type<Arg8>(), Type<Arg9>() ); ! return invokable; } *************** *** 405,418 **** { Invokable invokable( InvokableBasePtr( new Invokable10< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10 >( member ) ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg1>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg2>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg3>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg4>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg5>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg6>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg7>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg8>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg9>() ) ); ! invokable.argTypes_.push_back( typeId( Type<Arg10>() ) ); return invokable; } --- 785,805 ---- { Invokable invokable( InvokableBasePtr( new Invokable10< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>(), Type<Arg8>(), Type<Arg9>() ); ! registerArgTypes( invokable, Type<Arg10>() ); ! ! return invokable; ! } ! ! template< class Object, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9, class Arg10 > ! Invokable makeInvokable( void (Object::*member)( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10 ) const ) ! { ! Invokable invokable( InvokableBasePtr( new InvokableConst10< Object, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10 >( member ) ) ); ! registerArgTypes( invokable, Type<Arg1>(), Type<Arg2>(), Type<Arg3>() ); ! registerArgTypes( invokable, Type<Arg4>(), Type<Arg5>(), Type<Arg6>() ); ! registerArgTypes( invokable, Type<Arg7>(), Type<Arg8>(), Type<Arg9>() ); ! registerArgTypes( invokable, Type<Arg10>() ); ! return invokable; } |