Support trailing slashes in paths

Making the trailing slash a part of the AST will help us implement
path completion.

Change-Id: I64b34634a0affef4046325c29d2767120ece9d37
diff --git a/src/ast_path.hpp b/src/ast_path.hpp
index 2711a30..557b01f 100644
--- a/src/ast_path.hpp
+++ b/src/ast_path.hpp
@@ -87,6 +87,11 @@
     bool operator==(const dataNode_& b) const;
 };
 
+enum class TrailingSlash {
+    Present,
+    NonPresent
+};
+
 enum class Scope {
     Absolute,
     Relative
@@ -96,12 +101,14 @@
     bool operator==(const schemaPath_& b) const;
     Scope m_scope = Scope::Relative;
     std::vector<schemaNode_> m_nodes;
+    TrailingSlash m_trailingSlash = TrailingSlash::NonPresent;
 };
 
 struct dataPath_ {
     bool operator==(const dataPath_& b) const;
     Scope m_scope = Scope::Relative;
     std::vector<dataNode_> m_nodes;
+    TrailingSlash m_trailingSlash = TrailingSlash::NonPresent;
 };
 
 std::string nodeToSchemaString(decltype(dataPath_::m_nodes)::value_type node);
@@ -118,5 +125,5 @@
 BOOST_FUSION_ADAPT_STRUCT(module_, m_name)
 BOOST_FUSION_ADAPT_STRUCT(dataNode_, m_prefix, m_suffix)
 BOOST_FUSION_ADAPT_STRUCT(schemaNode_, m_prefix, m_suffix)
-BOOST_FUSION_ADAPT_STRUCT(dataPath_, m_scope, m_nodes)
-BOOST_FUSION_ADAPT_STRUCT(schemaPath_, m_scope, m_nodes)
+BOOST_FUSION_ADAPT_STRUCT(dataPath_, m_scope, m_nodes, m_trailingSlash)
+BOOST_FUSION_ADAPT_STRUCT(schemaPath_, m_scope, m_nodes, m_trailingSlash)