Add modules

Change-Id: Idafb0f57dd032d4f88658de15d293bdefac0567f
diff --git a/src/ast_path.hpp b/src/ast_path.hpp
index 1a4b282..029d33f 100644
--- a/src/ast_path.hpp
+++ b/src/ast_path.hpp
@@ -53,15 +53,34 @@
     std::map<std::string, std::string> m_keys;
 };
 
-struct path_ {
-    bool operator==(const path_& b) const;
-    std::vector<boost::variant<container_, listElement_, nodeup_, leaf_>> m_nodes;
+struct module_ {
+    bool operator==(const module_& b) const;
+    std::string m_name;
 };
 
+struct node_ {
+    boost::optional<module_> m_prefix;
+    boost::variant<container_, listElement_, nodeup_, leaf_> m_suffix;
 
+    node_();
+    node_(decltype(m_suffix) node);
+    node_(module_ module, decltype(m_suffix) node);
+    bool operator==(const node_& b) const;
+};
+
+struct path_ {
+    bool operator==(const path_& b) const;
+    std::vector<node_> m_nodes;
+};
+
+std::string nodeToSchemaString(decltype(path_::m_nodes)::value_type node);
+
+std::string pathToAbsoluteSchemaString(const path_& path);
 std::string pathToDataString(const path_& path);
 std::string pathToSchemaString(const path_& path);
 
 BOOST_FUSION_ADAPT_STRUCT(container_, m_name)
 BOOST_FUSION_ADAPT_STRUCT(listElement_, m_name, m_keys)
+BOOST_FUSION_ADAPT_STRUCT(module_, m_name)
+BOOST_FUSION_ADAPT_STRUCT(node_, m_prefix, m_suffix)
 BOOST_FUSION_ADAPT_STRUCT(path_, m_nodes)