summaryrefslogtreecommitdiff
path: root/include/modules.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/modules.h')
-rw-r--r--include/modules.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/include/modules.h b/include/modules.h
index 1d9d16f26..e8f0d10fe 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -1168,6 +1168,9 @@ typedef IntModuleList::iterator EventHandlerIter;
*/
class CoreExport ModuleManager
{
+ public:
+ typedef std::vector<ServiceProvider*> ServiceList;
+
private:
/** Holds a string describing the last module error to occur
*/
@@ -1189,7 +1192,7 @@ class CoreExport ModuleManager
/** Loads all core modules (cmd_*)
*/
- void LoadCoreModules();
+ void LoadCoreModules(std::map<std::string, ServiceList>& servicemap);
/** Calls the Prioritize() method in all loaded modules
* @return True if all went well, false if a dependency loop was detected
@@ -1207,6 +1210,16 @@ class CoreExport ModuleManager
/** List of data services keyed by name */
std::multimap<std::string, ServiceProvider*> DataProviders;
+ /** A list of ServiceProviders waiting to be registered.
+ * Non-NULL when constructing a Module, NULL otherwise.
+ * When non-NULL ServiceProviders add themselves to this list on creation and the core
+ * automatically registers them (that is, call AddService()) after the Module is constructed,
+ * and before Module::init() is called.
+ * If a service is created after the construction of the Module (for example in init()) it
+ * has to be registered manually.
+ */
+ ServiceList* NewServices;
+
/** Simple, bog-standard, boring constructor.
*/
ModuleManager();
@@ -1328,6 +1341,11 @@ class CoreExport ModuleManager
/** Unregister a service provided by a module */
void DelService(ServiceProvider&);
+ /** Register all services in a given ServiceList
+ * @param list The list containing the services to register
+ */
+ void AddServices(const ServiceList& list);
+
inline void AddServices(ServiceProvider** list, int count)
{
for(int i=0; i < count; i++)