X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fbase.cpp;h=2b022688df8ebf2960973a4d58add9e43b8eda15;hb=d7ee3683a4d6d76113161be9754c007dee37d288;hp=aac66fd3fc553aa950c01248dfa7eeea5cc0b599;hpb=94d7827e8b101b528c427298fada73664970cf26;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/base.cpp b/src/base.cpp index aac66fd3f..2b022688d 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -26,6 +26,14 @@ classbase::classbase() { } +void classbase::cull() +{ +} + +classbase::~classbase() +{ +} + void BoolSet::Set(int number) { this->bits |= bitfields[number]; @@ -122,14 +130,32 @@ bool Extensible::Register(ExtensionItem* item) return Extensible::extension_types.insert(std::make_pair(item->key, item)).second; } -void Extensible::UnRegister(Module* module) +std::vector Extensible::BeginUnregister(Module* module) { + std::vector rv; ExtensibleTypes::iterator i = extension_types.begin(); while (i != extension_types.end()) { ExtensibleTypes::iterator c = i++; if (c->second->owner == module) + { + rv.push_back(c->second); extension_types.erase(c); + } + } + return rv; +} + +void Extensible::doUnhookExtensions(const std::vector& toRemove) +{ + for(std::vector::const_iterator i = toRemove.begin(); i != toRemove.end(); i++) + { + ExtensibleStore::iterator e = extensions.find((**i).key); + if (e != extensions.end()) + { + (**i).free(e->second); + extensions.erase(e); + } } }