add presence containers
Change-Id: Ic8e33d68e496deae9dfe4c3e5ebcecbd45ee31b2
diff --git a/src/schema.hpp b/src/schema.hpp
index 7d6e486..9c7114b 100644
--- a/src/schema.hpp
+++ b/src/schema.hpp
@@ -15,7 +15,12 @@
#include "ast.hpp"
namespace yang {
+enum class ContainerTraits {
+ Presence,
+ None,
+};
struct container {
+ yang::ContainerTraits m_presence;
};
struct list {
std::set<std::string> m_keys;
@@ -23,7 +28,6 @@
}
-
using NodeType = boost::variant<yang::container, yang::list>;
@@ -42,11 +46,12 @@
bool nodeExists(const std::string& location, const std::string& name) const;
bool isContainer(const path_& location, const std::string& name) const;
- void addContainer(const std::string& location, const std::string& name);
+ void addContainer(const std::string& location, const std::string& name, yang::ContainerTraits isPresence = yang::ContainerTraits::None);
const std::set<std::string>& listKeys(const path_& location, const std::string& name) const;
bool listHasKey(const path_& location, const std::string& name, const std::string& key) const;
bool isList(const path_& location, const std::string& name) const;
void addList(const std::string& location, const std::string& name, const std::set<std::string>& keys);
+ bool isPresenceContainer(const path_& location, const std::string& name) const;
private:
const std::unordered_map<std::string, NodeType>& children(const std::string& name) const;