Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-10-18 14:44:13 +0000
committerStijn Buys <ingar@osirion.org>2008-10-18 14:44:13 +0000
commitdb287e4a5133125bb6f25ba21ea97c47b19ac67f (patch)
treec977e4da6203344362a186010d017463d88def6e /src/core/module.cc
parentade4627e7fe0f89d9fdb2e27f01444ad0aa2d41d (diff)
minor module updates
Diffstat (limited to 'src/core/module.cc')
-rw-r--r--src/core/module.cc50
1 files changed, 33 insertions, 17 deletions
diff --git a/src/core/module.cc b/src/core/module.cc
index ae78260..319d651 100644
--- a/src/core/module.cc
+++ b/src/core/module.cc
@@ -4,6 +4,7 @@
the terms of the GNU General Public License version 2
*/
+#include "auxiliary/functions.h"
#include "core/module.h"
#include "sys/sys.h"
@@ -15,46 +16,51 @@ namespace core
Module *Module::module_preload = 0;
Module::Registry Module::module_registry;
-Module *Module::find(std::string const &name)
+Module *Module::find(const std::string &label)
{
- Registry::iterator it = module_registry.find(name);
+ Registry::iterator it = module_registry.find(label);
if (it == module_registry.end())
return 0;
else
return (*it).second;
}
-Module *Module::find(const char *name)
+Module *Module::find(const char *label)
{
- return(find(std::string(name)));
+ return(find(std::string(label)));
}
-Module *Module::add(const char *name, Module *module)
+Module *Module::add(Module *module)
{
- Module *m = find(name);
+ Module *m = find(module->label());
if (m) {
- con_warn << "module '" << name << "' already loaded!" << std::endl;
+ con_warn << "module '" << module->label() << "' already registered!" << std::endl;
delete module;
return 0;
}
- module_registry[std::string(name)] = module;
- module->module_label.assign(name);
+
+ module_registry[module->label()] = module;
+
if (!module_preload) {
module_preload = module;
- con_debug << " " << name << " " << module->name() << std::endl;
}
+ con_debug << " " << module->label() << " " << module->name() << std::endl;
+
return module;
}
-Module *Module::load(const char *name)
+Module *Module::load(const char *label)
{
- Module *module = find(name);
+ if (!label)
+ return 0;
+
+ Module *module = find(label);
if (!module) {
- con_warn << "could not find module '" << name << "'" << std::endl;
+ con_warn << "Could not find module '" << label << "'" << std::endl;
return 0;
}
- con_debug << " " << name << " " << module->name() << std::endl;
+ con_print << " module" << module->label() << " " << module->name() << std::endl;
module_preload = module;
return module;
}
@@ -63,17 +69,27 @@ void Module::clear()
{
for (Registry::iterator it = module_registry.begin(); it != module_registry.end(); it++) {
Module *module = (*it).second;
- delete module;
+ con_print << " " << module->label() << " " << module->name() << std::endl;
}
module_registry.clear();
module_preload = 0;
}
+void Module::list()
+{
+ for (Registry::iterator it = module_registry.begin(); it != module_registry.end(); it++) {
+ Module *module = (*it).second;
+ con_print << " " << module->label() << " " << module->name() << std::endl;
+
+ }
+ con_print << module_registry.size() << " registered game " << aux::plural("modules", module_registry.size()) << std::endl;
+}
+
/*-- instance functions --------------------------------------------*/
-Module::Module(const char *name) :
- module_name(name)
+Module::Module(const char *label, const char *name) :
+ module_label(label), module_name(name)
{
module_running = false;
module_interactive = true;