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

kernel.cpp

Go to the documentation of this file.
00001 
00002 #include <kore/version.h>
00003 #include <kore/kernel.h>
00004 #include <kore/servicemanager.h>
00005 #include <kore/pluginloader.h>
00006 #include <kore/modulemanager.h>
00007 #include <kore/pluginmanager.h>
00008 
00009 #define KERNEL_MAJOR 0
00010 #define KERNEL_MINOR 0
00011 #define KERNEL_REVISION 1
00012 #define KERNEL_VERSION "0.0.1"
00013 #define KERNEL_NAME "Kernel"
00014 #define KERNEL_TYPE "Kernel"
00015 #define KERNEL_DESCRIPTION "Default Kore Kernel"
00016 #define KERNEL_SERVICE "Kore/Kernel/Kernel"
00017 #define KERNEL_SERVICE_DESCRIPTION "Kore Kernel service"
00018 
00019 using namespace kore;
00020 
00021 Kernel* Kernel::_instance = 0;
00022 
00023 Kernel* Kernel::instance()
00024 {
00025     if( !_instance )
00026         setInstance(new Kernel());
00027     return _instance;
00028 //    return (Kernel*)((ServiceManager*) _instance->_serviceManager->registeredProvider("Kore/Kernel/Service Manager"))->registeredProvider(KERNEL_SERVICE);
00029 }
00030 
00031 void Kernel::setInstance(Kernel* inst)
00032 {
00033     _instance = inst;
00034 }
00035 
00036 Kernel::Kernel()
00037 {
00038     _version = new Version(KERNEL_MAJOR,KERNEL_MINOR,KERNEL_REVISION,KERNEL_VERSION);
00039     _info = new Info(this, KERNEL_NAME, KERNEL_TYPE, KERNEL_DESCRIPTION, _version, _version);
00040     setInfo(_info);
00041     _kernelService = new Service(this, KERNEL_SERVICE, KERNEL_SERVICE_DESCRIPTION);
00042     addService(_kernelService);
00043 
00044     setServiceManager( new ServiceManager() );
00045     _serviceManager->registerProvider(_serviceManager);
00046     _serviceManager->registerProvider(this);
00047 
00048     _moduleManager = new ModuleManager();
00049     _serviceManager->registerProvider(_moduleManager);
00050     _moduleManager->registerModule(this);
00051     _moduleManager->registerModule(_serviceManager);
00052     _moduleManager->registerModule(_moduleManager);
00053 
00054     _pluginLoader = new PluginLoader();
00055     _serviceManager->registerProvider(_pluginLoader);
00056     _moduleManager->registerModule(_pluginLoader);
00057 //    _pluginManager = new PluginManager();
00058 }
00059 Kernel::~Kernel()
00060 {
00061 //    _serviceManager->unregisterProvider(this);
00062 //    _serviceManager->unregisterProvider(_serviceManager);
00063     _moduleManager->unregisterModule(_serviceManager);
00064     delete _serviceManager;
00065     delete _moduleManager;
00066     delete _pluginLoader;
00067     delete _info;
00068     delete _version;
00069     delete _kernelService;
00070 }
00071 
00072 ServiceManager* Kernel::serviceManager() const
00073 {
00074     return _serviceManager;
00075 }
00076 
00077 void Kernel::setServiceManager(ServiceManager* sm)
00078 {
00079     _serviceManager = sm;
00080 }

Generated on Sat Feb 16 08:40:48 2002 for Korelib by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001