diff options
-rw-r--r-- | include/modules/sql.h | 14 | ||||
-rw-r--r-- | include/serialize.h | 9 | ||||
-rw-r--r-- | src/serialize.cpp | 13 |
3 files changed, 19 insertions, 17 deletions
diff --git a/include/modules/sql.h b/include/modules/sql.h index 81af2e597..18d169d81 100644 --- a/include/modules/sql.h +++ b/include/modules/sql.h @@ -19,7 +19,6 @@ namespace SQL public: typedef std::map<Anope::string, std::stringstream *> Map; Map data; - std::map<Anope::string, Serialize::DataType> types; ~Data() { @@ -59,19 +58,6 @@ namespace SQL delete value; this->data.clear(); } - - void SetType(const Anope::string &key, Serialize::DataType dt) override - { - this->types[key] = dt; - } - - Serialize::DataType GetType(const Anope::string &key) const override - { - auto it = this->types.find(key); - if (it != this->types.end()) - return it->second; - return Serialize::DataType::TEXT; - } }; /** A SQL exception, can be thrown at various points diff --git a/include/serialize.h b/include/serialize.h index 1459a1ebd..a4895ac0c 100644 --- a/include/serialize.h +++ b/include/serialize.h @@ -28,8 +28,11 @@ namespace Serialize UINT, }; - class Data + class CoreExport Data { + protected: + std::map<Anope::string, Serialize::DataType> types; + public: virtual ~Data() = default; @@ -54,8 +57,8 @@ namespace Serialize virtual size_t Hash() const { throw CoreException("Not supported"); } - virtual void SetType(const Anope::string &key, DataType dt) { } - virtual DataType GetType(const Anope::string &key) const { return DataType::TEXT; } + Serialize::DataType GetType(const Anope::string &key) const; + void SetType(const Anope::string &key, Serialize::DataType dt); }; extern void RegisterTypes(); diff --git a/src/serialize.cpp b/src/serialize.cpp index 4da86a0ad..a90c0e7a8 100644 --- a/src/serialize.cpp +++ b/src/serialize.cpp @@ -111,6 +111,19 @@ const std::list<Serializable *> &Serializable::GetItems() return *SerializableItems; } +Serialize::DataType Serialize::Data::GetType(const Anope::string &key) const +{ + auto it = this->types.find(key); + if (it != this->types.end()) + return it->second; + return Serialize::DataType::TEXT; +} + +void Serialize::Data::SetType(const Anope::string &key, Serialize::DataType dt) +{ + this->types[key] = dt; +} + Type::Type(const Anope::string &n, unserialize_func f, Module *o) : name(n), unserialize(f), owner(o) { TypeOrder.push_back(this->name); |