summaryrefslogtreecommitdiff
path: root/src/core/model/Node.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-14 22:04:22 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-14 22:04:22 +0100
commite72f5969db10d88818c2814c3929ddb67ddffc76 (patch)
tree02401ff0f79be39c0b55336f05da1b970022c57c /src/core/model/Node.cpp
parenta9c258d1dabcc1560e4a0a64621b78b5eee17f05 (diff)
Registered properties for the Node class
Diffstat (limited to 'src/core/model/Node.cpp')
-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});
+}
}