15 for(
auto & root: roots) {
16 const Json::Value & ret = getValue(root, name);
17 std::cout <<
"searched for " << name << std::endl;
18 std::cout <<
"got: " << ret << std::endl;
19 if(ret == Json::Value::null)
23 return Json::Value::null;
26 const Json::Value & ConfigManager::getValue(
const Json::Value & root,
const std::string & name)
const {
27 auto dot = name.find_first_of(
".");
28 if(dot == std::string::npos)
30 return getValue(root[name.substr(0, dot)], name.substr(dot+1));
35 ss << dirname <<
"/capture.json";
42 std::ifstream ifs(filename);
43 if(!reader.parse(ifs, root)) {
44 std::cout <<
"Error parsing " << filename <<
"!" << std::endl;
45 std::cout << reader.getFormattedErrorMessages() << std::endl;
50 roots.push_front(root);
55 ConfigManager::ConfigManager() {
56 std::stringstream captureConfig;
57 captureConfig <<
getHome() <<
"/.macs/capture.json";
58 init({captureConfig.str()});
61 void ConfigManager::init(
const std::list<std::string> & config_files) {
62 for(
auto filename: config_files) {
67 ConfigManager::~ConfigManager() {
void addConfigDir(const std::string &dirname)
void addConfigFile(const std::string &filename)
const Json::Value & operator[](const std::string &value_name) const
static ConfigManager & getInstance()