Rework internal module registration to happen in constructors.

This commit is contained in:
Sasha Szpakowski
2024-02-24 15:21:38 -04:00
parent c7e4dafd88
commit 1e97e09b28
73 changed files with 154 additions and 248 deletions
+4 -1
View File
@@ -62,9 +62,12 @@ namespace love
love::Type Module::type("Module", &Object::type);
Module *Module::instances[] = {};
Module::Module()
Module::Module(Module::ModuleType moduleType, const char *name)
: moduleType(moduleType)
, name(name)
{
initDeprecation();
registerInstance(this);
}
Module::~Module()
+8 -10
View File
@@ -62,13 +62,13 @@ public:
M_MAX_ENUM
};
Module();
Module(ModuleType moduleType, const char *name);
virtual ~Module();
/**
* Gets the base type of the module.
**/
virtual ModuleType getModuleType() const = 0;
ModuleType getModuleType() const { return moduleType; }
/**
* Gets the name of the module. This is used in case of errors
@@ -76,14 +76,7 @@ public:
*
* @return The full name of the module, eg. love.graphics.opengl.
**/
virtual const char *getName() const = 0;
/**
* Add module to internal registry. To be used /only/ in
* runtime.cpp:luax_register_module()
* @param instance The module instance.
*/
static void registerInstance(Module *instance);
const char *getName() const { return name.c_str(); }
/**
* Retrieve module instance from internal registry. May return NULL
@@ -106,6 +99,11 @@ public:
private:
static void registerInstance(Module *instance);
ModuleType moduleType;
std::string name;
static Module *instances[M_MAX_ENUM];
}; // Module
-3
View File
@@ -473,9 +473,6 @@ int luax_register_module(lua_State *L, const WrappedModule &m)
lua_setfield(L, -3, m.name); // love.graphics = table
lua_remove(L, -2); // love
// Register module instance
Module::registerInstance(m.module);
return 1;
}