Mercurial > hg > piper-cpp
changeset 221:9aca3267809c
Various fixes to JSON writing for static output data
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Fri, 09 Jun 2017 13:06:11 +0100 |
parents | 02de5df3a884 |
children | e0e3d9efa774 |
files | vamp-json/VampJson.h |
diffstat | 1 files changed, 34 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/vamp-json/VampJson.h Thu Jun 08 16:17:03 2017 +0100 +++ b/vamp-json/VampJson.h Fri Jun 09 13:06:11 2017 +0100 @@ -603,11 +603,33 @@ json11::Json::object statinfo; auto souts = d.staticOutputInfo; - for (auto &s: souts) jo[s.first] = fromStaticOutputDescriptor(s.second); + for (auto &s: souts) { + statinfo[s.first] = fromStaticOutputDescriptor(s.second); + } + jo["staticOutputInfo"] = statinfo; return json11::Json(jo); } + static StaticOutputInfo + toStaticOutputInfo(json11::Json j, std::string &err) { + + if (j == json11::Json()) return {}; + + if (!j.is_object()) { + err = "object expected for static output info"; + return {}; + } + + StaticOutputInfo sinfo; + auto items = j.object_items(); + for (auto i: items) { + sinfo[i.first] = toStaticOutputDescriptor(i.second, err); + if (failed(err)) return {}; + } + return sinfo; + } + static PluginStaticData toPluginStaticData(json11::Json j, std::string &err) { @@ -658,6 +680,11 @@ err = "array expected for basicOutputInfo"; + } else if (!j["staticOutputInfo"].is_null() && + !j["staticOutputInfo"].is_object()) { + + err = "object expected for staticOutputInfo"; + } else { PluginStaticData psd; @@ -705,7 +732,12 @@ if (failed(err)) return {}; psd.basicOutputInfo.push_back(b); } - + + StaticOutputInfo sinfo = + toStaticOutputInfo(j["staticOutputInfo"], err); + if (failed(err)) return {}; + psd.staticOutputInfo = sinfo; + return psd; }