Use ListInstance typedef in more places

Change-Id: Ic41218a1e09f76d7455816163d9b3ca24b0b94ca
diff --git a/src/ast_handlers.cpp b/src/ast_handlers.cpp
index f160d8c..b77964b 100644
--- a/src/ast_handlers.cpp
+++ b/src/ast_handlers.cpp
@@ -1,5 +1,5 @@
 #include "ast_handlers.hpp"
-std::set<Completion> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, std::map<std::string, leaf_data_> currentKeys)
+std::set<Completion> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, ListInstance currentKeys)
 {
     std::set<std::string> missingKeys;
 
diff --git a/src/ast_handlers.hpp b/src/ast_handlers.hpp
index b9d7a9d..870d255 100644
--- a/src/ast_handlers.hpp
+++ b/src/ast_handlers.hpp
@@ -306,7 +306,7 @@
 
 struct trailingSlash_class;
 
-std::set<Completion> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, std::map<std::string, leaf_data_> currentSet);
+std::set<Completion> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, ListInstance currentSet);
 
 struct createKeySuggestions_class {
     template <typename T, typename Iterator, typename Context>
diff --git a/src/ast_path.cpp b/src/ast_path.cpp
index f7c0022..b913d0c 100644
--- a/src/ast_path.cpp
+++ b/src/ast_path.cpp
@@ -96,7 +96,7 @@
     return this->m_name == b.m_name;
 }
 
-listElement_::listElement_(const std::string& listName, const std::map<std::string, leaf_data_>& keys)
+listElement_::listElement_(const std::string& listName, const ListInstance& keys)
     : m_name(listName)
     , m_keys(keys)
 {
diff --git a/src/ast_path.hpp b/src/ast_path.hpp
index 2d809bc..9138946 100644
--- a/src/ast_path.hpp
+++ b/src/ast_path.hpp
@@ -65,7 +65,7 @@
 
 struct listElement_ {
     listElement_() {}
-    listElement_(const std::string& listName, const std::map<std::string, leaf_data_>& keys);
+    listElement_(const std::string& listName, const ListInstance& keys);
 
     bool operator==(const listElement_& b) const;
 
diff --git a/src/netconf_access.hpp b/src/netconf_access.hpp
index 964fa54..0cc4eb4 100644
--- a/src/netconf_access.hpp
+++ b/src/netconf_access.hpp
@@ -49,7 +49,7 @@
     std::shared_ptr<Schema> schema() override;
 
 private:
-    std::vector<std::map<std::string, leaf_data_>> listInstances(const std::string& path) override;
+    std::vector<ListInstance> listInstances(const std::string& path) override;
 
     std::string fetchSchema(const std::string_view module, const
             std::optional<std::string_view> revision, const
diff --git a/src/parser_context.hpp b/src/parser_context.hpp
index 88dc71a..2a5ba22 100644
--- a/src/parser_context.hpp
+++ b/src/parser_context.hpp
@@ -32,7 +32,7 @@
 
     // When parsing list suffixes, this path is used to store the path of the list whose keys are being parsed.
     dataPath_ m_tmpListPath;
-    std::map<std::string, leaf_data_> m_tmpListKeys;
+    ListInstance m_tmpListKeys;
 
     bool m_errorHandled = false;
     bool m_completing = false;
diff --git a/src/sysrepo_access.hpp b/src/sysrepo_access.hpp
index 26d6c80..0ca7587 100644
--- a/src/sysrepo_access.hpp
+++ b/src/sysrepo_access.hpp
@@ -45,7 +45,7 @@
     void copyConfig(const Datastore source, const Datastore destination) override;
 
 private:
-    std::vector<std::map<std::string, leaf_data_>> listInstances(const std::string& path) override;
+    std::vector<ListInstance> listInstances(const std::string& path) override;
     [[noreturn]] void reportErrors();
 
     std::string fetchSchema(const char* module, const char* revision, const char* submodule);
diff --git a/tests/cd.cpp b/tests/cd.cpp
index 32d7230..192b2cc 100644
--- a/tests/cd.cpp
+++ b/tests/cd.cpp
@@ -101,7 +101,7 @@
             SECTION("example:list[number=1]")
             {
                 input = "cd example:list[number=1]";
-                auto keys = std::map<std::string, leaf_data_>{
+                auto keys = ListInstance {
                     {"number", int32_t{1}}};
                 expected.m_path.m_nodes.push_back(dataNode_(module_{"example"}, listElement_("list", keys)));
             }
@@ -109,7 +109,7 @@
             SECTION("example:list[number=1]/contInList")
             {
                 input = "cd example:list[number=1]/contInList";
-                auto keys = std::map<std::string, leaf_data_>{
+                auto keys = ListInstance {
                     {"number", int32_t{1}}};
                 expected.m_path.m_nodes.push_back(dataNode_(module_{"example"}, listElement_("list", keys)));
                 expected.m_path.m_nodes.push_back(dataNode_(container_("contInList")));
@@ -118,7 +118,7 @@
             SECTION("example:twoKeyList[number=4][name='abcd']")
             {
                 input = "cd example:twoKeyList[number=4][name='abcd']";
-                auto keys = std::map<std::string, leaf_data_>{
+                auto keys = ListInstance {
                     {"number", int32_t{4}},
                     {"name", std::string{"abcd"}}};
                 expected.m_path.m_nodes.push_back(dataNode_(module_{"example"}, listElement_("twoKeyList", keys)));
diff --git a/tests/data_query.cpp b/tests/data_query.cpp
index 410c7c4..5bc3222 100644
--- a/tests/data_query.cpp
+++ b/tests/data_query.cpp
@@ -21,7 +21,7 @@
 #include "utils.hpp"
 
 namespace std {
-std::ostream& operator<<(std::ostream& s, const std::vector<std::map<std::string, leaf_data_>> set)
+std::ostream& operator<<(std::ostream& s, const std::vector<ListInstance> set)
 {
     s << std::endl << "{" << std::endl;
     std::transform(set.begin(), set.end(), std::experimental::make_ostream_joiner(s, ", \n"), [](const auto& map) {
@@ -58,7 +58,7 @@
     {
         dataPath_ listPath;
         listPath.m_scope = Scope::Absolute;
-        std::vector<std::map<std::string, leaf_data_>> expected;
+        std::vector<ListInstance> expected;
 
         SECTION("example-schema:person")
         {
diff --git a/tests/leaf_editing.cpp b/tests/leaf_editing.cpp
index 6da7868..ca5c8d6 100644
--- a/tests/leaf_editing.cpp
+++ b/tests/leaf_editing.cpp
@@ -125,7 +125,7 @@
         SECTION("set mod:list[number=1]/leafInList \"another_data\"")
         {
             input = "set mod:list[number=1]/leafInList \"another_data\"";
-            auto keys = std::map<std::string, leaf_data_>{
+            auto keys = ListInstance {
                 {"number", int32_t{1}}};
             expected.m_path.m_nodes.push_back(dataNode_{module_{"mod"}, listElement_("list", keys)});
             expected.m_path.m_nodes.push_back(dataNode_{leaf_("leafInList")});
diff --git a/tests/list_manipulation.cpp b/tests/list_manipulation.cpp
index d2ad5f9..35cd019 100644
--- a/tests/list_manipulation.cpp
+++ b/tests/list_manipulation.cpp
@@ -36,7 +36,7 @@
         SECTION("mod:list[number=3]")
         {
             input = "mod:list[number=3]";
-            auto keys = std::map<std::string, leaf_data_>{
+            auto keys = ListInstance {
                 {"number", int32_t{3}}};
             expectedPath.m_nodes.push_back(dataNode_{module_{"mod"}, listElement_("list", keys)});
         }
@@ -44,10 +44,10 @@
         SECTION("mod:company[department=other:engineering]/inventory[id=1337]")
         {
             input = "mod:company[department=other:engineering]/inventory[id=1337]";
-            auto keys = std::map<std::string, leaf_data_>{
+            auto keys = ListInstance {
                 {"department", identityRef_{"other", "engineering"}}};
             expectedPath.m_nodes.push_back(dataNode_{module_{"mod"}, listElement_("company", keys)});
-            keys = std::map<std::string, leaf_data_>{
+            keys = ListInstance {
                 {"id", int32_t{1337}}};
             expectedPath.m_nodes.push_back(dataNode_{listElement_("inventory", keys)});
         }
diff --git a/tests/ls.cpp b/tests/ls.cpp
index 6d70414..83b2d8d 100644
--- a/tests/ls.cpp
+++ b/tests/ls.cpp
@@ -166,7 +166,7 @@
             SECTION("ls example:list[number=342]/contInList")
             {
                 input = "ls example:list[number=342]/contInList";
-                auto keys = std::map<std::string, leaf_data_>{
+                auto keys = ListInstance {
                     {"number", int32_t{342}}};
                 expected.m_path = dataPath_{Scope::Relative, {dataNode_(module_{"example"}, listElement_{"list", keys}),
                                                                 dataNode_(container_{"contInList"})}};
@@ -189,7 +189,7 @@
             SECTION("ls example:list[number=343]/..")
             {
                 input = "ls example:list[number=343]/..";
-                auto keys = std::map<std::string, leaf_data_>{
+                auto keys = ListInstance {
                     {"number", int32_t{343}}};
                 expected.m_path = dataPath_{Scope::Relative, {dataNode_(module_{"example"}, listElement_{"list", keys}), dataNode_{nodeup_{}}}};
             }
diff --git a/tests/presence_containers.cpp b/tests/presence_containers.cpp
index f248597..e009c41 100644
--- a/tests/presence_containers.cpp
+++ b/tests/presence_containers.cpp
@@ -53,7 +53,7 @@
         SECTION("mod:list[quote='lol']/contInList")
         {
             input = "mod:list[quote='lol']/contInList";
-            auto keys = std::map<std::string, leaf_data_>{
+            auto keys = ListInstance {
                 {"quote", std::string{"lol"}}};
             expectedPath.m_nodes = {{{module_{"mod"}}, listElement_("list", keys)}, {container_("contInList")}};
         }
@@ -61,7 +61,7 @@
         SECTION("mod:list[quote='double\"quote']/contInList")
         {
             input = "mod:list[quote='double\"quote']/contInList";
-            auto keys = std::map<std::string, leaf_data_>{
+            auto keys = ListInstance {
                 {"quote", std::string{"double\"quote"}}};
             expectedPath.m_nodes = {{{module_{"mod"}}, listElement_("list", keys)}, {container_("contInList")}};
         }
@@ -69,7 +69,7 @@
         SECTION("mod:list[quote=\"single'quote\"]/contInList")
         {
             input = "mod:list[quote=\"single'quote\"]/contInList";
-            auto keys = std::map<std::string, leaf_data_>{
+            auto keys = ListInstance {
                 {"quote", std::string{"single'quote"}}};
             expectedPath.m_nodes = {{{module_{"mod"}}, listElement_("list", keys)}, {container_("contInList")}};
         }