From 0574a60bc2dd7e143d24378d2a8e5b5ee83a8626 Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Mon, 19 May 2014 13:02:41 +0200 Subject: [PATCH] replace boost::unordered_map, move hash function for pairs into its own header --- Algorithms/StronglyConnectedComponents.h | 12 +------ DataStructures/RestrictionMap.h | 7 ++-- Util/StdHashExtensions.h | 46 ++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 Util/StdHashExtensions.h diff --git a/Algorithms/StronglyConnectedComponents.h b/Algorithms/StronglyConnectedComponents.h index 6f7e3aa3e..30c830ff6 100644 --- a/Algorithms/StronglyConnectedComponents.h +++ b/Algorithms/StronglyConnectedComponents.h @@ -38,6 +38,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../DataStructures/TurnInstructions.h" #include "../Util/SimpleLogger.h" +#include "../Util/StdHashExtensions.h" #include @@ -60,17 +61,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -namespace std -{ -template <> struct hash> -{ - size_t operator()(const std::pair &pair) const - { - return std::hash()(pair.first) ^ std::hash()(pair.second); - } -}; -} - class TarjanSCC { private: diff --git a/DataStructures/RestrictionMap.h b/DataStructures/RestrictionMap.h index f0e1df6a8..5a695a57a 100644 --- a/DataStructures/RestrictionMap.h +++ b/DataStructures/RestrictionMap.h @@ -30,12 +30,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include "../typedefs.h" #include "DynamicGraph.h" #include "Restriction.h" #include "NodeBasedGraph.h" +#include "../Util/StdHashExtensions.h" +#include "../typedefs.h" -#include +#include #include @@ -65,7 +66,7 @@ class RestrictionMap //! index -> list of (target, isOnly) std::vector m_restriction_bucket_list; //! maps (start, via) -> bucket index - boost::unordered_map m_restriction_map; + std::unordered_map m_restriction_map; std::unordered_set m_no_turn_via_node_set; }; diff --git a/Util/StdHashExtensions.h b/Util/StdHashExtensions.h new file mode 100644 index 000000000..29663f1d3 --- /dev/null +++ b/Util/StdHashExtensions.h @@ -0,0 +1,46 @@ +/* + +Copyright (c) 2014, Project OSRM, Dennis Luxen, others +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef STD_HASH_EXTENSIONS_H +#define STD_HASH_EXTENSIONS_H + +#include "../typedefs.h" + +#include + +namespace std +{ +template <> struct hash> +{ + size_t operator()(const std::pair &pair) const + { + return std::hash()(pair.first) ^ std::hash()(pair.second); + } +}; +} + +#endif // STD_HASH_EXTENSIONS_H