summaryrefslogtreecommitdiff
path: root/modules/operserv/os_news.cpp
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-03-12 10:29:11 +0000
committerSadie Powell <sadie@witchery.services>2025-03-12 15:53:52 +0000
commitcdcf0e2f9a8fb0e1c363fc65f71f3131fc6c5ea5 (patch)
tree3a665673235bb4dea58b99474492d90e0f711697 /modules/operserv/os_news.cpp
parent718f2e922a6e1113d66fc6e96131213942d507b2 (diff)
Move serialization from Serializable to a Serialize::Type child.
Diffstat (limited to 'modules/operserv/os_news.cpp')
-rw-r--r--modules/operserv/os_news.cpp39
1 files changed, 24 insertions, 15 deletions
diff --git a/modules/operserv/os_news.cpp b/modules/operserv/os_news.cpp
index 031e6f5d5..e5b6b057c 100644
--- a/modules/operserv/os_news.cpp
+++ b/modules/operserv/os_news.cpp
@@ -64,18 +64,24 @@ struct NewsMessages msgarray[] = {
}
};
-struct MyNewsItem final
- : NewsItem
+struct NewsItemType final
+ : Serialize::Type
{
- void Serialize(Serialize::Data &data) const override
+ NewsItemType()
+ : Serialize::Type("NewsItem")
{
- data.Store("type", this->type);
- data.Store("text", this->text);
- data.Store("who", this->who);
- data.Store("time", this->time);
}
- static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
+ void Serialize(const Serializable *obj, Serialize::Data &data) const override
+ {
+ const auto *ni = static_cast<const NewsItem *>(obj);
+ data.Store("type", ni->type);
+ data.Store("text", ni->text);
+ data.Store("who", ni->who);
+ data.Store("time", ni->time);
+ }
+
+ Serializable *Unserialize(Serializable *obj, Serialize::Data &data) const override
{
if (!news_service)
return NULL;
@@ -84,7 +90,7 @@ struct MyNewsItem final
if (obj)
ni = anope_dynamic_static_cast<NewsItem *>(obj);
else
- ni = new MyNewsItem();
+ ni = new NewsItem();
unsigned int t;
data["type"] >> t;
@@ -117,7 +123,7 @@ public:
NewsItem *CreateNewsItem() override
{
- return new MyNewsItem();
+ return new NewsItem();
}
void AddNewsItem(NewsItem *n) override
@@ -200,7 +206,7 @@ protected:
if (Anope::ReadOnly)
source.Reply(READ_ONLY_MODE);
- NewsItem *news = new MyNewsItem();
+ NewsItem *news = new NewsItem();
news->type = ntype;
news->text = text;
news->time = Anope::CurTime;
@@ -382,7 +388,7 @@ class OSNews final
: public Module
{
MyNewsService newsservice;
- Serialize::Type newsitem_type;
+ NewsItemType newsitem_type;
CommandOSLogonNews commandoslogonnews;
CommandOSOperNews commandosopernews;
@@ -442,9 +448,12 @@ class OSNews final
}
public:
- OSNews(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR),
- newsservice(this), newsitem_type("NewsItem", MyNewsItem::Unserialize),
- commandoslogonnews(this), commandosopernews(this), commandosrandomnews(this)
+ OSNews(const Anope::string &modname, const Anope::string &creator)
+ : Module(modname, creator, VENDOR)
+ , newsservice(this)
+ , commandoslogonnews(this)
+ , commandosopernews(this)
+ , commandosrandomnews(this)
{
}