summaryrefslogtreecommitdiff
path: root/src/nickcore.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-01-21 22:31:16 -0500
committerAdam <Adam@anope.org>2013-01-21 22:31:16 -0500
commitddaa001dafb5122e6e363e4acbbe6ce045b7b104 (patch)
tree0364a76606ac6e2881ebd663601ce260f7c1101e /src/nickcore.cpp
parent51c049e1a738e9124bab3961f35b830906517421 (diff)
Merge usefulness of Flags and Extensible classes into Extensible, made most flags we have juse strings instead of defines/enums
Diffstat (limited to 'src/nickcore.cpp')
-rw-r--r--src/nickcore.cpp33
1 files changed, 14 insertions, 19 deletions
diff --git a/src/nickcore.cpp b/src/nickcore.cpp
index ef98a7bef..c906f5999 100644
--- a/src/nickcore.cpp
+++ b/src/nickcore.cpp
@@ -17,18 +17,6 @@
Serialize::Checker<nickcore_map> NickCoreList("NickCore");
-static const Anope::string NickNameFlagStrings[] = {
- "BEGIN", "NO_EXPIRE", "HELD", "COLLIDED", ""
-};
-template<> const Anope::string* Flags<NickNameFlag>::flags_strings = NickNameFlagStrings;
-
-static const Anope::string NickCoreFlagStrings[] = {
- "BEGIN", "KILLPROTECT", "SECURE", "MSG", "MEMO_HARDMAX", "MEMO_SIGNON", "MEMO_RECEIVE",
- "PRIVATE", "HIDE_EMAIL", "HIDE_MASK", "HIDE_QUIT", "KILL_QUICK", "KILL_IMMED",
- "MEMO_MAIL", "HIDE_STATUS", "SUSPENDED", "AUTOOP", "UNCONFIRMED", "STATS", ""
-};
-template<> const Anope::string* Flags<NickCoreFlag>::flags_strings = NickCoreFlagStrings;
-
NickCore::NickCore(const Anope::string &coredisplay) : Serializable("NickCore")
{
if (coredisplay.empty())
@@ -43,9 +31,8 @@ NickCore::NickCore(const Anope::string &coredisplay) : Serializable("NickCore")
this->display = coredisplay;
/* Set default nick core flags */
- for (size_t t = NI_BEGIN + 1; t != NI_END; ++t)
- if (Config->NSDefFlags.HasFlag(static_cast<NickCoreFlag>(t)))
- this->SetFlag(static_cast<NickCoreFlag>(t));
+ for (std::set<Anope::string>::const_iterator it = Config->NSDefFlags.begin(), it_end = Config->NSDefFlags.end(); it != it_end; ++it)
+ this->ExtendMetadata(*it);
size_t old = NickCoreList->size();
(*NickCoreList)[this->display] = this;
@@ -85,7 +72,7 @@ void NickCore::Serialize(Serialize::Data &data) const
data["email"] << this->email;
data["greet"] << this->greet;
data["language"] << this->language;
- data["flags"] << this->ToString();
+ this->ExtensibleSerialize(data);
for (unsigned i = 0; i < this->access.size(); ++i)
data["access"] << this->access[i] << " ";
for (unsigned i = 0; i < this->cert.size(); ++i)
@@ -99,10 +86,9 @@ Serializable* NickCore::Unserialize(Serializable *obj, Serialize::Data &data)
{
NickCore *nc;
- Anope::string sdisplay, sflags;
+ Anope::string sdisplay;
data["display"] >> sdisplay;
- data["flags"] >> sflags;
if (obj)
nc = anope_dynamic_static_cast<NickCore *>(obj);
@@ -113,7 +99,7 @@ Serializable* NickCore::Unserialize(Serializable *obj, Serialize::Data &data)
data["email"] >> nc->email;
data["greet"] >> nc->greet;
data["language"] >> nc->language;
- nc->FromString(sflags);
+ nc->ExtensibleUnserialize(data);
{
Anope::string buf;
data["access"] >> buf;
@@ -140,6 +126,15 @@ Serializable* NickCore::Unserialize(Serializable *obj, Serialize::Data &data)
nc->memos.ignores.push_back(buf);
}
+ /* Compat */
+ Anope::string sflags;
+ data["flags"] >> sflags;
+ spacesepstream sep(sflags);
+ Anope::string tok;
+ while (sep.GetToken(tok))
+ nc->ExtendMetadata(tok);
+ /* End compat */
+
return nc;
}