Add support for identityref data type
Change-Id: I369150b83d86a4c22fadf383ee011eee619a4c15
diff --git a/src/interpreter.cpp b/src/interpreter.cpp
index 44177b6..e08eab2 100644
--- a/src/interpreter.cpp
+++ b/src/interpreter.cpp
@@ -21,6 +21,11 @@
return data.m_value;
}
+ std::string operator()(const identityRef_& data) const
+ {
+ return data.m_value;
+ }
+
template <typename T>
std::string operator()(const T& data) const
{
@@ -42,7 +47,17 @@
void Interpreter::operator()(const set_& set) const
{
- m_datastore.setLeaf(absolutePathFromCommand(set), set.m_data);
+ auto data = set.m_data;
+
+ // If the user didn't supply a module prefix for identityref, we need to add it ourselves
+ if (data.type() == typeid(identityRef_)) {
+ auto identityRef = boost::get<identityRef_>(data);
+ if (!identityRef.m_prefix) {
+ identityRef.m_prefix = set.m_path.m_nodes.front().m_prefix.value();
+ data = identityRef;
+ }
+ }
+ m_datastore.setLeaf(absolutePathFromCommand(set), data);
}
void Interpreter::operator()(const get_& get) const