diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/model/Node.cpp | 26 |
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}); +} } |