diff options
| author | Sadie Powell <sadie@witchery.services> | 2025-03-12 10:29:11 +0000 |
|---|---|---|
| committer | Sadie Powell <sadie@witchery.services> | 2025-03-12 15:53:52 +0000 |
| commit | cdcf0e2f9a8fb0e1c363fc65f71f3131fc6c5ea5 (patch) | |
| tree | 3a665673235bb4dea58b99474492d90e0f711697 /modules/nickserv | |
| parent | 718f2e922a6e1113d66fc6e96131213942d507b2 (diff) | |
Move serialization from Serializable to a Serialize::Type child.
Diffstat (limited to 'modules/nickserv')
| -rw-r--r-- | modules/nickserv/ns_ajoin.cpp | 33 | ||||
| -rw-r--r-- | modules/nickserv/ns_set_misc.cpp | 28 | ||||
| -rw-r--r-- | modules/nickserv/ns_suspend.cpp | 34 |
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") { } |
