2017-01-13 02:32:17 -05:00
|
|
|
#ifndef OSRM_CONTRACTOR_CONTRACTOR_GRAPH_HPP_
|
|
|
|
#define OSRM_CONTRACTOR_CONTRACTOR_GRAPH_HPP_
|
|
|
|
|
|
|
|
#include "util/dynamic_graph.hpp"
|
|
|
|
#include <algorithm>
|
|
|
|
|
2022-12-11 04:10:26 -05:00
|
|
|
namespace osrm::contractor
|
2017-01-13 02:32:17 -05:00
|
|
|
{
|
|
|
|
|
|
|
|
struct ContractorEdgeData
|
|
|
|
{
|
|
|
|
ContractorEdgeData()
|
2022-10-28 10:16:12 -04:00
|
|
|
: weight{0}, duration{0}, distance{0}, id(0), originalEdges(0), shortcut(0), forward(0),
|
2018-10-30 00:47:49 -04:00
|
|
|
backward(0)
|
2017-01-13 02:32:17 -05:00
|
|
|
{
|
|
|
|
}
|
2016-05-12 12:50:10 -04:00
|
|
|
ContractorEdgeData(EdgeWeight weight,
|
2022-10-28 10:16:12 -04:00
|
|
|
EdgeDuration duration,
|
2018-10-30 00:47:49 -04:00
|
|
|
EdgeDistance distance,
|
2017-01-13 02:32:17 -05:00
|
|
|
unsigned original_edges,
|
|
|
|
unsigned id,
|
|
|
|
bool shortcut,
|
|
|
|
bool forward,
|
|
|
|
bool backward)
|
2018-10-30 00:47:49 -04:00
|
|
|
: weight(weight), duration(duration), distance(distance), id(id),
|
2017-08-19 06:37:24 -04:00
|
|
|
originalEdges(std::min((1u << 29) - 1u, original_edges)), shortcut(shortcut),
|
|
|
|
forward(forward), backward(backward)
|
2017-01-13 02:32:17 -05:00
|
|
|
{
|
|
|
|
}
|
2016-05-12 12:50:10 -04:00
|
|
|
EdgeWeight weight;
|
2022-10-28 10:16:12 -04:00
|
|
|
EdgeDuration duration;
|
2018-10-30 00:47:49 -04:00
|
|
|
EdgeDistance distance;
|
2017-01-13 02:32:17 -05:00
|
|
|
unsigned id;
|
2017-08-19 06:37:24 -04:00
|
|
|
unsigned originalEdges : 29;
|
2017-01-13 02:32:17 -05:00
|
|
|
bool shortcut : 1;
|
|
|
|
bool forward : 1;
|
|
|
|
bool backward : 1;
|
|
|
|
};
|
|
|
|
|
|
|
|
using ContractorGraph = util::DynamicGraph<ContractorEdgeData>;
|
|
|
|
using ContractorEdge = ContractorGraph::InputEdge;
|
|
|
|
|
|
|
|
} // namespace osrm
|
|
|
|
|
|
|
|
#endif // OSRM_CONTRACTOR_CONTRACTOR_GRAPH_HPP_
|