Welcome to mirror list, hosted at ThFree Co, Russian Federation.

road_graph_router.hpp « routing - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b7a9f00cd9d19cd8b2340981b69ba47e497bd947 (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#pragma once

#include "routing/directions_engine.hpp"
#include "routing/road_graph.hpp"
#include "routing/router.hpp"
#include "routing/routing_algorithm.hpp"
#include "routing/vehicle_model.hpp"

#include "indexer/mwm_set.hpp"

#include "geometry/point2d.hpp"

#include "std/function.hpp"
#include "std/string.hpp"
#include "std/unique_ptr.hpp"
#include "std/vector.hpp"

class Index;

namespace routing
{

class RoadGraphRouter : public IRouter
{
public:
  RoadGraphRouter(string const & name, Index const & index, TCountryFileFn const & countryFileFn,
                  IRoadGraph::Mode mode, unique_ptr<VehicleModelFactory> && vehicleModelFactory,
                  unique_ptr<IRoutingAlgorithm> && algorithm,
                  unique_ptr<IDirectionsEngine> && directionsEngine);
  ~RoadGraphRouter() override;

  // IRouter overrides:
  string GetName() const override { return m_name; }
  void ClearState() override;
  ResultCode CalculateRoute(m2::PointD const & startPoint, m2::PointD const & startDirection,
                            m2::PointD const & finalPoint, RouterDelegate const & delegate,
                            Route & route) override;

private:
  /// Checks existance and add absent maps to route.
  /// Returns true if map exists
  bool CheckMapExistence(m2::PointD const & point, Route & route) const;

  string const m_name;
  TCountryFileFn const m_countryFileFn;
  Index const & m_index;
  unique_ptr<IRoutingAlgorithm> const m_algorithm;
  unique_ptr<IRoadGraph> const m_roadGraph;
  unique_ptr<IDirectionsEngine> const m_directionsEngine;
};

unique_ptr<IRouter> CreatePedestrianAStarRouter(Index & index, TCountryFileFn const & countryFileFn);
unique_ptr<IRouter> CreatePedestrianAStarBidirectionalRouter(Index & index, TCountryFileFn const & countryFileFn);
unique_ptr<IRouter> CreateBicycleAStarBidirectionalRouter(Index & index, TCountryFileFn const & countryFileFn);
}  // namespace routing