From 573e49a7ead331219eb6f0d3ca9cf83e793a5c9c Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 23 Apr 2012 05:08:26 -0400 Subject: Reworked live SQL support yet again --- modules/commands/cs_set_misc.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'modules/commands/cs_set_misc.cpp') diff --git a/modules/commands/cs_set_misc.cpp b/modules/commands/cs_set_misc.cpp index 75794697d..ab40f9fdc 100644 --- a/modules/commands/cs_set_misc.cpp +++ b/modules/commands/cs_set_misc.cpp @@ -12,9 +12,9 @@ #include "module.h" -struct CSMiscData : Anope::string, ExtensibleItem, Serializable +struct CSMiscData : ExtensibleItem, Serializable { - ChannelInfo *ci; + serialize_obj ci; Anope::string name; Anope::string data; @@ -22,14 +22,14 @@ struct CSMiscData : Anope::string, ExtensibleItem, Serializable { } - Anope::string serialize_name() const anope_override + const Anope::string serialize_name() const anope_override { return "CSMiscData"; } - serialized_data serialize() anope_override + Serialize::Data serialize() const anope_override { - serialized_data sdata; + Serialize::Data sdata; sdata["ci"] << this->ci->name; sdata["name"] << this->name; @@ -38,13 +38,27 @@ struct CSMiscData : Anope::string, ExtensibleItem, Serializable return sdata; } - static void unserialize(serialized_data &data) + static Serializable* unserialize(Serializable *obj, Serialize::Data &data) { ChannelInfo *ci = cs_findchan(data["ci"].astr()); if (ci == NULL) - return; + return NULL; + + CSMiscData *d; + if (obj) + { + d = debug_cast(obj); + d->ci = ci; + data["name"] >> d->name; + data["data"] >> d->data; + } + else + { + d = new CSMiscData(ci, data["name"].astr(), data["data"].astr()); + ci->Extend(data["name"].astr(), d); + } - ci->Extend(data["name"].astr(), new CSMiscData(ci, data["name"].astr(), data["data"].astr())); + return d; } }; -- cgit