]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix hash_map.h on non-GNU C++ standard library implementations.
authorPeter Powell <petpow@saberuk.com>
Sat, 4 Oct 2014 12:52:21 +0000 (13:52 +0100)
committerPeter Powell <petpow@saberuk.com>
Sun, 5 Oct 2014 02:49:42 +0000 (03:49 +0100)
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