]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add factories for other types
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 31 Oct 2007 19:31:51 +0000 (19:31 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 31 Oct 2007 19:31:51 +0000 (19:31 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8439 e03df62e-2008-0410-955e-edbf42e46eb7

include/xline.h
src/xline.cpp

index edde8d91ad6739d16ac9e1a4e068db7798c6fff5..ff33da7d257c30813a55786310169b04456d3e5d 100644 (file)
@@ -373,6 +373,9 @@ class InspIRCd;
 
 class GLineFactory;
 class ELineFactory;
+class QLineFactory;
+class ZLineFactory;
+class KLineFactory;
 
 /** XLineManager is a class used to manage glines, klines, elines, zlines and qlines.
  */
@@ -397,6 +400,9 @@ class CoreExport XLineManager
 
        GLineFactory* GFact;
        ELineFactory* EFact;
+       KLineFactory* KFact;
+       QLineFactory* QFact;
+       ZLineFactory* ZFact;
 
  public:
 
@@ -573,6 +579,38 @@ class CoreExport ELineFactory : public XLineFactory
        }
 };
 
+class CoreExport KLineFactory : public XLineFactory
+{
+ public:
+        KLineFactory(InspIRCd* Instance) : XLineFactory(Instance, 'K') { }
 
-#endif
+        XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask)
+        {
+                IdentHostPair ih = ServerInstance->XLines->IdentSplit(xline_specific_mask);
+                return new KLine(ServerInstance, set_time, duration, source, reason, ih.first.c_str(), ih.second.c_str());
+        }
+};
 
+class CoreExport QLineFactory : public XLineFactory
+{
+ public:
+        QLineFactory(InspIRCd* Instance) : XLineFactory(Instance, 'Q') { }
+
+        XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask)
+        {
+                return new QLine(ServerInstance, set_time, duration, source, reason, xline_specific_mask);
+        }
+};
+
+class CoreExport ZLineFactory : public XLineFactory
+{
+ public:
+        ZLineFactory(InspIRCd* Instance) : XLineFactory(Instance, 'Z') { }
+
+        XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask)
+        {
+                return new ZLine(ServerInstance, set_time, duration, source, reason, xline_specific_mask);
+        }
+};
+
+#endif
index a853eb35f9c69d96878670f72e6cc726f238fa28..1f2782c4d9f53ce9b55279e78d15e26ca1e95959 100644 (file)
@@ -424,18 +424,30 @@ XLineManager::XLineManager(InspIRCd* Instance) : ServerInstance(Instance)
 {
        GFact = new GLineFactory(Instance);
        EFact = new ELineFactory(Instance);
+       KFact = new KLineFactory(Instance);
+       QFact = new QLineFactory(Instance);
+       ZFact = new ZLineFactory(Instance);
 
        RegisterFactory(GFact);
        RegisterFactory(EFact);
+       RegisterFactory(KFact);
+       RegisterFactory(QFact);
+       RegisterFactory(ZFact);
 }
 
 XLineManager::~XLineManager()
 {
        UnregisterFactory(GFact);
        UnregisterFactory(EFact);
+       UnregisterFactory(KFact);
+       UnregisterFactory(QFact);
+       UnregisterFactory(ZFact);
 
        delete GFact;
        delete EFact;
+       delete KFact;
+       delete QFact;
+       delete ZFact;
 }
 
 void XLine::Apply(User* u)