summaryrefslogtreecommitdiff
path: root/modules/nickserv
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nickserv')
-rw-r--r--modules/nickserv/ns_ajoin.cpp33
-rw-r--r--modules/nickserv/ns_set_misc.cpp28
-rw-r--r--modules/nickserv/ns_suspend.cpp34
3 files changed, 64 insertions, 31 deletions
diff --git a/modules/nickserv/ns_ajoin.cpp b/modules/nickserv/ns_ajoin.cpp
index a169022b1..d60e30f07 100644
--- a/modules/nickserv/ns_ajoin.cpp
+++ b/modules/nickserv/ns_ajoin.cpp
@@ -39,18 +39,28 @@ struct AJoinEntry final
(*channels)->erase(it);
}
}
+};
- void Serialize(Serialize::Data &data) const override
+struct AJoinEntryType final
+ : public Serialize::Type
+{
+ AJoinEntryType()
+ : Serialize::Type("AJoinEntry")
{
- if (!this->owner)
+ }
+
+ void Serialize(const Serializable *obj, Serialize::Data &data) const override
+ {
+ const auto *aj = static_cast<const AJoinEntry *>(obj);
+ if (!aj->owner)
return;
- data.Store("owner", this->owner->display);
- data.Store("channel", this->channel);
- data.Store("key", this->key);
+ data.Store("owner", aj->owner->display);
+ data.Store("channel", aj->channel);
+ data.Store("key", aj->key);
}
- static Serializable *Unserialize(Serializable *obj, Serialize::Data &sd)
+ Serializable *Unserialize(Serializable *obj, Serialize::Data &sd) const override
{
Anope::string sowner;
@@ -305,17 +315,16 @@ class NSAJoin final
{
CommandNSAJoin commandnsajoin;
ExtensibleItem<AJoinList> ajoinlist;
- Serialize::Type ajoinentry_type;
+ AJoinEntryType ajoinentry_type;
public:
- NSAJoin(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR),
- commandnsajoin(this), ajoinlist(this, "ajoinlist"),
- ajoinentry_type("AJoinEntry", AJoinEntry::Unserialize)
+ NSAJoin(const Anope::string &modname, const Anope::string &creator)
+ : Module(modname, creator, VENDOR)
+ , commandnsajoin(this)
+ , ajoinlist(this, "ajoinlist")
{
-
if (!IRCD || !IRCD->CanSVSJoin)
throw ModuleException("Your IRCd does not support SVSJOIN");
-
}
void OnUserLogin(User *u) override
diff --git a/modules/nickserv/ns_set_misc.cpp b/modules/nickserv/ns_set_misc.cpp
index 90d463fff..c7606cf85 100644
--- a/modules/nickserv/ns_set_misc.cpp
+++ b/modules/nickserv/ns_set_misc.cpp
@@ -43,15 +43,25 @@ struct NSMiscData final
name = n;
data = d;
}
+};
+
+struct NSMiscDataType final
+ : Serialize::Type
+{
+ NSMiscDataType()
+ : Serialize::Type("NSMiscData")
+ {
+ }
- void Serialize(Serialize::Data &sdata) const override
+ void Serialize(const Serializable *obj, Serialize::Data &sdata) const override
{
- sdata.Store("nc", this->object);
- sdata.Store("name", this->name);
- sdata.Store("data", this->data);
+ const auto *d = static_cast<const NSMiscData *>(obj);
+ sdata.Store("nc", d->object);
+ sdata.Store("name", d->name);
+ sdata.Store("data", d->data);
}
- static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
+ Serializable *Unserialize(Serializable *obj, Serialize::Data &data) const override
{
Anope::string snc, sname, sdata;
@@ -185,11 +195,13 @@ class NSSetMisc final
{
CommandNSSetMisc commandnssetmisc;
CommandNSSASetMisc commandnssasetmisc;
- Serialize::Type nsmiscdata_type;
+ NSMiscDataType nsmiscdata_type;
public:
- NSSetMisc(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR),
- commandnssetmisc(this), commandnssasetmisc(this), nsmiscdata_type("NSMiscData", NSMiscData::Unserialize)
+ NSSetMisc(const Anope::string &modname, const Anope::string &creator)
+ : Module(modname, creator, VENDOR)
+ , commandnssetmisc(this)
+ , commandnssasetmisc(this)
{
me = this;
}
diff --git a/modules/nickserv/ns_suspend.cpp b/modules/nickserv/ns_suspend.cpp
index 950528e50..04af0797d 100644
--- a/modules/nickserv/ns_suspend.cpp
+++ b/modules/nickserv/ns_suspend.cpp
@@ -19,17 +19,27 @@ struct NSSuspendInfo final
, Serializable
{
NSSuspendInfo(Extensible *) : Serializable("NSSuspendInfo") { }
+};
+
+struct NSSuspendInfoType final
+ : Serialize::Type
+{
+ NSSuspendInfoType()
+ : Serialize::Type("NSSuspendInfo")
+ {
+ }
- void Serialize(Serialize::Data &data) const override
+ void Serialize(const Serializable *obj, Serialize::Data &data) const override
{
- data.Store("nick", what);
- data.Store("by", by);
- data.Store("reason", reason);
- data.Store("time", when);
- data.Store("expires", expires);
+ const auto *si = static_cast<const NSSuspendInfo *>(obj);
+ data.Store("nick", si->what);
+ data.Store("by", si->by);
+ data.Store("reason", si->reason);
+ data.Store("time", si->when);
+ data.Store("expires", si->expires);
}
- static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
+ Serializable *Unserialize(Serializable *obj, Serialize::Data &data) const override
{
Anope::string snick;
data["nick"] >> snick;
@@ -211,7 +221,7 @@ class NSSuspend final
CommandNSSuspend commandnssuspend;
CommandNSUnSuspend commandnsunsuspend;
ExtensibleItem<NSSuspendInfo> suspend;
- Serialize::Type suspend_type;
+ NSSuspendInfoType suspend_type;
std::vector<Anope::string> show;
struct trim final
@@ -234,9 +244,11 @@ class NSSuspend final
}
public:
- NSSuspend(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR),
- commandnssuspend(this), commandnsunsuspend(this), suspend(this, "NS_SUSPENDED"),
- suspend_type("NSSuspendInfo", NSSuspendInfo::Unserialize)
+ NSSuspend(const Anope::string &modname, const Anope::string &creator)
+ : Module(modname, creator, VENDOR)
+ , commandnssuspend(this)
+ , commandnsunsuspend(this)
+ , suspend(this, "NS_SUSPENDED")
{
}