MCPcopy Create free account
hub / github.com/comaps/comaps / LoadGroupImpl

Function LoadGroupImpl

libs/storage/country_tree.cpp:325–383  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

323}
324
325MwmSubtreeAttrs LoadGroupImpl(size_t depth, json_t * node, CountryId const & parent, StoreInterface & store)
326{
327 CountryId id;
328 FromJSONObject(node, "id", id);
329
330 vector<string> countryNameSynonyms;
331 FromJSONObjectOptionalField(node, "country_name_synonyms", countryNameSynonyms);
332 for (auto const & synonym : countryNameSynonyms)
333 store.InsertCountryNameSynonym(id, synonym);
334
335 vector<string> affiliations;
336 FromJSONObjectOptionalField(node, "affiliations", affiliations);
337 for (auto const & affilationValue : affiliations)
338 store.InsertAffiliation(id, affilationValue);
339
340 uint64_t geoObjectId = 0;
341 FromJSONObjectOptionalField(node, "top_city_geo_id", geoObjectId);
342 if (geoObjectId != 0)
343 store.InsertMwmTopCityGeoId(id, geoObjectId);
344
345 vector<uint64_t> topCountryIds;
346 FromJSONObjectOptionalField(node, "top_countries_geo_ids", topCountryIds);
347 if (!topCountryIds.empty())
348 store.InsertTopCountryGeoIds(id, topCountryIds);
349
350 int nodeSize;
351 FromJSONObjectOptionalField(node, "s", nodeSize);
352 ASSERT_LESS_OR_EQUAL(0, nodeSize, ());
353
354 string nodeHash;
355 FromJSONObjectOptionalField(node, "sha1_base64", nodeHash);
356
357 // We expect that mwm and routing files should be less than 2GB.
358 Country * addedNode = store.InsertToCountryTree(id, nodeSize, nodeHash, depth, parent);
359
360 MwmCounter mwmCounter = 0;
361 MwmSize mwmSize = 0;
362 vector<json_t *> children;
363 FromJSONObjectOptionalField(node, "g", children);
364 if (children.empty())
365 {
366 mwmCounter = 1; // It's a leaf. Any leaf contains one mwm.
367 mwmSize = nodeSize;
368 }
369 else
370 {
371 for (json_t * child : children)
372 {
373 MwmSubtreeAttrs const childAttr = LoadGroupImpl(depth + 1, child, id, store);
374 mwmCounter += childAttr.first;
375 mwmSize += childAttr.second;
376 }
377 }
378
379 if (addedNode != nullptr)
380 addedNode->SetSubtreeAttrs(mwmCounter, mwmSize);
381
382 return make_pair(mwmCounter, mwmSize);

Callers 1

LoadCountriesImplFunction · 0.85

Calls 9

SetSubtreeAttrsMethod · 0.80
FromJSONObjectFunction · 0.50
InsertAffiliationMethod · 0.45
InsertMwmTopCityGeoIdMethod · 0.45
emptyMethod · 0.45
InsertToCountryTreeMethod · 0.45

Tested by

no test coverage detected