From cd87725f381198d37d9c4afcf4b7a78447fb644c Mon Sep 17 00:00:00 2001 From: 3lswear Date: Sat, 19 Feb 2022 13:51:20 +0300 Subject: [PATCH] refactor: move out clean_parsed funcs to config:: --- src/Server/Server.cpp | 100 ++-------------------------------- src/config/parse.cpp | 115 ++++++++++++++++++++++++++++++++++++--- src/config/tomlstuff.hpp | 7 +++ 3 files changed, 117 insertions(+), 105 deletions(-) diff --git a/src/Server/Server.cpp b/src/Server/Server.cpp index 2fb3c22..48226d4 100644 --- a/src/Server/Server.cpp +++ b/src/Server/Server.cpp @@ -50,13 +50,15 @@ void Server::readConfig(char *filename) // root->clear(); // delete root; // clean_parsed(root); + config::clean_parsed(parser.root); + // delete parser.root; exit(-1); } catch (config::Tokenizer::InvalidToken &e) { std::cerr << RED << "FATAL: "; std::cerr << e.what() << RESET << std::endl; - // clean_parsed(root); + config::clean_parsed(parser.root); // root->clear(); delete root; exit(-1); @@ -77,7 +79,7 @@ void Server::readConfig(char *filename) ++it; } - clean_parsed(root); + config::clean_parsed(parser.root); } void Server::sendData(Client &client, int fd) @@ -350,100 +352,6 @@ void Server::checkError(int fd, std::string str) DBOUT << GREEN << "Server SUCCESS: " << str << ENDL; } -void Server::clean_generic(toml_node *node) -{ - switch (node->type) - { - case toml_node::STRING: - { - DBOUT << "cleaning string" << ENDL; - delete node->getString(); - } - break; - case toml_node::MAPARRAY: - { - DBOUT << "cleaning MAPARRAY" << ENDL; - TOMLMapArray *map_array = node->getMapArray(); - for (TOMLMapArray::iterator it = map_array->begin(); - it != map_array->end(); ++it) - { - DBOUT << "cleaning a MAP of MAPARRAY" << ENDL; - TOMLMap *map = *it; - TOMLMap::iterator map_it = map->begin(); - for (map_it = map->begin(); - map_it != map->end(); ++map_it) - { - DBOUT << "cleaning a MAP item " << map_it->first << ENDL; - clean_generic(map_it->second); - /* map->erase(map_it); */ - } - map->clear(); - delete map; - } - map_array->clear(); - delete map_array; - DBOUT << "end cleaning MAPARRAY" << ENDL; - } - break; - case toml_node::MAP: - { - DBOUT << "cleaning MAP" << ENDL; - TOMLMap *map = node->getMap(); - for (TOMLMap::iterator it = map->begin(); it != map->end(); ++it) - { - DBOUT << "key is " << it->first << ENDL; - clean_generic(it->second); - /* map->erase(it); */ - } - map->clear(); - delete map; - } - break; - - case toml_node::ARRAY: - { - DBOUT << "cleaning ARRAY" << ENDL; - TOMLArray *arr = node->getArray(); - for (TOMLArray::iterator it = arr->begin(); - it != arr->end(); ++it) - { - clean_generic(*it); - } - arr->clear(); - delete arr; - DBOUT << "end cleaning MAP" << ENDL; - } - break; - - default: - { - DBOUT << "Cleaning type " << node->type << " not implemented :)" << ENDL; - } - } - delete node; - -} - -void Server::clean_parsed(TOMLMap *root) -{ - TOMLMap::iterator it; - - DBOUT << ">>> cleaning up: <<<" << std::endl; - for (it = root->begin(); it != root->end(); ++it) - { - // DBOUT << RED << it->first - // << ": " << GREEN - // << *(it->second->toString()); - - clean_generic(it->second); - /* delete it->second; */ - std::cout << ", " << std::endl; - } - DBOUT << YELLO << "end of clean" << ENDL; - root->clear(); - delete root; - root = NULL; -} Server::~Server() { diff --git a/src/config/parse.cpp b/src/config/parse.cpp index ef86d36..d4b23ea 100644 --- a/src/config/parse.cpp +++ b/src/config/parse.cpp @@ -33,16 +33,113 @@ namespace config << ": " << *(it->second->toString()); std::cout << ", " << std::endl; - /* << std::endl << "-------" << std::endl; */ + /* << std::endl << "-------" << std::endl; */ } } + + void clean_parsed(TOMLMap *root) + { + TOMLMap::iterator it; + + DBOUT << ">>> cleaning up: <<<" << std::endl; + if (!root) + return; + for (it = root->begin(); it != root->end(); ++it) + { + // DBOUT << RED << it->first + // << ": " << GREEN + // << *(it->second->toString()); + + clean_generic(it->second); + /* delete it->second; */ + std::cout << ", " << std::endl; + } + DBOUT << YELLO << "end of clean" << ENDL; + root->clear(); + delete root; + root = NULL; + } + + void clean_generic(toml_node *node) + { + switch (node->type) + { + case toml_node::STRING: + { + DBOUT << "cleaning string" << ENDL; + delete node->getString(); + } + break; + case toml_node::MAPARRAY: + { + DBOUT << "cleaning MAPARRAY" << ENDL; + TOMLMapArray *map_array = node->getMapArray(); + for (TOMLMapArray::iterator it = map_array->begin(); + it != map_array->end(); ++it) + { + DBOUT << "cleaning a MAP of MAPARRAY" << ENDL; + TOMLMap *map = *it; + TOMLMap::iterator map_it = map->begin(); + for (map_it = map->begin(); + map_it != map->end(); ++map_it) + { + DBOUT << "cleaning a MAP item " << map_it->first << ENDL; + config::clean_generic(map_it->second); + /* map->erase(map_it); */ + } + map->clear(); + delete map; + } + map_array->clear(); + delete map_array; + DBOUT << "end cleaning MAPARRAY" << ENDL; + } + break; + case toml_node::MAP: + { + DBOUT << "cleaning MAP" << ENDL; + TOMLMap *map = node->getMap(); + for (TOMLMap::iterator it = map->begin(); it != map->end(); ++it) + { + DBOUT << "key is " << it->first << ENDL; + config::clean_generic(it->second); + /* map->erase(it); */ + } + map->clear(); + delete map; + } + break; + + case toml_node::ARRAY: + { + DBOUT << "cleaning ARRAY" << ENDL; + TOMLArray *arr = node->getArray(); + for (TOMLArray::iterator it = arr->begin(); + it != arr->end(); ++it) + { + config::clean_generic(*it); + } + arr->clear(); + delete arr; + DBOUT << "end cleaning MAP" << ENDL; + } + break; + + default: + { + DBOUT << "Cleaning type " << node->type << " not implemented :)" << ENDL; + } + } + delete node; + + } } -TOMLMap *parse(char *filename) -{ - // std::string fiцename = "config/simple.toml"; - config::TOMLParser parser(filename); - TOMLMap *root = parser.parse(); - /* config::display(root); */ - return (root); -} +// TOMLMap *parse(char *filename) +// { +// // std::string fiцename = "config/simple.toml"; +// // config::TOMLParser parser(filename); +// // parser.parse(); +// // /* config::display(root); */ +// // return (parser.root); +// } diff --git a/src/config/tomlstuff.hpp b/src/config/tomlstuff.hpp index d7c7d11..49e084c 100644 --- a/src/config/tomlstuff.hpp +++ b/src/config/tomlstuff.hpp @@ -7,5 +7,12 @@ typedef std::map TOMLMap; // = JSONObject typedef std::vector TOMLMapArray; typedef std::vector TOMLArray; +namespace config +{ + + void clean_parsed(TOMLMap *root); + void clean_generic(toml_node *node); +} + #endif