osrm-backend/include/extractor/edge_based_node.hpp

71 lines
2.5 KiB
C++
Raw Normal View History

#ifndef EDGE_BASED_NODE_HPP
#define EDGE_BASED_NODE_HPP
2016-01-02 11:13:44 -05:00
#include "extractor/travel_mode.hpp"
#include "util/typedefs.hpp"
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
/// It is generated in EdgeBasedGraphFactory.
2014-05-07 12:39:16 -04:00
struct EdgeBasedNode
{
EdgeBasedNode()
: forward_segment_id{SPECIAL_SEGMENTID, false},
2016-05-27 15:05:04 -04:00
reverse_segment_id{SPECIAL_SEGMENTID, false}, u(SPECIAL_NODEID), v(SPECIAL_NODEID),
name_id(0), packed_geometry_id(SPECIAL_GEOMETRYID), component{INVALID_COMPONENTID, false},
2016-01-05 06:04:04 -05:00
fwd_segment_position(std::numeric_limits<unsigned short>::max()),
forward_travel_mode(TRAVEL_MODE_INACCESSIBLE),
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
{
}
explicit EdgeBasedNode(const SegmentID forward_segment_id_,
const SegmentID reverse_segment_id_,
NodeID u,
NodeID v,
unsigned name_id,
unsigned packed_geometry_id_,
bool is_tiny_component,
unsigned component_id,
unsigned short fwd_segment_position,
TravelMode forward_travel_mode,
TravelMode backward_travel_mode)
2016-05-27 15:05:04 -04:00
: forward_segment_id(forward_segment_id_), reverse_segment_id(reverse_segment_id_), u(u),
v(v), name_id(name_id), packed_geometry_id(packed_geometry_id_),
component{component_id, is_tiny_component}, fwd_segment_position(fwd_segment_position),
forward_travel_mode(forward_travel_mode), backward_travel_mode(backward_travel_mode)
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
}
SegmentID forward_segment_id; // needed for edge-expanded graph
SegmentID reverse_segment_id; // needed for edge-expanded graph
NodeID u; // indices into the coordinates array
NodeID v; // indices into the coordinates array
unsigned name_id; // id of the edge name
unsigned packed_geometry_id;
2016-01-05 06:04:04 -05:00
struct
{
unsigned id : 31;
2015-11-20 14:34:10 -05:00
bool is_tiny : 1;
} component;
2014-04-24 12:13:50 -04:00
unsigned short fwd_segment_position; // segment id in a compressed geometry
2014-08-18 09:38:07 -04:00
TravelMode forward_travel_mode : 4;
2014-08-11 08:07:00 -04:00
TravelMode backward_travel_mode : 4;
};
2016-01-05 10:51:13 -05:00
}
}
#endif // EDGE_BASED_NODE_HPP