diff options
Diffstat (limited to 'src/regchannel.cpp')
-rw-r--r-- | src/regchannel.cpp | 52 |
1 files changed, 33 insertions, 19 deletions
diff --git a/src/regchannel.cpp b/src/regchannel.cpp index 660233d2b..e5b305d11 100644 --- a/src/regchannel.cpp +++ b/src/regchannel.cpp @@ -12,8 +12,9 @@ #include "services.h" #include "modules.h" -BadWord::BadWord() : Serializable("BadWord") +Anope::string BadWord::serialize_name() const { + return "BadWord"; } Serializable::serialized_data BadWord::serialize() @@ -39,10 +40,15 @@ void BadWord::unserialize(serialized_data &data) ci->AddBadWord(data["word"].astr(), static_cast<BadWordType>(n)); } -AutoKick::AutoKick() : Flags<AutoKickFlag>(AutoKickFlagString), Serializable("AutoKick") +AutoKick::AutoKick() : Flags<AutoKickFlag>(AutoKickFlagString) { } +Anope::string AutoKick::serialize_name() const +{ + return "AutoKick"; +} + Serializable::serialized_data AutoKick::serialize() { serialized_data data; @@ -78,12 +84,13 @@ void AutoKick::unserialize(serialized_data &data) ci->AddAkick(data["creator"].astr(), data["mask"].astr(), data["reason"].astr(), addtime, lastused); } -ModeLock::ModeLock() : Serializable("ModeLock") +ModeLock::ModeLock(ChannelInfo *ch, bool s, ChannelModeName n, const Anope::string &p, const Anope::string &se, time_t c) : ci(ch), set(s), name(n), param(p), setter(se), created(c) { } -ModeLock::ModeLock(ChannelInfo *ch, bool s, ChannelModeName n, const Anope::string &p, const Anope::string &se, time_t c) : Serializable("ModeLock"), ci(ch), set(s), name(n), param(p), setter(se), created(c) +Anope::string ModeLock::serialize_name() const { + return "ModeLock"; } Serializable::serialized_data ModeLock::serialize() @@ -109,28 +116,32 @@ void ModeLock::unserialize(serialized_data &data) if (ci == NULL) return; - ModeLock ml; + ChannelModeName name = CMODE_END; - ml.ci = ci; - - data["set"] >> ml.set; - Anope::string n; - data["name"] >> n; for (unsigned i = 0; !ChannelModeNameStrings[i].empty(); ++i) - if (n == ChannelModeNameStrings[i]) + if (ChannelModeNameStrings[i] == data["name"].astr()) { - ml.name = static_cast<ChannelModeName>(i); + name = static_cast<ChannelModeName>(i); break; } + if (name == CMODE_END) + return; + + bool set; + data["set"] >> set; + + time_t created; + data["created"] >> created; + + ModeLock ml(ci, set, name, "", data["setter"].astr(), created); data["param"] >> ml.param; - data["setter"] >> ml.setter; - data["created"] >> ml.created; ci->mode_locks.insert(std::make_pair(ml.name, ml)); } -LogSetting::LogSetting() : Serializable("LogSetting") +Anope::string LogSetting::serialize_name() const { + return "LogSetting"; } Serializable::serialized_data LogSetting::serialize() @@ -172,7 +183,7 @@ void LogSetting::unserialize(serialized_data &data) /** Default constructor * @param chname The channel name */ -ChannelInfo::ChannelInfo(const Anope::string &chname) : Flags<ChannelInfoFlag, CI_END>(ChannelInfoFlagStrings), Serializable("ChannelInfo"), botflags(BotServFlagStrings) +ChannelInfo::ChannelInfo(const Anope::string &chname) : Flags<ChannelInfoFlag, CI_END>(ChannelInfoFlagStrings), botflags(BotServFlagStrings) { if (chname.empty()) throw CoreException("Empty channel passed to ChannelInfo constructor"); @@ -189,8 +200,6 @@ ChannelInfo::ChannelInfo(const Anope::string &chname) : Flags<ChannelInfoFlag, C this->name = chname; - this->mode_locks = def_mode_locks; - size_t t; /* Set default channel flags */ for (t = CI_BEGIN + 1; t != CI_END; ++t) @@ -217,7 +226,7 @@ ChannelInfo::ChannelInfo(const Anope::string &chname) : Flags<ChannelInfoFlag, C /** Copy constructor * @param ci The ChannelInfo to copy settings to */ -ChannelInfo::ChannelInfo(ChannelInfo &ci) : Flags<ChannelInfoFlag, CI_END>(ChannelInfoFlagStrings), Serializable("ChannelInfo"), botflags(BotServFlagStrings) +ChannelInfo::ChannelInfo(ChannelInfo &ci) : Flags<ChannelInfoFlag, CI_END>(ChannelInfoFlagStrings), botflags(BotServFlagStrings) { *this = ci; @@ -299,6 +308,11 @@ ChannelInfo::~ChannelInfo() --this->founder->channelcount; } +Anope::string ChannelInfo::serialize_name() const +{ + return "ChannelInfo"; +} + Serializable::serialized_data ChannelInfo::serialize() { serialized_data data; |