Get rid of useless variant in get
Change-Id: I2a6c9f46a541c703ceaa02515a8fb6785cb169d2
diff --git a/src/interpreter.cpp b/src/interpreter.cpp
index 909d863..ffe303b 100644
--- a/src/interpreter.cpp
+++ b/src/interpreter.cpp
@@ -231,6 +231,11 @@
}
struct pathToStringVisitor : boost::static_visitor<std::string> {
+ std::string operator()(const module_& path) const
+ {
+ using namespace std::string_literals;
+ return "/"s + boost::get<module_>(path).m_name + ":*";
+ }
std::string operator()(const schemaPath_& path) const
{
return pathToSchemaString(path, Prefixes::WhenNeeded);
@@ -242,6 +247,11 @@
};
struct getPathScopeVisitor : boost::static_visitor<Scope> {
+ Scope operator()(const module_&) const
+ {
+ throw std::logic_error("Interpreter: a top-level module has no scope.");
+ }
+
template <typename T>
Scope operator()(const T& path) const
{
@@ -258,11 +268,10 @@
const auto path = *get.m_path;
if (path.type() == typeid(module_)) {
- return "/"s + boost::get<module_>(path).m_name + ":*";
+ return boost::apply_visitor(pathToStringVisitor(), path);
} else {
- auto actualPath = boost::get<boost::variant<dataPath_, schemaPath_>>(path);
- std::string pathString = boost::apply_visitor(pathToStringVisitor(), actualPath);
- auto pathScope{boost::apply_visitor(getPathScopeVisitor(), actualPath)};
+ std::string pathString = boost::apply_visitor(pathToStringVisitor(), path);
+ auto pathScope{boost::apply_visitor(getPathScopeVisitor(), path)};
if (pathScope == Scope::Absolute) {
return pathString;