diff options
Diffstat (limited to 'modules/chanserv/cs_seen.cpp')
-rw-r--r-- | modules/chanserv/cs_seen.cpp | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/modules/chanserv/cs_seen.cpp b/modules/chanserv/cs_seen.cpp index d8e4e118b..835e3b124 100644 --- a/modules/chanserv/cs_seen.cpp +++ b/modules/chanserv/cs_seen.cpp @@ -43,19 +43,29 @@ struct SeenInfo final if (iter != database.end() && iter->second == this) database.erase(iter); } +}; + +struct SeenInfoType final + : Serialize::Type +{ + SeenInfoType() + : Serialize::Type("SeenInfo") + { + } - void Serialize(Serialize::Data &data) const override + void Serialize(const Serializable *obj, Serialize::Data &data) const override { - data.Store("nick", nick); - data.Store("vhost", vhost); - data.Store("type", type); - data.Store("nick2", nick2); - data.Store("channel", channel); - data.Store("message", message); - data.Store("last", last); + const auto *s = static_cast<const SeenInfo *>(obj); + data.Store("nick", s->nick); + data.Store("vhost", s->vhost); + data.Store("type", s->type); + data.Store("nick2", s->nick2); + data.Store("channel", s->channel); + data.Store("message", s->message); + data.Store("last", s->last); } - static Serializable *Unserialize(Serializable *obj, Serialize::Data &data) + Serializable *Unserialize(Serializable *obj, Serialize::Data &data) const override { Anope::string snick; @@ -374,11 +384,14 @@ public: class CSSeen final : public Module { - Serialize::Type seeninfo_type; + SeenInfoType seeninfo_type; CommandSeen commandseen; CommandOSSeen commandosseen; public: - CSSeen(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR), seeninfo_type("SeenInfo", SeenInfo::Unserialize), commandseen(this), commandosseen(this) + CSSeen(const Anope::string &modname, const Anope::string &creator) + : Module(modname, creator, VENDOR) + , commandseen(this) + , commandosseen(this) { } |