osrm-backend/include/engine/datafacade/datafacade_base.hpp

179 lines
7.2 KiB
C++
Raw Normal View History

#ifndef DATAFACADE_BASE_HPP
#define DATAFACADE_BASE_HPP
// Exposes all data access interfaces to the algorithms via base class ptr
2016-01-28 10:28:44 -05:00
#include "contractor/query_edge.hpp"
#include "extractor/edge_based_node_segment.hpp"
#include "extractor/external_memory_node.hpp"
2016-03-01 16:30:31 -05:00
#include "extractor/guidance/turn_instruction.hpp"
#include "extractor/guidance/turn_lane_types.hpp"
#include "extractor/original_edge_data.hpp"
2016-05-27 15:05:04 -04:00
#include "engine/phantom_node.hpp"
2016-01-28 08:27:05 -05:00
#include "util/exception.hpp"
#include "util/guidance/bearing_class.hpp"
#include "util/guidance/entry_class.hpp"
#include "util/guidance/turn_bearing.hpp"
#include "util/guidance/turn_lanes.hpp"
#include "util/integer_range.hpp"
2016-01-02 11:13:44 -05:00
#include "util/string_util.hpp"
#include "util/string_view.hpp"
2016-01-02 11:13:44 -05:00
#include "util/typedefs.hpp"
#include "osrm/coordinate.hpp"
2016-02-05 08:58:06 -05:00
#include <cstddef>
#include <string>
#include <utility>
#include <vector>
2016-01-05 10:51:13 -05:00
namespace osrm
{
namespace engine
{
namespace datafacade
{
using StringView = util::StringView;
2016-01-28 10:28:44 -05:00
class BaseDataFacade
{
public:
using RTreeLeaf = extractor::EdgeBasedNodeSegment;
BaseDataFacade() {}
virtual ~BaseDataFacade() {}
virtual unsigned GetCheckSum() const = 0;
// node and edge information access
virtual util::Coordinate GetCoordinateOfNode(const NodeID id) const = 0;
virtual OSMNodeID GetOSMNodeIDOfNode(const NodeID id) const = 0;
virtual GeometryID GetGeometryIndex(const NodeID id) const = 0;
virtual ComponentID GetComponentID(const NodeID id) const = 0;
virtual std::vector<NodeID> GetUncompressedForwardGeometry(const EdgeID id) const = 0;
virtual std::vector<NodeID> GetUncompressedReverseGeometry(const EdgeID id) const = 0;
virtual TurnPenalty GetWeightPenaltyForEdgeID(const unsigned id) const = 0;
virtual TurnPenalty GetDurationPenaltyForEdgeID(const unsigned id) const = 0;
// Gets the weight values for each segment in an uncompressed geometry.
// Should always be 1 shorter than GetUncompressedGeometry
virtual std::vector<EdgeWeight> GetUncompressedForwardWeights(const EdgeID id) const = 0;
virtual std::vector<EdgeWeight> GetUncompressedReverseWeights(const EdgeID id) const = 0;
// Gets the duration values for each segment in an uncompressed geometry.
// Should always be 1 shorter than GetUncompressedGeometry
virtual std::vector<EdgeWeight> GetUncompressedForwardDurations(const EdgeID id) const = 0;
virtual std::vector<EdgeWeight> GetUncompressedReverseDurations(const EdgeID id) const = 0;
// Returns the data source ids that were used to supply the edge
// weights. Will return an empty array when only the base profile is used.
virtual std::vector<DatasourceID> GetUncompressedForwardDatasources(const EdgeID id) const = 0;
virtual std::vector<DatasourceID> GetUncompressedReverseDatasources(const EdgeID id) const = 0;
// Gets the name of a datasource
virtual StringView GetDatasourceName(const DatasourceID id) const = 0;
2016-03-03 09:36:03 -05:00
virtual extractor::guidance::TurnInstruction
GetTurnInstructionForEdgeID(const EdgeID id) const = 0;
virtual extractor::TravelMode GetTravelMode(const NodeID id) const = 0;
virtual std::vector<RTreeLeaf> GetEdgesInBox(const util::Coordinate south_west,
2016-05-06 20:56:08 -04:00
const util::Coordinate north_east) const = 0;
2015-12-09 16:34:22 -05:00
virtual std::vector<PhantomNodeWithDistance>
NearestPhantomNodesInRange(const util::Coordinate input_coordinate,
const float max_distance,
const int bearing,
2016-05-06 20:56:08 -04:00
const int bearing_range) const = 0;
virtual std::vector<PhantomNodeWithDistance>
NearestPhantomNodesInRange(const util::Coordinate input_coordinate,
2016-05-06 20:56:08 -04:00
const float max_distance) const = 0;
2015-12-09 16:34:22 -05:00
virtual std::vector<PhantomNodeWithDistance>
NearestPhantomNodes(const util::Coordinate input_coordinate,
const unsigned max_results,
2016-02-22 18:44:35 -05:00
const double max_distance,
const int bearing,
2016-05-06 20:56:08 -04:00
const int bearing_range) const = 0;
2016-02-22 18:44:35 -05:00
virtual std::vector<PhantomNodeWithDistance>
NearestPhantomNodes(const util::Coordinate input_coordinate,
2016-02-22 18:44:35 -05:00
const unsigned max_results,
const int bearing,
2016-05-06 20:56:08 -04:00
const int bearing_range) const = 0;
2016-02-22 18:44:35 -05:00
virtual std::vector<PhantomNodeWithDistance>
2016-05-27 15:05:04 -04:00
NearestPhantomNodes(const util::Coordinate input_coordinate,
const unsigned max_results) const = 0;
2016-02-22 18:44:35 -05:00
virtual std::vector<PhantomNodeWithDistance>
NearestPhantomNodes(const util::Coordinate input_coordinate,
const unsigned max_results,
2016-05-06 20:56:08 -04:00
const double max_distance) const = 0;
2016-05-27 15:05:04 -04:00
virtual std::pair<PhantomNode, PhantomNode> NearestPhantomNodeWithAlternativeFromBigComponent(
const util::Coordinate input_coordinate) const = 0;
virtual std::pair<PhantomNode, PhantomNode>
NearestPhantomNodeWithAlternativeFromBigComponent(const util::Coordinate input_coordinate,
2016-05-06 20:56:08 -04:00
const double max_distance) const = 0;
virtual std::pair<PhantomNode, PhantomNode>
NearestPhantomNodeWithAlternativeFromBigComponent(const util::Coordinate input_coordinate,
const double max_distance,
const int bearing,
2016-05-06 20:56:08 -04:00
const int bearing_range) const = 0;
2016-05-27 15:05:04 -04:00
virtual std::pair<PhantomNode, PhantomNode>
NearestPhantomNodeWithAlternativeFromBigComponent(const util::Coordinate input_coordinate,
const int bearing,
const int bearing_range) const = 0;
2014-09-23 12:46:14 -04:00
2017-04-01 21:00:03 -04:00
virtual bool HasLaneData(const EdgeID id) const = 0;
virtual util::guidance::LaneTupleIdPair GetLaneData(const EdgeID id) const = 0;
virtual extractor::guidance::TurnLaneDescription
GetTurnDescription(const LaneDescriptionID lane_description_id) const = 0;
2016-06-15 08:38:24 -04:00
virtual NameID GetNameIndex(const NodeID id) const = 0;
virtual StringView GetNameForID(const NameID id) const = 0;
virtual StringView GetRefForID(const NameID id) const = 0;
2016-09-05 09:01:51 -04:00
virtual StringView GetPronunciationForID(const NameID id) const = 0;
virtual StringView GetDestinationsForID(const NameID id) const = 0;
2016-05-26 18:47:46 -04:00
virtual std::string GetTimestamp() const = 0;
2016-04-12 12:47:00 -04:00
virtual bool GetContinueStraightDefault() const = 0;
virtual double GetMapMatchingMaxSpeed() const = 0;
virtual const char *GetWeightName() const = 0;
virtual unsigned GetWeightPrecision() const = 0;
virtual double GetWeightMultiplier() const = 0;
virtual BearingClassID GetBearingClassID(const NodeID id) const = 0;
virtual util::guidance::TurnBearing PreTurnBearing(const EdgeID eid) const = 0;
virtual util::guidance::TurnBearing PostTurnBearing(const EdgeID eid) const = 0;
virtual util::guidance::BearingClass
GetBearingClass(const BearingClassID bearing_class_id) const = 0;
virtual EntryClassID GetEntryClassID(const EdgeID eid) const = 0;
virtual util::guidance::EntryClass GetEntryClass(const EntryClassID entry_class_id) const = 0;
};
2016-01-05 10:51:13 -05:00
}
}
}
#endif // DATAFACADE_BASE_HPP