summaryrefslogtreecommitdiff
path: root/src/core/managed/Managed.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/managed/Managed.cpp')
-rw-r--r--src/core/managed/Managed.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/managed/Managed.cpp b/src/core/managed/Managed.cpp
index 64e287d..731947b 100644
--- a/src/core/managed/Managed.cpp
+++ b/src/core/managed/Managed.cpp
@@ -42,6 +42,20 @@ Rooted<Managed> Managed::readData(const std::string &key)
return mgr.readData(this, key);
}
+Rooted<Managed> Managed::readData(const std::string &key, const Rtti *type)
+{
+ Rooted<Managed> res = mgr.readData(this, key);
+ if (res != nullptr && res->type()->isa(type)) {
+ return res;
+ }
+ return nullptr;
+}
+
+Managed* Managed::readDataPtr(const std::string &key, const std::type_info &type)
+{
+ return readData(key, RttiStore::lookup(type)).get();
+}
+
std::map<std::string, Rooted<Managed>> Managed::readData()
{
auto map = mgr.readData(this);