21#ifndef CONFIGPARSER_HPP
22#define CONFIGPARSER_HPP
30typedef std::map<std::string, std::vector<std::string>> configList;
37 bool hasConfig(std::string section, std::string name)
const {
38 return mConfigurations.find(section +
" - " + name) != mConfigurations.end();
41 T aConfig(std::string section, std::string name,
size_t pos = 0);
43 std::vector<T> aConfigVec(std::string section, std::string name);
47 static void handleMissingKey (std::string);
48 configList mConfigurations;
53bool ConfigParser::aConfig<bool>(std::string section, std::string name,
size_t pos);
56T ConfigParser::aConfig(std::string section, std::string configName,
size_t pos) {
60 const auto& mConfigRef = mConfigurations;
61 auto search = mConfigRef.find(section +
" - " + configName);
63 if (search == mConfigRef.end()) {
64 handleMissingKey (std::string(
"Could not find required configuration section ") + section + std::string(
" key ") + configName);
67 std::istringstream iss(search->second[0]);
69 if (search->second[0].find(
"0x" ) != std::string::npos)
70 iss >> std::hex >> tmp;
72 iss >> std::dec >> tmp;
78std::vector<bool> ConfigParser::aConfigVec<bool>(std::string section, std::string name);
81std::vector<T> ConfigParser::aConfigVec(std::string section, std::string configName) {
84 const auto& mConfigRef = mConfigurations;
85 auto search = mConfigRef.find(section +
" - " + configName);
87 if (search == mConfigRef.end()) {
88 handleMissingKey (std::string(
"Could not find required configuration section ") + section + std::string(
" key ") + configName);
92 std::vector<T> tmp(search->second.size());
93 for (
unsigned i = 0; i < search->second.size(); i++) {
95 std::istringstream iss(search->second[i]);
97 if (search->second[i].find(
"0x" ) != std::string::npos)
98 iss >> std::hex >> tmp[i];
100 iss >> std::dec >> tmp[i];
ConfigParser(std::ifstream &configFile)
Definition configparser.cpp:46