27 #ifndef COSMO_COMPONENT_MANAGER_H
28 #define COSMO_COMPONENT_MANAGER_H
30 #include <Pt/Cosmo/Component.h>
31 #include <Pt/Cosmo/ComponentPlugin.h>
32 #include <Pt/Cosmo/IComponentManager.h>
33 #include <Pt/Cosmo/Enumerable.h>
78 const std::string& require,
79 const std::string& instanceId);
87 void load(
const std::string& instanceId);
95 void unload(
const std::string& instanceId);
102 class ComponentManagerPlugin* _plugin;
103 class ComponentManagerImpl* _impl;
108 class ComponentManagerFactory
120 void destroy(Component* instance)
124 ComponentManager* _cm;
129 class ComponentManagerPlugin :
public ComponentPlugin<ComponentManager,
130 ComponentManagerFactory>
133 static const char* FeatureId()
134 {
return "Cosmo.ComponentManager"; }
136 static const char* ClassId()
137 {
return "Cosmo.ComponentManager"; }
139 static const char*
Info()
140 {
return "Cosmo.Default"; }
143 ComponentManagerPlugin(ComponentManager& cm);
Core module.
Definition: Allocator.h:33
Enumerable interface.
Definition: IEnumerable.h:58
Component base class.
Definition: Component.h:52
Component plugin interface.
Definition: IComponentPlugin.h:51
@ Info
Infos and more severe messages.
Definition: LogLevel.h:46
void setModulesDir(const std::string &dir)
Set modules search directory.
Default component manager.
Definition: ComponentManager.h:53
void unload(IComponentPlugin &plugin)
Unloads a component plugin.
ComponentManager()
Constructor.
void unload(const std::string &instanceId)
Unloads a component by instance ID.
~ComponentManager()
Destructor.
void importComponents(const std::string &manifest)
Imports all components from manifest.
void registerComponent(IComponentPlugin &plugin, const std::string &require, const std::string &instanceId)
Registers component.
void load()
Loads all registered components.
void load(const std::string &instanceId)
Loads registered component.
const IEnumerable< ComponentInfo > & components() const
Enumerates all components.