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

Method CreateStreetsLayerAndMatchLowerLayers

libs/search/geocoder.cpp:1330–1360  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1328}
1329
1330void Geocoder::CreateStreetsLayerAndMatchLowerLayers(BaseContext & ctx, StreetsMatcher::Prediction const & prediction,
1331 CentersFilter const & centers, bool makeRelaxed)
1332{
1333 auto & layers = ctx.m_layers;
1334
1335 layers.emplace_back();
1336 SCOPE_GUARD(cleanupGuard, [&] { layers.pop_back(); });
1337
1338 auto & layer = layers.back();
1339 InitLayer(Model::TYPE_STREET, prediction.m_tokenRange, layer);
1340
1341 vector<uint32_t> sortedFeatures;
1342 layer.m_sortedFeatures = &sortedFeatures;
1343 sortedFeatures.reserve(base::asserted_cast<size_t>(prediction.m_features.PopCount()));
1344 prediction.m_features.ForEach([&](uint64_t bit) { sortedFeatures.push_back(base::asserted_cast<uint32_t>(bit)); });
1345
1346 centers.ClusterizeStreets(sortedFeatures, *this, [&]()
1347 {
1348 ScopedMarkTokens mark(ctx.m_tokens, BaseContext::TOKEN_TYPE_STREET, prediction.m_tokenRange);
1349 size_t const numEmitted = ctx.m_numEmitted;
1350
1351 MatchPOIsAndBuildings(ctx, 0 /* curToken */, CBV::GetFull());
1352
1353 // A relaxed best effort parse: at least show the street if we can find one.
1354 if (makeRelaxed && numEmitted == ctx.m_numEmitted && !ctx.AllTokensUsed())
1355 {
1356 TRACE(Relaxed);
1357 FindPaths(ctx);
1358 }
1359 });
1360}
1361
1362void Geocoder::MatchPOIsAndBuildings(BaseContext & ctx, size_t curToken, CBV const & filter)
1363{

Callers

nothing calls this directly

Calls 9

backMethod · 0.80
ClusterizeStreetsMethod · 0.80
AllTokensUsedMethod · 0.80
emplace_backMethod · 0.45
pop_backMethod · 0.45
reserveMethod · 0.45
PopCountMethod · 0.45
ForEachMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected