Added structures for RestrictionTarget and RestrictionSource.
This commit is contained in:
		
							parent
							
								
									65ccbedab2
								
							
						
					
					
						commit
						2d9645b9b0
					
				| @ -39,8 +39,63 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||||
| #include <unordered_map> | #include <unordered_map> | ||||||
| #include <unordered_set> | #include <unordered_set> | ||||||
| 
 | 
 | ||||||
| // Efficent look up if an edge is the start + via node of a TurnRestriction
 | 
 | ||||||
| // EdgeBasedEdgeFactory decides by it if edges are inserted or geometry is compressed
 | struct RestrictionSource//: public std::pair<NodeID, NodeID>
 | ||||||
|  | { | ||||||
|  |     NodeID start; | ||||||
|  |     NodeID via; | ||||||
|  | 
 | ||||||
|  |     RestrictionSource(NodeID _start, NodeID _via)//:std::pair<NodeID, NodeID>(from, via) {}
 | ||||||
|  |         : start(_start), via(_via) {} | ||||||
|  |     inline NodeID StartNode() const { return start; } | ||||||
|  |     inline NodeID ViaNode() const { return via; } | ||||||
|  | 
 | ||||||
|  |     friend inline bool operator==(const RestrictionSource& lhs, const RestrictionSource& rhs) | ||||||
|  |     { | ||||||
|  |         return (lhs.start == rhs.start && lhs.via == rhs.via); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct RestrictionTarget//: public std::pair<NodeID, bool>
 | ||||||
|  | { | ||||||
|  |     NodeID target; | ||||||
|  |     bool is_only; | ||||||
|  | 
 | ||||||
|  |     RestrictionTarget(NodeID _target, bool _only)//:std::pair<NodeID, bool>(to, _only) {}
 | ||||||
|  |         : target(_target), is_only(_only)  {} | ||||||
|  |     inline NodeID TargetNode() const { return target; } | ||||||
|  |     inline NodeID IsOnly() const { return is_only; } //!< an only_-restriction
 | ||||||
|  |     inline void SetTarget(NodeID _target) { target = _target; } //!< an only_-restriction
 | ||||||
|  | 
 | ||||||
|  |     friend inline bool operator==(const RestrictionTarget& lhs, const RestrictionTarget& rhs) | ||||||
|  |     { | ||||||
|  |         return (lhs.target == rhs.target && lhs.is_only == rhs.is_only); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | namespace std | ||||||
|  | { | ||||||
|  |     template <> struct hash<RestrictionSource> | ||||||
|  |     { | ||||||
|  |         size_t operator()(const RestrictionSource &r_source) const | ||||||
|  |         { | ||||||
|  |             return std::hash<int>()(r_source.StartNode()) ^ std::hash<int>()(r_source.ViaNode()); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     template <> struct hash<RestrictionTarget> | ||||||
|  |     { | ||||||
|  |         size_t operator()(const RestrictionTarget &r_target) const | ||||||
|  |         { | ||||||
|  |             return std::hash<int>()(r_target.TargetNode()) ^ std::hash<bool>()(r_target.IsOnly()); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |     \brief Efficent look up if an edge is the start + via node of a TurnRestriction | ||||||
|  |     EdgeBasedEdgeFactory decides by it if edges are inserted or geometry is compressed | ||||||
|  | */ | ||||||
| class RestrictionMap | class RestrictionMap | ||||||
| { | { | ||||||
|   public: |   public: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user