rename some of the classes

CParser is now just parser. CTree is now Schema. The namespace "schema" is
now called "yang".

Change-Id: Ief9c22fb6a7633b80010d355f9582e313e818d45
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2c9975e..7513c87 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,8 +55,8 @@
 add_definitions(-DBOOST_SPIRIT_X3_NO_FILESYSTEM)
 
 set(parser_SRCS
-    src/CTree.cpp
-    src/CParser.cpp
+    src/schema.cpp
+    src/parser.cpp
     src/ast.cpp
     src/utils.cpp
     src/parser_context.cpp
diff --git a/src/CTree.cpp b/src/CTree.cpp
deleted file mode 100644
index 6840697..0000000
--- a/src/CTree.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
- * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
- *
- * Written by Václav Kubernát <kubervac@fit.cvut.cz>
- *
-*/
-
-#include <iostream>
-#include "CTree.hpp"
-#include "utils.hpp"
-
-InvalidNodeException::~InvalidNodeException() = default;
-
-
-std::string pathToString(const path_& path)
-{
-   std::string res;
-   for (const auto it : path.m_nodes)
-       res = joinPaths(res, boost::apply_visitor(nodeToString(), it));
-   return res;
-}
-
-CTree::CTree()
-{
-    m_nodes.emplace("", std::unordered_map<std::string, NodeType>());
-}
-
-const std::unordered_map<std::string, NodeType>& CTree::children(const std::string& name) const
-{
-    return m_nodes.at(name);
-}
-
-bool CTree::nodeExists(const std::string& location, const std::string& name) const
-{
-    if (name.empty())
-        return true;
-    const auto& childrenRef = children(location);
-
-    return childrenRef.find(name) != childrenRef.end();
-}
-
-bool CTree::isContainer(const path_& location, const std::string& name) const
-{
-    std::string locationString = pathToString(location);
-    if (!nodeExists(locationString, name))
-        return false;
-
-    return children(locationString).at(name).type() == typeid(schema::container);
-}
-
-void CTree::addContainer(const std::string& location, const std::string& name)
-{
-    m_nodes.at(location).emplace(name, schema::container{});
-
-    //create a new set of children for the new node
-    std::string key = joinPaths(location, name);
-    m_nodes.emplace(key, std::unordered_map<std::string, NodeType>());
-}
-
-
-bool CTree::listHasKey(const path_& location, const std::string& name, const std::string& key) const
-{
-    std::string locationString = pathToString(location);
-    assert(isList(location, name));
-
-    const auto& child = children(locationString).at(name);
-    const auto& list = boost::get<schema::list>(child);
-    return list.m_keys.find(key) != list.m_keys.end();
-}
-
-const std::set<std::string>& CTree::listKeys(const path_& location, const std::string& name) const
-{
-    std::string locationString = pathToString(location);
-    assert(isList(location, name));
-
-    const auto& child = children(locationString).at(name);
-    const auto& list = boost::get<schema::list>(child);
-    return list.m_keys;
-}
-
-bool CTree::isList(const path_& location, const std::string& name) const
-{
-    std::string locationString = pathToString(location);
-    if (!nodeExists(locationString, name))
-        return false;
-    const auto& child = children(locationString).at(name);
-    if (child.type() != typeid(schema::list))
-        return false;
-
-    return true;
-}
-
-void CTree::addList(const std::string& location, const std::string& name, const std::set<std::string>& keys)
-{
-    m_nodes.at(location).emplace(name, schema::list{keys});
-
-    m_nodes.emplace(name, std::unordered_map<std::string, NodeType>());
-}
-
diff --git a/src/ast.cpp b/src/ast.cpp
index 9c96bd2..9345192 100644
--- a/src/ast.cpp
+++ b/src/ast.cpp
@@ -40,5 +40,3 @@
 {
     return this->m_path == b.m_path;
 }
-
-
diff --git a/src/ast.hpp b/src/ast.hpp
index 0c257d0..90e007a 100644
--- a/src/ast.hpp
+++ b/src/ast.hpp
@@ -21,14 +21,14 @@
 namespace x3 = boost::spirit::x3;
 namespace ascii = boost::spirit::x3::ascii;
 
-using x3::alpha;
-using x3::alnum;
-using x3::lit;
-using x3::char_;
-using x3::_attr;
-using x3::lexeme;
-using x3::expect;
 using ascii::space;
+using x3::_attr;
+using x3::alnum;
+using x3::alpha;
+using x3::char_;
+using x3::expect;
+using x3::lexeme;
+using x3::lit;
 using boost::fusion::operator<<;
 
 
@@ -41,7 +41,7 @@
 struct nodeup_ {
     bool operator==(const nodeup_&) const
     {
-       return true;
+        return true;
     }
 };
 
diff --git a/src/ast_handlers.hpp b/src/ast_handlers.hpp
index ce8a196..0c7f1c3 100644
--- a/src/ast_handlers.hpp
+++ b/src/ast_handlers.hpp
@@ -8,20 +8,20 @@
 
 #pragma once
 
-#include "CTree.hpp"
 #include "parser_context.hpp"
+#include "schema.hpp"
 
 struct keyValue_class {
     template <typename T, typename Iterator, typename Context>
     void on_success(Iterator const&, Iterator const&, T& ast, Context const& context)
     {
         auto& parserContext = x3::get<parser_context_tag>(context);
-        const CTree& tree = parserContext.m_tree;
+        const Schema& schema = parserContext.m_schema;
 
         if (parserContext.m_tmpListKeys.find(ast.first) != parserContext.m_tmpListKeys.end()) {
             _pass(context) = false;
             parserContext.m_errorMsg = "Key \"" + ast.first + "\" was entered more than once.";
-        } else if (tree.listHasKey(parserContext.m_curPath, parserContext.m_tmpListName, ast.first)) {
+        } else if (schema.listHasKey(parserContext.m_curPath, parserContext.m_tmpListName, ast.first)) {
             parserContext.m_tmpListKeys.insert(ast.first);
         } else {
             _pass(context) = false;
@@ -36,9 +36,9 @@
     void on_success(Iterator const&, Iterator const&, T& ast, Context const& context)
     {
         auto& parserContext = x3::get<parser_context_tag>(context);
-        const CTree& tree = parserContext.m_tree;
+        const Schema& schema = parserContext.m_schema;
 
-        if (tree.isList(parserContext.m_curPath, ast)) {
+        if (schema.isList(parserContext.m_curPath, ast)) {
             parserContext.m_tmpListName = ast;
         } else {
             _pass(context) = false;
@@ -51,9 +51,9 @@
     void on_success(Iterator const&, Iterator const&, T& ast, Context const& context)
     {
         auto& parserContext = x3::get<parser_context_tag>(context);
-        const CTree& tree = parserContext.m_tree;
+        const Schema& schema = parserContext.m_schema;
 
-        const auto& keysNeeded = tree.listKeys(parserContext.m_curPath, parserContext.m_tmpListName);
+        const auto& keysNeeded = schema.listKeys(parserContext.m_curPath, parserContext.m_tmpListName);
         std::set<std::string> keysSupplied;
         for (const auto& it : ast)
             keysSupplied.insert(it.first);
@@ -119,9 +119,9 @@
     void on_success(Iterator const&, Iterator const&, T& ast, Context const& context)
     {
         auto& parserContext = x3::get<parser_context_tag>(context);
-        const auto& tree = parserContext.m_tree;
+        const auto& schema = parserContext.m_schema;
 
-        if (tree.isContainer(parserContext.m_curPath, ast.m_name)) {
+        if (schema.isContainer(parserContext.m_curPath, ast.m_name)) {
             parserContext.m_curPath.m_nodes.push_back(ast);
         } else {
             _pass(context) = false;
diff --git a/src/main.cpp b/src/main.cpp
index 607115e..c40f2ae 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -10,9 +10,9 @@
 #include <docopt.h>
 #include <iostream>
 #include <string>
-#include "CParser.hpp"
-#include "CTree.hpp"
 #include "NETCONF_CLI_VERSION.h"
+#include "parser.hpp"
+#include "schema.hpp"
 
 
 static const char usage[] =
@@ -28,16 +28,16 @@
 namespace ascii = boost::spirit::x3::ascii;
 
 using Cmd = std::vector<std::string>;
-using x3::alpha;
-using x3::lit;
-using x3::char_;
-using x3::_attr;
-using x3::lexeme;
 using ascii::space;
+using x3::_attr;
+using x3::alpha;
+using x3::char_;
+using x3::lexeme;
+using x3::lit;
 
-void interpret(cd_ command, CParser& tree)
+void interpret(cd_ command, Parser& parser)
 {
-    tree.changeNode(command.m_path);
+    parser.changeNode(command.m_path);
 }
 
 int main(int argc, char* argv[])
@@ -49,17 +49,17 @@
                                true);
     std::cout << "Welcome to netconf-cli" << std::endl;
 
-    CTree tree;
-    tree.addContainer("", "a");
-    tree.addContainer("", "b");
-    tree.addContainer("a", "a2");
-    tree.addContainer("b", "b2");
-    tree.addContainer("a/a2", "a3");
-    tree.addContainer("b/b2", "b3");
-    tree.addList("", "list", {"number"});
-    tree.addContainer("list", "contInList");
-    tree.addList("", "twoKeyList", {"number", "name"});
-    CParser parser(tree);
+    Schema schema;
+    schema.addContainer("", "a");
+    schema.addContainer("", "b");
+    schema.addContainer("a", "a2");
+    schema.addContainer("b", "b2");
+    schema.addContainer("a/a2", "a3");
+    schema.addContainer("b/b2", "b3");
+    schema.addList("", "list", {"number"});
+    schema.addContainer("list", "contInList");
+    schema.addList("", "twoKeyList", {"number", "name"});
+    Parser parser(schema);
 
     while (true) {
         std::cout << parser.currentNode() << ">";
diff --git a/src/CParser.cpp b/src/parser.cpp
similarity index 81%
rename from src/CParser.cpp
rename to src/parser.cpp
index cb81de0..87ed317 100644
--- a/src/CParser.cpp
+++ b/src/parser.cpp
@@ -6,22 +6,22 @@
  *
 */
 #include <ostream>
-#include "CParser.hpp"
+#include "parser.hpp"
 
 TooManyArgumentsException::~TooManyArgumentsException() = default;
 
 InvalidCommandException::~InvalidCommandException() = default;
 
 
-CParser::CParser(const CTree& tree)
-    : m_tree(tree)
+Parser::Parser(const Schema& schema)
+    : m_schema(schema)
 {
 }
 
-cd_ CParser::parseCommand(const std::string& line, std::ostream& errorStream)
+cd_ Parser::parseCommand(const std::string& line, std::ostream& errorStream)
 {
     cd_ parsedCommand;
-    ParserContext ctx(m_tree, m_curDir);
+    ParserContext ctx(m_schema, m_curDir);
     auto it = line.begin();
 
     boost::spirit::x3::error_handler<std::string::const_iterator> errorHandler(it, line.end(), errorStream);
@@ -39,7 +39,7 @@
     return parsedCommand;
 }
 
-void CParser::changeNode(const path_& name)
+void Parser::changeNode(const path_& name)
 {
     for (const auto& it : name.m_nodes) {
         if (it.type() == typeid(nodeup_))
@@ -49,7 +49,7 @@
     }
 }
 
-std::string CParser::currentNode() const
+std::string Parser::currentNode() const
 {
     std::string res;
     for (const auto& it : m_curDir.m_nodes) {
diff --git a/src/CParser.hpp b/src/parser.hpp
similarity index 92%
rename from src/CParser.hpp
rename to src/parser.hpp
index bf21300..feb7911 100644
--- a/src/CParser.hpp
+++ b/src/parser.hpp
@@ -12,12 +12,12 @@
 namespace x3 = boost::spirit::x3;
 namespace ascii = boost::spirit::x3::ascii;
 using Cmd = std::vector<std::string>;
-using x3::alpha;
-using x3::lit;
-using x3::char_;
-using x3::_attr;
-using x3::lexeme;
 using ascii::space;
+using x3::_attr;
+using x3::alpha;
+using x3::char_;
+using x3::lexeme;
+using x3::lit;
 
 class InvalidCommandException : public std::invalid_argument {
 public:
@@ -32,14 +32,14 @@
 };
 
 
-class CParser {
+class Parser {
 public:
-    CParser(const CTree& tree);
+    Parser(const Schema& schema);
     cd_ parseCommand(const std::string& line, std::ostream& errorStream);
     void changeNode(const path_& name);
     std::string currentNode() const;
 
 private:
-    const CTree& m_tree;
+    const Schema& m_schema;
     path_ m_curDir;
 };
diff --git a/src/parser_context.cpp b/src/parser_context.cpp
index db2bb43..d3b4a90 100644
--- a/src/parser_context.cpp
+++ b/src/parser_context.cpp
@@ -7,8 +7,8 @@
 */
 
 #include "parser_context.hpp"
-ParserContext::ParserContext(const CTree& tree, const path_ curDir)
-        : m_tree(tree)
+ParserContext::ParserContext(const Schema& schema, const path_ curDir)
+    : m_schema(schema)
 {
     m_curPath = curDir;
 }
diff --git a/src/parser_context.hpp b/src/parser_context.hpp
index 2c90120..99c1a63 100644
--- a/src/parser_context.hpp
+++ b/src/parser_context.hpp
@@ -6,10 +6,10 @@
  *
 */
 
-#include "CTree.hpp"
+#include "schema.hpp"
 struct ParserContext {
-    ParserContext(const CTree& tree, const path_ curDir);
-    const CTree& m_tree;
+    ParserContext(const Schema& schema, const path_ curDir);
+    const Schema& m_schema;
     path_ m_curPath;
     std::string m_errorMsg;
     std::string m_tmpListName;
diff --git a/src/schema.cpp b/src/schema.cpp
new file mode 100644
index 0000000..aaaab8b
--- /dev/null
+++ b/src/schema.cpp
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+
+#include <iostream>
+#include "schema.hpp"
+#include "utils.hpp"
+
+InvalidNodeException::~InvalidNodeException() = default;
+
+
+std::string pathToString(const path_& path)
+{
+    std::string res;
+    for (const auto it : path.m_nodes)
+        res = joinPaths(res, boost::apply_visitor(nodeToString(), it));
+    return res;
+}
+
+Schema::Schema()
+{
+    m_nodes.emplace("", std::unordered_map<std::string, NodeType>());
+}
+
+const std::unordered_map<std::string, NodeType>& Schema::children(const std::string& name) const
+{
+    return m_nodes.at(name);
+}
+
+bool Schema::nodeExists(const std::string& location, const std::string& name) const
+{
+    if (name.empty())
+        return true;
+    const auto& childrenRef = children(location);
+
+    return childrenRef.find(name) != childrenRef.end();
+}
+
+bool Schema::isContainer(const path_& location, const std::string& name) const
+{
+    std::string locationString = pathToString(location);
+    if (!nodeExists(locationString, name))
+        return false;
+
+    return children(locationString).at(name).type() == typeid(yang::container);
+}
+
+void Schema::addContainer(const std::string& location, const std::string& name)
+{
+    m_nodes.at(location).emplace(name, yang::container{});
+
+    //create a new set of children for the new node
+    std::string key = joinPaths(location, name);
+    m_nodes.emplace(key, std::unordered_map<std::string, NodeType>());
+}
+
+
+bool Schema::listHasKey(const path_& location, const std::string& name, const std::string& key) const
+{
+    std::string locationString = pathToString(location);
+    assert(isList(location, name));
+
+    const auto& child = children(locationString).at(name);
+    const auto& list = boost::get<yang::list>(child);
+    return list.m_keys.find(key) != list.m_keys.end();
+}
+
+const std::set<std::string>& Schema::listKeys(const path_& location, const std::string& name) const
+{
+    std::string locationString = pathToString(location);
+    assert(isList(location, name));
+
+    const auto& child = children(locationString).at(name);
+    const auto& list = boost::get<yang::list>(child);
+    return list.m_keys;
+}
+
+bool Schema::isList(const path_& location, const std::string& name) const
+{
+    std::string locationString = pathToString(location);
+    if (!nodeExists(locationString, name))
+        return false;
+    const auto& child = children(locationString).at(name);
+    if (child.type() != typeid(yang::list))
+        return false;
+
+    return true;
+}
+
+void Schema::addList(const std::string& location, const std::string& name, const std::set<std::string>& keys)
+{
+    m_nodes.at(location).emplace(name, yang::list{keys});
+
+    m_nodes.emplace(name, std::unordered_map<std::string, NodeType>());
+}
diff --git a/src/CTree.hpp b/src/schema.hpp
similarity index 77%
rename from src/CTree.hpp
rename to src/schema.hpp
index 8b42371..a414dc9 100644
--- a/src/CTree.hpp
+++ b/src/schema.hpp
@@ -14,12 +14,12 @@
 #include <unordered_map>
 #include "ast.hpp"
 
-namespace schema {
-    struct container {
-    };
-    struct list {
-        std::set<std::string> m_keys;
-    };
+namespace yang {
+struct container {
+};
+struct list {
+    std::set<std::string> m_keys;
+};
 }
 
 struct nodeToString : public boost::static_visitor<std::string> {
@@ -34,7 +34,7 @@
     }
 };
 
-using NodeType = boost::variant<schema::container, schema::list>;
+using NodeType = boost::variant<yang::container, yang::list>;
 
 
 class InvalidNodeException : public std::invalid_argument {
@@ -43,15 +43,12 @@
     ~InvalidNodeException() override;
 };
 
-/*! \class CTree
- *     \brief The class representing the tree, that the user traverses.
- *
- *         This class holds the current position in the tree and handles changing the position,
- *         including checking what nodes are available.
+/*! \class Schema
+ *     \brief The class representing the schema, that the user traverses.
  *         */
-class CTree {
+class Schema {
 public:
-    CTree();
+    Schema();
     bool nodeExists(const std::string& location, const std::string& name) const;
 
     bool isContainer(const path_& location, const std::string& name) const;
diff --git a/tests/cd.cpp b/tests/cd.cpp
index 8ab4c40..83a1f98 100644
--- a/tests/cd.cpp
+++ b/tests/cd.cpp
@@ -7,23 +7,23 @@
 */
 
 #include "trompeloeil_catch.h"
-#include "CParser.hpp"
-#include "CTree.hpp"
 #include "ast.hpp"
+#include "parser.hpp"
+#include "schema.hpp"
 
 TEST_CASE("cd")
 {
-    CTree tree;
-    tree.addContainer("", "a");
-    tree.addContainer("", "b");
-    tree.addContainer("a", "a2");
-    tree.addContainer("b", "b2");
-    tree.addContainer("a/a2", "a3");
-    tree.addContainer("b/b2", "b3");
-    tree.addList("", "list", {"number"});
-    tree.addContainer("list", "contInList");
-    tree.addList("", "twoKeyList", {"number", "name"});
-    CParser parser(tree);
+    Schema schema;
+    schema.addContainer("", "a");
+    schema.addContainer("", "b");
+    schema.addContainer("a", "a2");
+    schema.addContainer("b", "b2");
+    schema.addContainer("a/a2", "a3");
+    schema.addContainer("b/b2", "b3");
+    schema.addList("", "list", {"number"});
+    schema.addContainer("list", "contInList");
+    schema.addList("", "twoKeyList", {"number", "name"});
+    Parser parser(schema);
     std::string input;
     std::ostringstream errorStream;
 
@@ -58,7 +58,6 @@
                 expected.m_path.m_nodes.push_back(container_("b"));
                 expected.m_path.m_nodes.push_back(container_("b2"));
             }
-
         }
 
         SECTION("list elements")
@@ -67,8 +66,7 @@
             {
                 input = "cd list[number=1]";
                 auto keys = std::map<std::string, std::string>{
-                        {"number", "1"}
-                };
+                    {"number", "1"}};
                 expected.m_path.m_nodes.push_back(listElement_("list", keys));
             }
 
@@ -76,7 +74,7 @@
             {
                 input = "cd list[number=1]/contInList";
                 auto keys = std::map<std::string, std::string>{
-                        {"number", "1"}};
+                    {"number", "1"}};
                 expected.m_path.m_nodes.push_back(listElement_("list", keys));
                 expected.m_path.m_nodes.push_back(container_("contInList"));
             }
@@ -85,11 +83,10 @@
             {
                 input = "cd twoKeyList[number=4 name=abcd]";
                 auto keys = std::map<std::string, std::string>{
-                        {"number", "4"},
-                        {"name", "abcd"}};
+                    {"number", "4"},
+                    {"name", "abcd"}};
                 expected.m_path.m_nodes.push_back(listElement_("twoKeyList", keys));
             }
-
         }
 
         SECTION("whitespace handling")
@@ -144,7 +141,7 @@
         {
             SECTION("cd a garbage")
             {
-               input = "cd a garbage";
+                input = "cd a garbage";
             }
             SECTION("cd a/a2 garbage")
             {