SettingWrapper::SettingWrapper(const libconfig::Setting & s, const libconfig::Setting & root, const boost::shared_ptr<SettingUsageRecorder> & recorder): rootsetting(root), rec(recorder), setting(resolve_link(s, rootsetting, rec)), setting_name("<noname>"){ const char * name = s.getName(); if(name) setting_name = name; }
void Configuration::ConfigFile::showSetting(libconfig::Setting &s, std::string prefix) { unsigned int children = s.getLength(); Setting::Type t = s.getType(); switch(t) { case Setting::TypeGroup: debugOutput(DEBUG_LEVEL_NORMAL, " %sGroup: %s\n", prefix.c_str(), s.getName()); for(unsigned int i = 0; i < children; i++) { showSetting(s[i], prefix + " "); } break; case Setting::TypeList: debugOutput(DEBUG_LEVEL_NORMAL, " %sList: %s\n", prefix.c_str(), s.getName()); for(unsigned int i = 0; i < children; i++) { showSetting(s[i], prefix + " "); } break; case Setting::TypeArray: debugOutput(DEBUG_LEVEL_NORMAL, " %sArray: %s\n", prefix.c_str(), s.getName()); for(unsigned int i = 0; i < children; i++) { showSetting(s[i], prefix + " "); } break; case Setting::TypeInt: { int32_t i = s; debugOutput(DEBUG_LEVEL_NORMAL, " %s%s = %d (0x%08X)\n", prefix.c_str(), s.getName(), i, i); } break; case Setting::TypeInt64: { int64_t i = s; debugOutput(DEBUG_LEVEL_NORMAL, " %s%s = %"PRId64" (0x%016"PRIX64")\n", prefix.c_str(), s.getName(), i, i); } break; case Setting::TypeFloat: { float f = s; debugOutput(DEBUG_LEVEL_NORMAL, " %s%s = %f\n", prefix.c_str(), s.getName(), f); } break; case Setting::TypeString: { std::string str = s; debugOutput(DEBUG_LEVEL_NORMAL, " %s%s = %s\n", prefix.c_str(), s.getName(), str.c_str()); } break; case Setting::TypeBoolean: { bool b = s; std::string str = (b?"true":"false"); debugOutput(DEBUG_LEVEL_NORMAL, " %s%s = %s\n", prefix.c_str(), s.getName(), str.c_str()); } break; default: { debugOutput(DEBUG_LEVEL_NORMAL, " %s%s = Unsupported Type\n", prefix.c_str(), s.getName()); } break; } }