From 583ec3285c41e9d253c4aaabd2af4dadac75f3a7 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 23 Nov 2008 12:34:07 +0000 Subject: clean module consturction/destruction --- src/core/module.cc | 106 +++++++---------------------------------------------- 1 file changed, 13 insertions(+), 93 deletions(-) (limited to 'src/core/module.cc') diff --git a/src/core/module.cc b/src/core/module.cc index eec250e..5dd07b5 100644 --- a/src/core/module.cc +++ b/src/core/module.cc @@ -11,117 +11,37 @@ namespace core { -/*-- static functions ----------------------------------------------*/ +Module* Module::module_instance = 0; -Module *Module::module_preload = 0; -Module *Module::module_active = 0; - -Module::Registry Module::module_registry; - -Module *Module::find(const std::string &label) -{ - Registry::iterator it = module_registry.find(label); - if (it == module_registry.end()) - return 0; - else - return (*it).second; -} - -Module *Module::find(const char *label) -{ - return(find(std::string(label))); -} - -Module *Module::add(Module *module) -{ - Module *m = find(module->label()); - if (m) { - con_warn << "module '" << module->label() << "' already registered!" << std::endl; - delete module; - return 0; - } - - module_registry[module->label()] = module; - - if (!module_preload) { - module_preload = module; - } - con_debug << " " << module->label() << " " << module->name() << std::endl; - - return module; -} - -Module *Module::load(const char *label) -{ - if (!label) - return 0; - - Module *module = find(label); - if (!module) { - con_warn << "Could not find module '" << label << "'" << std::endl; - return 0; - } - - con_print << " module " << module->label() << " " << module->name() << std::endl; - module_preload = module; - return module; -} - -void Module::clear() -{ - for (Registry::iterator it = module_registry.begin(); it != module_registry.end(); it++) { - Module *module = (*it).second; - con_print << " " << module->label() << " " << module->name() << std::endl; - } - - module_registry.clear(); - module_preload = 0; -} - -void Module::list() +Module::Module(const char *name, bool interactive) : + module_name(name) { - for (Registry::iterator it = module_registry.begin(); it != module_registry.end(); it++) { - Module *module = (*it).second; - con_print << " " << module->label() << " " << module->name() << std::endl; + module_running = true; + module_interactive = interactive; + if (module_instance) { + std::cerr << "multiple core::Module instances\n"; + abort(); + } else { + module_instance = this; } - con_print << module_registry.size() << " registered game " << aux::plural("modules", module_registry.size()) << std::endl; -} - -/*-- instance functions --------------------------------------------*/ - -Module::Module(const char *label, const char *name, bool interactive) : - module_label(label), module_name(name) -{ - module_running = false; - module_interactive = interactive; } Module::~Module() { module_running = false; module_name.clear(); + module_instance = 0; } -void Module::run() -{ - module_active = this; - module_running = true; - - init(); -} - -void Module::terminate() +void Module::set_label(const std::string &label) { - shutdown(); - module_running = false; - module_active = 0; + module_label.assign(label); } void Module::abort() { module_running = false; - module_active = 0; } } -- cgit v1.2.3