Request YANG schemas via sysrepo

The std::function that is fed into YangSchema::registerModuleCallback
does not have the same signature that libyang requires, because we would
have to include libyang in the sysrepo_access header file. We don't want this
class to know about libyang, so instead, we use an intermediate function,
that has string arguments and a string return type. In YangSchema, this
function is wrapped with another function, that has the required signature.

Change-Id: Ibd2dcb89344cf1454ba0b3970cac0c8e88ffa20d
diff --git a/src/yang_schema.hpp b/src/yang_schema.hpp
index 51c3be0..d100302 100644
--- a/src/yang_schema.hpp
+++ b/src/yang_schema.hpp
@@ -8,6 +8,7 @@
 
 #pragma once
 
+#include <functional>
 #include <set>
 #include <stdexcept>
 #include <unordered_map>
@@ -40,6 +41,11 @@
     yang::LeafDataTypes leafType(const path_& location, const ModuleNodePair& node) const override;
     std::set<std::string> childNodes(const path_& path) const override;
 
+    void registerModuleCallback(const std::function<std::string(const char*, const char*, const char*)>& clb);
+
+    /** @short Loads a module called moduleName. */
+    void loadModule(const std::string& moduleName);
+
     /** @short Adds a new module passed as a YANG string. */
     void addSchemaString(const char* schema);