summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rwxr-xr-xinclude/luaglue/LuaVM.hpp1
-rwxr-xr-xinclude/module/ModuleLoader.hpp7
-rwxr-xr-xinclude/module/ModuleRegistry.hpp20
3 files changed, 16 insertions, 12 deletions
diff --git a/include/luaglue/LuaVM.hpp b/include/luaglue/LuaVM.hpp
index f25cc3e..baa5bca 100755
--- a/include/luaglue/LuaVM.hpp
+++ b/include/luaglue/LuaVM.hpp
@@ -14,6 +14,7 @@ class LuaVM
void loadSource( const char *sourceFilename );
void executeMain( );
void dumpState( );
+ void fullGarbageCollect( );
lua_State *handle( );
diff --git a/include/module/ModuleLoader.hpp b/include/module/ModuleLoader.hpp
index 21905ec..045383f 100755
--- a/include/module/ModuleLoader.hpp
+++ b/include/module/ModuleLoader.hpp
@@ -28,6 +28,7 @@ struct Module {
#else
HMODULE handle;
#endif
+ void *user_data;
ModuleRegistry< Interface, CtorParams > *registry;
};
@@ -81,9 +82,11 @@ class BaseModuleLoader {
}
if( m.registry->initModule != 0 ) {
- m.registry->initModule( user_data );
+ m.registry->initModule( user_data );
}
+ m.user_data = user_data;
+
m_modules.insert( std::make_pair( m.registry->name, m ) );
}
}
@@ -96,7 +99,7 @@ class BaseModuleLoader {
typename mapType::iterator it = m_modules.begin( );
if( (*it).second.registry ) {
if( (*it).second.registry->destroyModule != 0 ) {
- (*it).second.registry->destroyModule( );
+ (*it).second.registry->destroyModule( (*it).second.user_data );
}
}
if( (*it).second.handle ) {
diff --git a/include/module/ModuleRegistry.hpp b/include/module/ModuleRegistry.hpp
index d98c9ba..058aa24 100755
--- a/include/module/ModuleRegistry.hpp
+++ b/include/module/ModuleRegistry.hpp
@@ -12,13 +12,13 @@ template< typename Interface>
struct ModuleRegistry< Interface > {
std::string name;
void (*initModule)( void *user_data );
- void (*destroyModule)( );
+ void (*destroyModule)( void *user_data );
Interface *(*create)( );
void (*destroy)( Interface *obj );
ModuleRegistry( std::string _name,
void (*_initModule)( void *user_data ),
- void (*_destroyModule)( ),
+ void (*_destroyModule)( void *user_data ),
Interface *(*_create)( ),
void (*_destroy)( Interface *obj ) )
: name( _name ),
@@ -32,13 +32,13 @@ template< typename Interface, typename P1 >
struct ModuleRegistry< Interface, TYPELIST_1( P1 ) > {
std::string name;
void (*initModule)( void *user_data );
- void (*destroyModule)( );
+ void (*destroyModule)( void *user_data );
Interface *(*create)( P1 );
void (*destroy)( Interface *obj );
ModuleRegistry( std::string _name,
void (*_initModule)( void *user_data ),
- void (*_destroyModule)( ),
+ void (*_destroyModule)( void *user_data ),
Interface *(*_create)( P1 ),
void (*_destroy)( Interface *obj ) )
: name( _name ),
@@ -52,13 +52,13 @@ template< typename Interface, typename P1, typename P2 >
struct ModuleRegistry< Interface, TYPELIST_2( P1, P2 ) > {
std::string name;
void (*initModule)( void *user_data );
- void (*destroyModule)( );
+ void (*destroyModule)( void *user_data );
Interface *(*create)( P1, P2 );
void (*destroy)( Interface *obj );
ModuleRegistry( std::string _name,
void (*_initModule)( void *user_data ),
- void (*_destroyModule)( ),
+ void (*_destroyModule)( void *user_data ),
Interface *(*_create)( P1, P2 ),
void (*_destroy)( Interface *obj ) )
: name( _name ),
@@ -72,13 +72,13 @@ template< typename Interface, typename P1, typename P2, typename P3 >
struct ModuleRegistry< Interface, TYPELIST_3( P1, P2, P3 ) > {
std::string name;
void (*initModule)( void *user_data );
- void (*destroyModule)( );
+ void (*destroyModule)( void *user_data );
Interface *(*create)( P1, P2, P3 );
void (*destroy)( Interface *obj );
ModuleRegistry( std::string _name,
void (*_initModule)( void *user_data ),
- void (*_destroyModule)( ),
+ void (*_destroyModule)( void *user_data ),
Interface *(*_create)( P1, P2, P3 ),
void (*_destroy)( Interface *obj ) )
: name( _name ),
@@ -92,13 +92,13 @@ 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 *user_data );
- void (*destroyModule)( );
+ void (*destroyModule)( void *user_data );
Interface *(*create)( P1, P2, P3, P4 );
void (*destroy)( Interface *obj );
ModuleRegistry( std::string _name,
void (*_initModule)( void *user_data ),
- void (*_destroyModule)( ),
+ void (*_destroyModule)( void *user_data ),
Interface *(*_create)( P1, P2, P3, P4 ),
void (*_destroy)( Interface *obj ) )
: name( _name ),