diff options
Diffstat (limited to 'src/util/unordered-containers.h')
| -rw-r--r-- | src/util/unordered-containers.h | 49 |
1 files changed, 17 insertions, 32 deletions
diff --git a/src/util/unordered-containers.h b/src/util/unordered-containers.h index 70d36c4dc..b92f2e7ea 100644 --- a/src/util/unordered-containers.h +++ b/src/util/unordered-containers.h @@ -19,8 +19,24 @@ #include <glibmm/ustring.h> #ifndef DOXYGEN_SHOULD_SKIP_THIS -#if defined(HAVE_TR1_UNORDERED_SET) +#if defined(HAVE_NATIVE_UNORDERED_SET) +# include <unordered_set> +# include <unordered_map> +# define INK_UNORDERED_SET std::unordered_set +# define INK_UNORDERED_MAP std::unordered_map +# define INK_HASH std::hash + +namespace std { +template <> +struct hash<Glib::ustring> : public std::unary_function<Glib::ustring, std::size_t> { + std::size_t operator()(Glib::ustring const &s) const { + return hash<std::string>()(s.raw()); + } +}; +} // namespace std + +#elif defined(HAVE_TR1_UNORDERED_SET) # include <tr1/unordered_set> # include <tr1/unordered_map> # define INK_UNORDERED_SET std::tr1::unordered_set @@ -53,37 +69,6 @@ struct hash<Glib::ustring> : public std::unary_function<Glib::ustring, std::size } }; } // namespace boost - -#elif defined(HAVE_EXT_HASH_SET) - -# include <functional> -# include <ext/hash_set> -# include <ext/hash_map> -# define INK_UNORDERED_SET __gnu_cxx::hash_set -# define INK_UNORDERED_MAP __gnu_cxx::hash_map -# define INK_HASH __gnu_cxx::hash - -#include <cstddef> - -namespace __gnu_cxx { -// hash function for pointers -// TR1 and Boost have this defined by default, __gnu_cxx doesn't -template<typename T> -struct hash<T *> : public std::unary_function<T *, std::size_t> { - std::size_t operator()(T *p) const { - // Taken from Boost - std::size_t x = static_cast<std::size_t>(reinterpret_cast<std::ptrdiff_t>(p)); - return x + (x >> 3); - } -}; - -template <> -struct hash<Glib::ustring> : public std::unary_function<Glib::ustring, std::size_t> { - std::size_t operator()(Glib::ustring const &s) const { - return hash<std::string>()(s.raw()); - } -}; -} // namespace __gnu_cxx #endif #else |
