diff options
-rw-r--r-- | include/xline.h | 4 | ||||
-rw-r--r-- | src/xline.cpp | 16 |
2 files changed, 20 insertions, 0 deletions
diff --git a/include/xline.h b/include/xline.h index d1fe0e882..4be5922d0 100644 --- a/include/xline.h +++ b/include/xline.h @@ -517,6 +517,10 @@ class CoreExport XLineManager : public classbase */ XLineLookup* GetAll(const std::string &type); + /** Remove all lines of a certain type. + */ + void DelAll(const std::string &type); + /** Return all known types of line currently stored by the XLineManager. * @return A vector containing all known line types currently stored in the main list. */ diff --git a/src/xline.cpp b/src/xline.cpp index 5d5a95516..0878ec286 100644 --- a/src/xline.cpp +++ b/src/xline.cpp @@ -116,6 +116,22 @@ XLineLookup* XLineManager::GetAll(const std::string &type) return &(n->second); } +void XLineManager::DelAll(const std::string &type) +{ + ContainerIter n = lookup_lines.find(type); + + if (n == lookup_lines.end()) + return; + + LookupIter x; + + /* Delete all of a given type (this should probably use DelLine, but oh well) */ + while ((x = n->second.begin()) != n->second.end()) + { + ExpireLine(n, x); + } +} + std::vector<std::string> XLineManager::GetAllTypes() { std::vector<std::string> items; |