+XLineLookup* XLineManager::GetAll(const std::string &type)
+{
+ ContainerIter n = lookup_lines.find(type);
+
+ if (n == lookup_lines.end())
+ return NULL;
+
+ LookupIter safei;
+ const time_t current = ServerInstance->Time();
+
+ /* Expire any dead ones, before sending */
+ for (LookupIter x = n->second.begin(); x != n->second.end(); )
+ {
+ safei = x;
+ safei++;
+ if (x->second->duration && current > x->second->expiry)
+ {
+ ExpireLine(n, x);
+ }
+ x = safei;
+ }
+
+ 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;
+ for (ContainerIter x = lookup_lines.begin(); x != lookup_lines.end(); ++x)
+ items.push_back(x->first);
+ return items;
+}
+