diff options
Diffstat (limited to 'modules/nickserv/ns_suspend.cpp')
-rw-r--r-- | modules/nickserv/ns_suspend.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
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") { } |