summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/model/Node.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/core/model/Node.cpp b/src/core/model/Node.cpp
index bac420b..7f684ce 100644
--- a/src/core/model/Node.cpp
+++ b/src/core/model/Node.cpp
@@ -21,6 +21,7 @@
#include <core/common/Exceptions.hpp>
#include <core/common/Rtti.hpp>
+#include <core/common/TypedRttiBuilder.hpp>
#include "Node.hpp"
@@ -351,8 +352,29 @@ std::vector<ResolutionResult> Node::resolve(const std::string &name,
return resolve(std::vector<std::string>{name}, type);
}
-/* RTTI type registrations */
+/* Reflection Methods */
+
+static Variant getNodeName(const Node *obj)
+{
+ return Variant::fromString(obj->getName());
+}
+
+static void setNodeName(const Variant &value, Node *obj)
+{
+ obj->setName(value.asString());
+}
+
+static Variant getNodeParent(const Node *obj)
+{
+ return Variant::fromObject(obj->getParent());
+}
-const Rtti<Node> RttiTypes::Node{"Node"};
+/* RTTI type registrations */
+namespace RttiTypes {
+const Rtti<ousia::Node> Node =
+ TypedRttiBuilder<ousia::Node>("Node")
+ .property("name", {RttiTypes::String, getNodeName, setNodeName})
+ .property("parent", {Node, getNodeParent});
+}
}