blob: acc1a9d8e8ffe52830b356117512ad9ab903aa8b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "routing/road_index.hpp"
#include "base/exception.hpp"
#include "std/utility.hpp"
namespace routing
{
void RoadIndex::Import(vector<Joint> const & joints)
{
for (Joint::Id jointId = 0; jointId < joints.size(); ++jointId)
{
Joint const & joint = joints[jointId];
for (uint32_t i = 0; i < joint.GetSize(); ++i)
{
RoadPoint const & entry = joint.GetEntry(i);
RoadJointIds & roadJoints = m_roads[entry.GetFeatureId()];
roadJoints.AddJoint(entry.GetPointId(), jointId);
}
}
}
pair<Joint::Id, uint32_t> RoadIndex::FindNeighbor(RoadPoint rp, bool forward) const
{
auto const it = m_roads.find(rp.GetFeatureId());
if (it == m_roads.cend())
MYTHROW(RootException, ("RoadIndex doesn't contains feature", rp.GetFeatureId()));
return it->second.FindNeighbor(rp.GetPointId(), forward);
}
} // namespace routing
|