summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-10-01 18:50:29 -0400
committerAdam <Adam@anope.org>2012-10-01 18:50:29 -0400
commita434baed9154d90ad0dfd31c71a463fb8300bfd8 (patch)
tree587b81c85c8abd676bb6fe1897415017a6d3f85a /include
parentf14a3dfb8a4cc9da7b5066ac8320265d54dba177 (diff)
Allow modules to store data in their own databases.
Diffstat (limited to 'include')
-rw-r--r--include/access.h1
-rw-r--r--include/account.h2
-rw-r--r--include/bots.h1
-rw-r--r--include/memo.h1
-rw-r--r--include/oper.h1
-rw-r--r--include/regchannel.h7
-rw-r--r--include/serialize.h24
7 files changed, 21 insertions, 16 deletions
diff --git a/include/access.h b/include/access.h
index b29572dfc..558dbeb5c 100644
--- a/include/access.h
+++ b/include/access.h
@@ -73,7 +73,6 @@ class CoreExport ChanAccess : public Serializable
ChanAccess(AccessProvider *p);
virtual ~ChanAccess();
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
diff --git a/include/account.h b/include/account.h
index ff9c70727..8b4920fe4 100644
--- a/include/account.h
+++ b/include/account.h
@@ -134,7 +134,6 @@ class CoreExport NickAlias : public Extensible, public Flags<NickNameFlag, NS_EN
time_t last_seen; /* When it was seen online for the last time */
serialize_obj<NickCore> nc; /* I'm an alias of this */
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
@@ -218,7 +217,6 @@ class CoreExport NickCore : public Extensible, public Flags<NickCoreFlag, NI_END
time_t lastmail; /* Last time this nick record got a mail */
std::list<serialize_obj<NickAlias> > aliases; /* List of aliases */
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
diff --git a/include/bots.h b/include/bots.h
index 521ab8c03..fa3053b57 100644
--- a/include/bots.h
+++ b/include/bots.h
@@ -62,7 +62,6 @@ class CoreExport BotInfo : public User, public Flags<BotFlag, BI_END>, public Se
*/
virtual ~BotInfo();
- const Anope::string serialize_name() const;
Serialize::Data serialize() const;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
diff --git a/include/memo.h b/include/memo.h
index 8ece00d6a..1879f89b3 100644
--- a/include/memo.h
+++ b/include/memo.h
@@ -38,7 +38,6 @@ class CoreExport Memo : public Flags<MemoFlag>, public Serializable
public:
Memo();
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
diff --git a/include/oper.h b/include/oper.h
index d388c4339..6a18d3e2b 100644
--- a/include/oper.h
+++ b/include/oper.h
@@ -40,7 +40,6 @@ class CoreExport XLine : public Serializable
bool HasNickOrReal() const;
bool IsRegex() const;
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &data);
};
diff --git a/include/regchannel.h b/include/regchannel.h
index b22ebf677..0f5bb022a 100644
--- a/include/regchannel.h
+++ b/include/regchannel.h
@@ -95,7 +95,7 @@ struct CoreExport BadWord : Serializable
Anope::string word;
BadWordType type;
- const Anope::string serialize_name() const anope_override;
+ BadWord() : Serializable("BadWord") { }
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
};
@@ -125,7 +125,6 @@ class CoreExport AutoKick : public Flags<AutoKickFlag>, public Serializable
time_t addtime;
time_t last_used;
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
};
@@ -142,7 +141,6 @@ struct CoreExport ModeLock : Serializable
ModeLock(ChannelInfo *ch, bool s, ChannelModeName n, const Anope::string &p, const Anope::string &se = "", time_t c = Anope::CurTime);
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
};
@@ -160,7 +158,7 @@ struct CoreExport LogSetting : Serializable
Anope::string creator;
time_t created;
- const Anope::string serialize_name() const anope_override;
+ LogSetting() : Serializable("LogSetting") { }
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
};
@@ -219,7 +217,6 @@ class CoreExport ChannelInfo : public Extensible, public Flags<ChannelInfoFlag,
int16_t floodlines, floodsecs; /* For FLOOD kicker */
int16_t repeattimes; /* For REPEAT kicker */
- const Anope::string serialize_name() const anope_override;
Serialize::Data serialize() const anope_override;
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
diff --git a/include/serialize.h b/include/serialize.h
index 67eb6b8ce..fd8e925ab 100644
--- a/include/serialize.h
+++ b/include/serialize.h
@@ -62,18 +62,22 @@ namespace Serialize
extern void RegisterTypes();
+class SerializeType;
+
class CoreExport Serializable : public virtual Base
{
private:
static std::list<Serializable *> *serializable_items;
-
+ SerializeType *s_type;
private:
- std::list<Serializable *>::iterator s_iter;
+ std::list<Serializable *>::iterator s_iter; // Iterator into serializable_items
+
Serialize::Data last_commit;
time_t last_commit_time;
- protected:
Serializable();
+ protected:
+ Serializable(const Anope::string &serialize_type);
Serializable(const Serializable &);
virtual ~Serializable();
@@ -93,7 +97,8 @@ class CoreExport Serializable : public virtual Base
bool IsTSCached();
void UpdateTS();
- virtual const Anope::string serialize_name() const = 0;
+ SerializeType* GetSerializableType() const;
+
virtual Serialize::Data serialize() const = 0;
static const std::list<Serializable *> &GetItems();
@@ -108,12 +113,19 @@ class CoreExport SerializeType
Anope::string name;
unserialize_func unserialize;
+ Module *owner;
+
time_t timestamp;
public:
std::map<unsigned int, Serializable *> objects;
- SerializeType(const Anope::string &n, unserialize_func f);
+ /** Creates a new serializable type
+ * @param n Type name
+ * @param f Func to unserialize objects
+ * @param owner Owner of this type. Leave NULL for the core.
+ */
+ SerializeType(const Anope::string &n, unserialize_func f, Module *owner = NULL);
~SerializeType();
const Anope::string &GetName();
@@ -125,6 +137,8 @@ class CoreExport SerializeType
time_t GetTimestamp() const;
void UpdateTimestamp();
+ Module* GetOwner() const;
+
static SerializeType *Find(const Anope::string &name);
static const std::vector<Anope::string> &GetTypeOrder();