2017-05-16 13:22:41 -04:00
|
|
|
#ifndef OSRM_EXTRACT_EDGE_BASED_NODE_SEGMENT_HPP
|
|
|
|
#define OSRM_EXTRACT_EDGE_BASED_NODE_SEGMENT_HPP
|
2014-11-28 06:13:18 -05:00
|
|
|
|
2016-01-02 11:13:44 -05:00
|
|
|
#include "extractor/travel_mode.hpp"
|
|
|
|
#include "util/typedefs.hpp"
|
2013-10-11 10:14:59 -04:00
|
|
|
|
2014-04-24 12:13:50 -04:00
|
|
|
#include <boost/assert.hpp>
|
2014-02-11 05:42:24 -05:00
|
|
|
|
2016-01-02 11:13:44 -05:00
|
|
|
#include "osrm/coordinate.hpp"
|
2014-11-24 11:57:01 -05:00
|
|
|
|
2014-02-11 05:42:24 -05:00
|
|
|
#include <limits>
|
|
|
|
|
2016-01-05 10:51:13 -05:00
|
|
|
namespace osrm
|
|
|
|
{
|
|
|
|
namespace extractor
|
|
|
|
{
|
|
|
|
|
|
|
|
/// This is what util::StaticRTree serialized and stores on disk
|
2015-06-28 16:13:54 -04:00
|
|
|
/// It is generated in EdgeBasedGraphFactory.
|
2017-05-16 13:22:41 -04:00
|
|
|
struct EdgeBasedNodeSegment
|
2014-05-07 12:39:16 -04:00
|
|
|
{
|
2017-05-16 13:22:41 -04:00
|
|
|
EdgeBasedNodeSegment()
|
2020-11-26 10:21:39 -05:00
|
|
|
: forward_segment_id{SPECIAL_SEGMENTID, false}, reverse_segment_id{SPECIAL_SEGMENTID,
|
|
|
|
false},
|
|
|
|
u(SPECIAL_NODEID), v(SPECIAL_NODEID),
|
2018-12-13 19:10:32 -05:00
|
|
|
fwd_segment_position(std::numeric_limits<unsigned short>::max() >>
|
|
|
|
1), // >> 1 because we've only got 15 bits
|
|
|
|
is_startpoint(false)
|
2015-02-10 06:08:17 -05:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-05-16 13:22:41 -04:00
|
|
|
explicit EdgeBasedNodeSegment(const SegmentID forward_segment_id_,
|
|
|
|
const SegmentID reverse_segment_id_,
|
|
|
|
NodeID u,
|
|
|
|
NodeID v,
|
2018-12-13 19:10:32 -05:00
|
|
|
unsigned short fwd_segment_position,
|
|
|
|
bool is_startpoint_)
|
2016-05-27 15:05:04 -04:00
|
|
|
: forward_segment_id(forward_segment_id_), reverse_segment_id(reverse_segment_id_), u(u),
|
2018-12-13 19:10:32 -05:00
|
|
|
v(v), fwd_segment_position(fwd_segment_position), is_startpoint(is_startpoint_)
|
2014-02-27 13:49:53 -05:00
|
|
|
{
|
2016-05-27 15:05:04 -04:00
|
|
|
BOOST_ASSERT(forward_segment_id.enabled || reverse_segment_id.enabled);
|
2014-02-27 13:49:53 -05:00
|
|
|
}
|
|
|
|
|
2017-05-11 03:13:59 -04:00
|
|
|
SegmentID forward_segment_id; // edge-based graph node ID in forward direction (u->v)
|
|
|
|
SegmentID reverse_segment_id; // edge-based graph node ID in reverse direction (v->u if exists)
|
|
|
|
NodeID u; // node-based graph node ID of the start node
|
|
|
|
NodeID v; // node-based graph node ID of the target node
|
2018-12-13 19:10:32 -05:00
|
|
|
unsigned short fwd_segment_position : 15; // segment id in a compressed geometry
|
|
|
|
bool is_startpoint : 1;
|
2013-10-11 10:14:59 -04:00
|
|
|
};
|
2020-11-26 10:21:39 -05:00
|
|
|
} // namespace extractor
|
|
|
|
} // namespace osrm
|
2016-01-05 10:51:13 -05:00
|
|
|
|
2017-05-16 13:22:41 -04:00
|
|
|
#endif // OSRM_EXTRACT_EDGE_BASED_NODE_SEGMENT_HPP
|