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-11-23 12:34:07 +0000
committerStijn Buys <ingar@osirion.org>2008-11-23 12:34:07 +0000
commit583ec3285c41e9d253c4aaabd2af4dadac75f3a7 (patch)
tree5ec345e44af9d3699a95f493d8358ee766e23330 /src/core/module.cc
parent44158ccfbe943b832c0e0bf9ce547212aa6c2b8b (diff)
clean module consturction/destruction
Diffstat (limited to 'src/core/module.cc')
-rw-r--r--src/core/module.cc106
1 files changed, 13 insertions, 93 deletions
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;
}
}