From db287e4a5133125bb6f25ba21ea97c47b19ac67f Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 18 Oct 2008 14:44:13 +0000 Subject: minor module updates --- src/core/module.cc | 50 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 17 deletions(-) (limited to 'src/core/module.cc') 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; -- cgit v1.2.3