/*********************************************************************** * Method: DistanceDistributionAnalysis::deserialiseAdditional * Params: const picojson::value &v * Returns: bool * Effects: ***********************************************************************/ bool DistanceDistributionAnalysis::deserialiseAdditional(const picojson::value &v) { picojson::object vd; if (!jat(vd, v, "distances")) return false; float provisionalMaxDistance; if (!jat(provisionalMaxDistance, v, "max_distance")) return false; std::map<int, std::list<float>> provisionalDistances; for (const auto& indexDists : vd) { int provisionalIndex = std::stoi(indexDists.first); if (provisionalDistances.find(provisionalIndex) != provisionalDistances.end()) return false; picojson::array va; if (!jget(va, indexDists.second)) return false; for (const auto& vf : va) { float dist; if (!jget(dist, vf)) return false; provisionalDistances[provisionalIndex].push_back(dist); } } mMaxDistance = provisionalMaxDistance; distances = provisionalDistances; return true; }
int _stdcall JGetB(J jt, C* name, VARIANT* v) { return jget(jt, name, v, 1); // do bstrs }
int _stdcall JGet(J jt, C* name, VARIANT* v) { return jget(jt, name, v, 0); // no bstrs }