summaryrefslogtreecommitdiff
path: root/src/core/managed/Managed.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/managed/Managed.hpp')
-rw-r--r--src/core/managed/Managed.hpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/core/managed/Managed.hpp b/src/core/managed/Managed.hpp
index 04c2f84..eec2fc5 100644
--- a/src/core/managed/Managed.hpp
+++ b/src/core/managed/Managed.hpp
@@ -64,7 +64,7 @@ public:
/**
* Virtual destuctor which may be overwritten by child classes.
*/
- virtual ~Managed(){};
+ virtual ~Managed(){ mgr.unmanage(this); };
/**
* Returns a reference ot the manager instance which owns this managed
@@ -112,6 +112,14 @@ public:
}
return res;
}
+
+ void storeData(const std::string &key, Handle<Managed> h);
+
+ bool hasDataKey(const std::string &key);
+
+ Rooted<Managed> readData(const std::string &key);
+
+ bool deleteData(const std::string &key);
};
/**
@@ -498,6 +506,24 @@ public:
Managed *getOwner() const { return owner; }
};
+
+inline void Managed::storeData(const std::string &key, Handle<Managed> h) {
+ mgr.storeData(this, key, h.get());
+}
+
+inline bool Managed::hasDataKey(const std::string &key)
+{
+ return mgr.readData(this, key) != nullptr;
+}
+
+inline Rooted<Managed> Managed::readData(const std::string &key) {
+ return mgr.readData(this, key);
+}
+
+inline bool Managed::deleteData(const std::string &key) {
+ return mgr.deleteData(this, key);
+}
+
}
#endif /* _OUSIA_MANAGED_HPP_ */