Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

kore::ModuleManager Class Reference

class kore::ModuleManager - provides easier Kore Module management. More...

#include <modulemanager.h>

Inheritance diagram for kore::ModuleManager::

kore::ServiceProvider kore::Module List of all members.

Public Methods

 ModuleManager ()
 Default constructor. More...

virtual ~ModuleManager ()
 Destructor. More...

virtual void registerModule (Module *module)
 Registers a Module to this ModuleManager. More...

virtual void unregisterModule (Module *module)
 Unregisters a Module from this ModuleManager. More...

virtual void registerModules (Module **modules)
 Registers a list of Modules to this ModuleManager. More...

virtual void unregisterModules ()
 Unregisters a list of Modules from this ModuleManager. More...

virtual Module ** registeredModules () const
 Gets a NULL-terminated array of Modules registered to this ModuleManager. More...


Private Types

typedef set< Module *, ltptrmod_set_type

Private Attributes

const Version_mmVersion
const Version_mmAPIVersion
const Info * _mmInfo
const Service * _mmService
mod_set_type _modules

Detailed Description

class kore::ModuleManager - provides easier Kore Module management.

When creating a new Module instance, you have to register that instance to the ModuleManager, as well as unregister it right before the instance will get destroyed. The ModuleManager can be queried (registeredModules()) for the existing registered Modules (i.e. by a "module browser").

Definition at line 18 of file modulemanager.h.


Member Typedef Documentation

typedef set<Module* , ltptr> kore::ModuleManager::mod_set_type [private]
 

Definition at line 79 of file modulemanager.h.


Constructor & Destructor Documentation

ModuleManager::ModuleManager  
 

Default constructor.

Creates a ModuleManager.

Definition at line 21 of file modulemanager.cpp.

References _mmAPIVersion, _mmInfo, _mmService, _mmVersion, kore::ServiceProvider::addService(), MM_API_MAJOR, MM_API_MINOR, MM_API_REVISION, MM_API_VERSION, MM_DESCRIPTION, MM_MAJOR, MM_MINOR, MM_NAME, MM_REVISION, MM_SERVICE, MM_SERVICE_DESCRIPTION, MM_TYPE, MM_VERSION, and kore::Module::setInfo().

ModuleManager::~ModuleManager   [virtual]
 

Destructor.

Definition at line 30 of file modulemanager.cpp.

References _mmAPIVersion, _mmInfo, _mmService, _mmVersion, and unregisterModules().

00031 {
00032     unregisterModules();
00033     delete _mmInfo;
00034     delete _mmVersion;
00035     delete _mmAPIVersion;
00036     delete _mmService;
00037 }


Member Function Documentation

Module ** ModuleManager::registeredModules   const [virtual]
 

Gets a NULL-terminated array of Modules registered to this ModuleManager.

IMPORTANT: the user has to delete[] the returned array when it's no longer needed.

Returns:
- the Modules registered to this ModuleManager.

Definition at line 87 of file modulemanager.cpp.

References _modules, and kore::Module::Module().

00088 {
00089     int n = _modules.size();
00090     Module** mod = new Module*[n+1];
00091     mod_set_type::const_iterator b,e;
00092     b = _modules.begin();
00093     e = _modules.end();
00094     int i = 0;
00095     for( mod_set_type::const_iterator j = b; j != e; ++j, ++i )
00096         mod[i] = *j;
00097     mod[i] = 0;
00098     return mod;
00099 }

void ModuleManager::registerModule Module   module [virtual]
 

Registers a Module to this ModuleManager.

Parameters:
module  - the Module to be registered.

Definition at line 39 of file modulemanager.cpp.

References _modules.

Referenced by registerModules().

00040 {
00041     module->registeringModule(this);
00042     _modules.insert(module);
00043     module->moduleRegistered(this);
00044 }

void ModuleManager::registerModules Module **    modules [virtual]
 

Registers a list of Modules to this ModuleManager.

Parameters:
modules  - the Modules to be registered.

Definition at line 53 of file modulemanager.cpp.

References registerModule().

00054 {
00055     for(int i = 0; modules[i]; i++)
00056         registerModule(modules[i]);
00057 }

void ModuleManager::unregisterModule Module   module [virtual]
 

Unregisters a Module from this ModuleManager.

Parameters:
module  - the Module to be unregistered.

Definition at line 46 of file modulemanager.cpp.

References _modules.

00047 {
00048     module->unregisteringModule(this);
00049     _modules.erase(_modules.find(module));
00050     module->moduleUnregistered(this);
00051 }

void ModuleManager::unregisterModules   [virtual]
 

Unregisters a list of Modules from this ModuleManager.

Parameters:
modules  - the list of Modules to be unregistered.

Definition at line 58 of file modulemanager.cpp.

References _modules, and kore::Module::Module().

Referenced by ~ModuleManager().

00059 {
00060     int n = _modules.size();
00061 #ifdef WIN32
00062     mod_set_type::iterator* it = new mod_set_type::iterator[n];
00063     mod_set_type::iterator b,e;
00064 #else
00065     mod_set_type::const_iterator* it = new mod_set_type::const_iterator[n];
00066     mod_set_type::const_iterator b,e;
00067 #endif
00068     b = _modules.begin();
00069     e = _modules.end();
00070     int i = 0;
00071 #ifdef WIN32
00072     mod_set_type::iterator j;
00073 #else
00074     mod_set_type::const_iterator j;
00075 #endif
00076     for( j = b; j != e; ++j, ++i )
00077         it[i] = j;
00078     for( i = 0; i < n; i++)
00079     {
00080         (*it[i])->unregisteringModule(this);
00081         Module* mod = *it[i];
00082         _modules.erase(it[i]);
00083         mod->moduleUnregistered(this);
00084     }
00085 }


Member Data Documentation

const Version* kore::ModuleManager::_mmAPIVersion [private]
 

Definition at line 64 of file modulemanager.h.

Referenced by ModuleManager(), and ~ModuleManager().

const Info* kore::ModuleManager::_mmInfo [private]
 

Definition at line 66 of file modulemanager.h.

Referenced by ModuleManager(), and ~ModuleManager().

const Service* kore::ModuleManager::_mmService [private]
 

Definition at line 68 of file modulemanager.h.

Referenced by ModuleManager(), and ~ModuleManager().

const Version* kore::ModuleManager::_mmVersion [private]
 

Definition at line 62 of file modulemanager.h.

Referenced by ModuleManager(), and ~ModuleManager().

mod_set_type kore::ModuleManager::_modules [private]
 

Definition at line 81 of file modulemanager.h.

Referenced by registeredModules(), registerModule(), unregisterModule(), and unregisterModules().


The documentation for this class was generated from the following files:
Generated on Sat Feb 16 08:40:50 2002 for Korelib by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001