From 4174158dc75b5ed892b293b18b7dd5c85aa36f2f Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 5 Oct 2014 12:39:14 +0200 Subject: added void * userdata to initModule --- include/module/ModuleLoader.hpp | 28 ++++++++++++++-------------- include/module/ModuleRegistry.hpp | 20 ++++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) (limited to 'include') diff --git a/include/module/ModuleLoader.hpp b/include/module/ModuleLoader.hpp index 9626972..6eb9079 100755 --- a/include/module/ModuleLoader.hpp +++ b/include/module/ModuleLoader.hpp @@ -43,14 +43,14 @@ class BaseModuleLoader { mapType m_modules; public: - - BaseModuleLoader( const std::vector files ) + + BaseModuleLoader( const std::vector files, void *user_data = 0 ) { Module< Interface, CtorParams> m; for( std::vector::const_iterator it = files.begin( ); it != files.end( ); it++ ) { #ifndef _WIN32 - m.handle = dlopen( it->c_str( ), RTLD_NOW ); + m.handle = dlopen( it->c_str( ), RTLD_NOW | RTLD_LOCAL ); #else m.handle = LoadLibrary( it->c_str( ) ); #endif @@ -81,7 +81,7 @@ class BaseModuleLoader { } if( m.registry->initModule != 0 ) { - m.registry->initModule( ); + m.registry->initModule( user_data ); } m_modules.insert( std::make_pair( m.registry->name, m ) ); @@ -131,8 +131,8 @@ class ModuleLoader< Interface, NullType > : public BaseModuleLoader< Interface, { public: - ModuleLoader< Interface >( const std::vector files ) - : BaseModuleLoader< Interface >(files ) { } + ModuleLoader< Interface >( const std::vector files, void *user_data = 0 ) + : BaseModuleLoader< Interface >( files, user_data ) { } Interface *create( std::string subclass ) { @@ -160,8 +160,8 @@ class ModuleLoader< Interface, TYPELIST_1( T1 ) > : public BaseModuleLoader< Int { public: - ModuleLoader< Interface, TYPELIST_1( T1 ) >( const std::vector files ) - : BaseModuleLoader< Interface, TYPELIST_1( T1 ) >( files ) { } + ModuleLoader< Interface, TYPELIST_1( T1 ) >( const std::vector files, void *user_data = 0 ) + : BaseModuleLoader< Interface, TYPELIST_1( T1 ) >( files, user_data ) { } Interface *create( std::string subclass, T1 t1 ) { @@ -189,8 +189,8 @@ class ModuleLoader< Interface, TYPELIST_2( T1, T2 ) > : public BaseModuleLoader< { public: - ModuleLoader< Interface, TYPELIST_2( T1, T2 ) >( const std::vector files ) - : BaseModuleLoader< Interface, TYPELIST_2( T1, T2 ) >( files ) { } + ModuleLoader< Interface, TYPELIST_2( T1, T2 ) >( const std::vector files, void *user_data = 0 ) + : BaseModuleLoader< Interface, TYPELIST_2( T1, T2 ) >( files, user_data ) { } Interface *create( std::string subclass, T1 t1, T2 t2 ) { @@ -218,8 +218,8 @@ class ModuleLoader< Interface, TYPELIST_3( T1, T2, T3 ) > : public BaseModuleLoa { public: - ModuleLoader< Interface, TYPELIST_3( T1, T2, T3 ) >( const std::vector files ) - : BaseModuleLoader< Interface, TYPELIST_3( T1, T2, T3 ) >( files ) { } + ModuleLoader< Interface, TYPELIST_3( T1, T2, T3 ) >( const std::vector files, void *user_data = 0 ) + : BaseModuleLoader< Interface, TYPELIST_3( T1, T2, T3 ) >( files, user_data ) { } Interface *create( std::string subclass, T1 t1, T2 t2, T3 t3 ) { @@ -247,8 +247,8 @@ class ModuleLoader< Interface, TYPELIST_4( T1, T2, T3, T4 ) > : public BaseModul { public: - ModuleLoader< Interface, TYPELIST_4( T1, T2, T3, T4 ) >( const std::vector files ) - : BaseModuleLoader< Interface, TYPELIST_4( T1, T2, T3, T4 ) >( files ) { } + ModuleLoader< Interface, TYPELIST_4( T1, T2, T3, T4 ) >( const std::vector files, void *user_data = 0 ) + : BaseModuleLoader< Interface, TYPELIST_4( T1, T2, T3, T4 ) >( files, user_data ) { } Interface *create( std::string subclass, T1 t1, T2 t2, T3 t3, T4 t4 ) { diff --git a/include/module/ModuleRegistry.hpp b/include/module/ModuleRegistry.hpp index d8ee90c..d98c9ba 100755 --- a/include/module/ModuleRegistry.hpp +++ b/include/module/ModuleRegistry.hpp @@ -11,13 +11,13 @@ struct ModuleRegistry; template< typename Interface> struct ModuleRegistry< Interface > { std::string name; - void (*initModule)( ); + void (*initModule)( void *user_data ); void (*destroyModule)( ); Interface *(*create)( ); void (*destroy)( Interface *obj ); ModuleRegistry( std::string _name, - void (*_initModule)( ), + void (*_initModule)( void *user_data ), void (*_destroyModule)( ), Interface *(*_create)( ), void (*_destroy)( Interface *obj ) ) @@ -31,13 +31,13 @@ struct ModuleRegistry< Interface > { template< typename Interface, typename P1 > struct ModuleRegistry< Interface, TYPELIST_1( P1 ) > { std::string name; - void (*initModule)( ); + void (*initModule)( void *user_data ); void (*destroyModule)( ); Interface *(*create)( P1 ); void (*destroy)( Interface *obj ); ModuleRegistry( std::string _name, - void (*_initModule)( ), + void (*_initModule)( void *user_data ), void (*_destroyModule)( ), Interface *(*_create)( P1 ), void (*_destroy)( Interface *obj ) ) @@ -51,13 +51,13 @@ struct ModuleRegistry< Interface, TYPELIST_1( P1 ) > { template< typename Interface, typename P1, typename P2 > struct ModuleRegistry< Interface, TYPELIST_2( P1, P2 ) > { std::string name; - void (*initModule)( ); + void (*initModule)( void *user_data ); void (*destroyModule)( ); Interface *(*create)( P1, P2 ); void (*destroy)( Interface *obj ); ModuleRegistry( std::string _name, - void (*_initModule)( ), + void (*_initModule)( void *user_data ), void (*_destroyModule)( ), Interface *(*_create)( P1, P2 ), void (*_destroy)( Interface *obj ) ) @@ -71,13 +71,13 @@ struct ModuleRegistry< Interface, TYPELIST_2( P1, P2 ) > { template< typename Interface, typename P1, typename P2, typename P3 > struct ModuleRegistry< Interface, TYPELIST_3( P1, P2, P3 ) > { std::string name; - void (*initModule)( ); + void (*initModule)( void *user_data ); void (*destroyModule)( ); Interface *(*create)( P1, P2, P3 ); void (*destroy)( Interface *obj ); ModuleRegistry( std::string _name, - void (*_initModule)( ), + void (*_initModule)( void *user_data ), void (*_destroyModule)( ), Interface *(*_create)( P1, P2, P3 ), void (*_destroy)( Interface *obj ) ) @@ -91,13 +91,13 @@ struct ModuleRegistry< Interface, TYPELIST_3( P1, P2, P3 ) > { template< typename Interface, typename P1, typename P2, typename P3, typename P4 > struct ModuleRegistry< Interface, TYPELIST_4( P1, P2, P3, P4 ) > { std::string name; - void (*initModule)( ); + void (*initModule)( void *user_data ); void (*destroyModule)( ); Interface *(*create)( P1, P2, P3, P4 ); void (*destroy)( Interface *obj ); ModuleRegistry( std::string _name, - void (*_initModule)( ), + void (*_initModule)( void *user_data ), void (*_destroyModule)( ), Interface *(*_create)( P1, P2, P3, P4 ), void (*_destroy)( Interface *obj ) ) -- cgit v1.2.3-54-g00ecf