summaryrefslogtreecommitdiffstats
path: root/src/util/unordered-containers.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/unordered-containers.h')
-rw-r--r--src/util/unordered-containers.h49
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