Add modules

Change-Id: Idafb0f57dd032d4f88658de15d293bdefac0567f
diff --git a/src/static_schema.hpp b/src/static_schema.hpp
index bab8bde..1a84e23 100644
--- a/src/static_schema.hpp
+++ b/src/static_schema.hpp
@@ -19,28 +19,33 @@
 /*! \class StaticSchema
  *     \brief Static schema, used mainly for testing
  *         */
+using ModuleNodePair = std::pair<boost::optional<std::string>, std::string>;
 
 class StaticSchema : public Schema {
 public:
     StaticSchema();
 
-    bool isContainer(const path_& location, const std::string& name) const override;
-    bool isLeaf(const path_& location, const std::string& name) const override;
-    bool isList(const path_& location, const std::string& name) const override;
-    bool isPresenceContainer(const path_& location, const std::string& name) const override;
-    bool leafEnumHasValue(const path_& location, const std::string& name, const std::string& value) const override;
-    bool listHasKey(const path_& location, const std::string& name, const std::string& key) const override;
-    bool nodeExists(const std::string& location, const std::string& name) const override;
-    const std::set<std::string>& listKeys(const path_& location, const std::string& name) const override;
-    yang::LeafDataTypes leafType(const path_& location, const std::string& name) const override;
+    bool isContainer(const path_& location, const ModuleNodePair& node) const override;
+    bool isModule(const path_& location, const std::string& name) const override;
+    bool isLeaf(const path_& location, const ModuleNodePair& node) const override;
+    bool isList(const path_& location, const ModuleNodePair& node) const override;
+    bool isPresenceContainer(const path_& location, const ModuleNodePair& node) const override;
+    bool leafEnumHasValue(const path_& location, const ModuleNodePair& node, const std::string& value) const override;
+    bool listHasKey(const path_& location, const ModuleNodePair& node, const std::string& key) const override;
+    bool nodeExists(const std::string& location, const std::string& node) const override;
+    const std::set<std::string>& listKeys(const path_& location, const ModuleNodePair& node) const override;
+    yang::LeafDataTypes leafType(const path_& location, const ModuleNodePair& node) const override;
+    std::set<std::string> childNodes(const path_& path) const override;
 
     void addContainer(const std::string& location, const std::string& name, yang::ContainerTraits isPresence = yang::ContainerTraits::None);
     void addLeaf(const std::string& location, const std::string& name, const yang::LeafDataTypes& type);
     void addLeafEnum(const std::string& location, const std::string& name, std::set<std::string> enumValues);
     void addList(const std::string& location, const std::string& name, const std::set<std::string>& keys);
+    void addModule(const std::string& name);
 
 private:
     const std::unordered_map<std::string, NodeType>& children(const std::string& name) const;
 
     std::unordered_map<std::string, std::unordered_map<std::string, NodeType>> m_nodes;
+    std::set<std::string> m_modules;
 };