]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/base.cpp
Add SERVICE_CUSTOM for services managed by a module
[user/henk/code/inspircd.git] / src / base.cpp
index 0441217d1c474a44ad3a11129960e871aa1152b2..4111451f8893a2b11b29b1ddbeaad5f356498c00 100644 (file)
@@ -23,7 +23,9 @@
 #include "inspircd.h"
 #include "base.h"
 #include <time.h>
+#ifdef INSPIRCD_ENABLE_RTTI
 #include <typeinfo>
+#endif
 
 classbase::classbase()
 {
@@ -34,8 +36,12 @@ classbase::classbase()
 CullResult classbase::cull()
 {
        if (ServerInstance)
+#ifdef INSPIRCD_ENABLE_RTTI
                ServerInstance->Logs->Log("CULLLIST", LOG_DEBUG, "classbase::-%s @%p",
                        typeid(*this).name(), (void*)this);
+#else
+               ServerInstance->Logs->Log("CULLLIST", LOG_DEBUG, "classbase::- @%p", (void*)this);
+#endif
        return CullResult();
 }
 
@@ -89,6 +95,10 @@ ServiceProvider::~ServiceProvider()
 {
 }
 
+void ServiceProvider::RegisterService()
+{
+}
+
 ExtensionItem::ExtensionItem(const std::string& Key, ExtensibleType exttype, Module* mod)
        : ServiceProvider(mod, Key, SERVICE_METADATA)
        , type(exttype)
@@ -134,6 +144,12 @@ void* ExtensionItem::unset_raw(Extensible* container)
        return rv;
 }
 
+void ExtensionItem::RegisterService()
+{
+       if (!ServerInstance->Extensions.Register(this))
+               throw ModuleException("Extension already exists: " + name);
+}
+
 bool ExtensionManager::Register(ExtensionItem* item)
 {
        return types.insert(std::make_pair(item->name, item)).second;