std::string SettingRegistry::toString(const rapidjson::Value& dflt, std::string setting_name) { if (dflt.IsString()) { return dflt.GetString(); } else if (dflt.IsTrue()) { return "true"; } else if (dflt.IsFalse()) { return "false"; } else if (dflt.IsNumber()) { std::ostringstream ss; ss << dflt.GetDouble(); return ss.str(); } else if (dflt.IsArray()) { std::stringstream ss; ss << "["; bool first = true; for (auto it = dflt.Begin(); it != dflt.End(); ++it) { if (!first) { ss << ","; } ss << toString(*it); first = false; } ss << "]"; return ss.str(); } else { logError("Unrecognized data type in JSON: %s has type %s\n", setting_name.c_str(), toString(dflt.GetType()).c_str()); return ""; } }