]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/hash_map.h
Merge pull request #1018 from SaberUK/insp20+hidekills
[user/henk/code/inspircd.git] / include / hash_map.h
index 1b43f0118e4c68b24bdcd9d005f80c0b8703a4d3..e789ea66a72875227daebe7a2b88d8dd38d9fb8d 100644 (file)
         * TODO: in 2.2 if we drop support for libstdc++ older than 3.4.7 and GCC older
         *       than 4.1 this can be cleaned up massively.
         */
-       #ifndef _WIN32
-               #if __GLIBCXX__ > 20060309
+       #if !defined _LIBCPP_VERSION && !defined _WIN32
+               #if !defined __GLIBCXX__ || __GLIBCXX__ > 20060309
                        // GCC4+ has deprecated hash_map and uses tr1. But of course, uses a different include to MSVC. FOR FUCKS SAKE.
                        #include <tr1/unordered_map>
                        #define HAS_TR1_UNORDERED
                        #define HASHMAP_DEPRECATED
+                       #define hash_map unordered_map
+                       #define nspace std::tr1
+                       #define BEGIN_HASHMAP_NAMESPACE namespace std { namespace tr1 {
+                       #define END_HASHMAP_NAMESPACE } }
                #else
                        #include <ext/hash_map>
                        /** Oddball linux namespace for hash_map */
                #include <unordered_map>
                #define HAS_TR1_UNORDERED
                #define HASHMAP_DEPRECATED
-       #endif
-
-       // tr1: restoring sanity to our headers. now if only compiler vendors could agree on a FUCKING INCLUDE FILE.
-       #ifdef HAS_TR1_UNORDERED
                #define hash_map unordered_map
-               #define nspace std::tr1
-               #define BEGIN_HASHMAP_NAMESPACE namespace std { namespace tr1 {
-               #define END_HASHMAP_NAMESPACE } }
+               #define nspace std
+               #define BEGIN_HASHMAP_NAMESPACE namespace std {
+               #define END_HASHMAP_NAMESPACE }
        #endif
 
 #endif