From 73d9dd8feb9886b0e0ced1041f35d98cdcd4510b Mon Sep 17 00:00:00 2001 From: 3lswear Date: Wed, 19 Jan 2022 09:32:10 +0300 Subject: [PATCH] intermediate commit --- src/config/TOMLParser.hpp | 53 ++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/src/config/TOMLParser.hpp b/src/config/TOMLParser.hpp index e46033a..181a2b1 100644 --- a/src/config/TOMLParser.hpp +++ b/src/config/TOMLParser.hpp @@ -265,20 +265,55 @@ namespace config throw std::logic_error("unexpected token in parseMapArray"); TOMLMap::iterator it; + std::cout << current.value << std::endl; std::string name = current.value; + std::vector full_name; + size_t dot; - it = root->find(name); - if (it == root->end()) + while (1) { - maparr_node = new toml_node; - TOMLMapArray *map_array = new TOMLMapArray; - map_array->push_back(map_node->getMap()); - maparr_node->setMapArray(map_array); - (*root)[name] = maparr_node; + dot = name.find('.'); + if (dot == std::string::npos) + break; + /* std::cout << dot << std::endl; */ + full_name.push_back(name.substr(0, dot)); + name.erase(0, dot + 1); } - else + full_name.push_back(name); + + /* for (size_t i = 0; i < full_name.size(); i++) */ + /* std::cout << full_name[i] << std::endl; */ + + /* throw std::logic_error("tha end"); */ + TOMLMap *local_root; + + std::vector::iterator subname = full_name.begin(); + local_root = root; + while (1) { - (it->second)->getMapArray()->push_back(map_node->getMap()); + if (subname + 1 == full_name.end()) + { + it = local_root->find(*subname); + if (it == local_root->end()) + { + maparr_node = new toml_node; + TOMLMapArray *map_array = new TOMLMapArray; + map_array->push_back(map_node->getMap()); + maparr_node->setMapArray(map_array); + (*local_root)[name] = maparr_node; + } + else + (it->second)->getMapArray()->push_back(map_node->getMap()); + break; + } + else + { + map + TOMLMap *new_map = new TOMLMap; + + + } + ++subname; } }