fix signed/unsigned comparisons and casts

This commit is contained in:
Dennis Luxen 2015-02-10 12:08:17 +01:00
parent 1ff8b62bf5
commit 00e8caa0e3

View File

@ -1,6 +1,6 @@
/* /*
Copyright (c) 2014, Project OSRM, Dennis Luxen, others Copyright (c) 2015, Project OSRM, Dennis Luxen, others
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
@ -39,86 +39,66 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
struct EdgeBasedNode struct EdgeBasedNode
{ {
EdgeBasedNode() : EdgeBasedNode()
forward_edge_based_node_id(SPECIAL_NODEID), : forward_edge_based_node_id(SPECIAL_NODEID), reverse_edge_based_node_id(SPECIAL_NODEID),
reverse_edge_based_node_id(SPECIAL_NODEID), u(SPECIAL_NODEID), v(SPECIAL_NODEID), name_id(0),
u(SPECIAL_NODEID), forward_weight(INVALID_EDGE_WEIGHT >> 1), reverse_weight(INVALID_EDGE_WEIGHT >> 1),
v(SPECIAL_NODEID), forward_offset(0), reverse_offset(0), packed_geometry_id(SPECIAL_EDGEID),
name_id(0), component_id(-1), fwd_segment_position(std::numeric_limits<unsigned short>::max()),
forward_weight(INVALID_EDGE_WEIGHT >> 1), forward_travel_mode(TRAVEL_MODE_INACCESSIBLE),
reverse_weight(INVALID_EDGE_WEIGHT >> 1), backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
forward_offset(0), {
reverse_offset(0), }
packed_geometry_id(SPECIAL_EDGEID),
component_id(-1),
fwd_segment_position( std::numeric_limits<unsigned short>::max() ),
forward_travel_mode(TRAVEL_MODE_INACCESSIBLE),
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
{ }
explicit EdgeBasedNode( explicit EdgeBasedNode(NodeID forward_edge_based_node_id,
NodeID forward_edge_based_node_id, NodeID reverse_edge_based_node_id,
NodeID reverse_edge_based_node_id, NodeID u,
NodeID u, NodeID v,
NodeID v, unsigned name_id,
unsigned name_id, int forward_weight,
int forward_weight, int reverse_weight,
int reverse_weight, int forward_offset,
int forward_offset, int reverse_offset,
int reverse_offset, unsigned packed_geometry_id,
unsigned packed_geometry_id, unsigned component_id,
unsigned component_id, unsigned short fwd_segment_position,
unsigned short fwd_segment_position, TravelMode forward_travel_mode,
TravelMode forward_travel_mode, TravelMode backward_travel_mode)
TravelMode backward_travel_mode : forward_edge_based_node_id(forward_edge_based_node_id),
) : reverse_edge_based_node_id(reverse_edge_based_node_id), u(u), v(v), name_id(name_id),
forward_edge_based_node_id(forward_edge_based_node_id), forward_weight(forward_weight), reverse_weight(reverse_weight),
reverse_edge_based_node_id(reverse_edge_based_node_id), forward_offset(forward_offset), reverse_offset(reverse_offset),
u(u), packed_geometry_id(packed_geometry_id), component_id(component_id),
v(v), fwd_segment_position(fwd_segment_position), forward_travel_mode(forward_travel_mode),
name_id(name_id), backward_travel_mode(backward_travel_mode)
forward_weight(forward_weight),
reverse_weight(reverse_weight),
forward_offset(forward_offset),
reverse_offset(reverse_offset),
packed_geometry_id(packed_geometry_id),
component_id(component_id),
fwd_segment_position(fwd_segment_position),
forward_travel_mode(forward_travel_mode),
backward_travel_mode(backward_travel_mode)
{ {
BOOST_ASSERT((forward_edge_based_node_id != SPECIAL_NODEID) || BOOST_ASSERT((forward_edge_based_node_id != SPECIAL_NODEID) ||
(reverse_edge_based_node_id != SPECIAL_NODEID)); (reverse_edge_based_node_id != SPECIAL_NODEID));
} }
static inline FixedPointCoordinate Centroid(const FixedPointCoordinate & a, const FixedPointCoordinate & b) static inline FixedPointCoordinate Centroid(const FixedPointCoordinate &a,
const FixedPointCoordinate &b)
{ {
FixedPointCoordinate centroid; FixedPointCoordinate centroid;
//The coordinates of the midpoint are given by: // The coordinates of the midpoint are given by:
centroid.lat = (a.lat + b.lat)/2; centroid.lat = (a.lat + b.lat) / 2;
centroid.lon = (a.lon + b.lon)/2; centroid.lon = (a.lon + b.lon) / 2;
return centroid; return centroid;
} }
bool IsCompressed() const bool IsCompressed() const { return packed_geometry_id != SPECIAL_EDGEID; }
{
return packed_geometry_id != SPECIAL_EDGEID;
}
bool is_in_tiny_cc() const bool is_in_tiny_cc() const { return 0 != component_id; }
{
return 0 != component_id;
}
NodeID forward_edge_based_node_id; // needed for edge-expanded graph NodeID forward_edge_based_node_id; // needed for edge-expanded graph
NodeID reverse_edge_based_node_id; // needed for edge-expanded graph NodeID reverse_edge_based_node_id; // needed for edge-expanded graph
NodeID u; // indices into the coordinates array NodeID u; // indices into the coordinates array
NodeID v; // indices into the coordinates array NodeID v; // indices into the coordinates array
unsigned name_id; // id of the edge name unsigned name_id; // id of the edge name
int forward_weight; // weight of the edge int forward_weight; // weight of the edge
int reverse_weight; // weight in the other direction (may be different) int reverse_weight; // weight in the other direction (may be different)
int forward_offset; // prefix sum of the weight up the edge TODO: short must suffice int forward_offset; // prefix sum of the weight up the edge TODO: short must suffice
int reverse_offset; // prefix sum of the weight from the edge TODO: short must suffice int reverse_offset; // prefix sum of the weight from the edge TODO: short must suffice
unsigned packed_geometry_id; // if set, then the edge represents a packed geometry unsigned packed_geometry_id; // if set, then the edge represents a packed geometry
unsigned component_id; unsigned component_id;
unsigned short fwd_segment_position; // segment id in a compressed geometry unsigned short fwd_segment_position; // segment id in a compressed geometry
@ -126,4 +106,4 @@ struct EdgeBasedNode
TravelMode backward_travel_mode : 4; TravelMode backward_travel_mode : 4;
}; };
#endif //EDGE_BASED_NODE_HPP #endif // EDGE_BASED_NODE_HPP