X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fhash_map.h;h=e789ea66a72875227daebe7a2b88d8dd38d9fb8d;hb=e6601069038c35c546fd3f3dce95024b0d13f1b4;hp=313b216a78520eba03581fe002290c185519fa01;hpb=44f42a13de52c8025942ddab42f51feb36821782;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/hash_map.h b/include/hash_map.h index 313b216a7..e789ea66a 100644 --- a/include/hash_map.h +++ b/include/hash_map.h @@ -22,17 +22,23 @@ #ifndef INSPIRCD_HASHMAP_H #define INSPIRCD_HASHMAP_H - -#include "inspircd_config.h" - + /** Where hash_map is varies from compiler to compiler * as it is not standard unless we have tr1. + * + * 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 - #ifdef HASHMAP_DEPRECATED + #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 #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 /** Oddball linux namespace for hash_map */ @@ -41,27 +47,13 @@ #define END_HASHMAP_NAMESPACE } #endif #else - #if _MSC_VER >= 1600 - // New MSVC has tr1. Just to make things fucked up, though, MSVC and GCC use different includes! FFS. - #include - #define HAS_TR1_UNORDERED - #define HASHMAP_DEPRECATED - #else - /** Oddball windows namespace for hash_map */ - #include - #define nspace stdext - using stdext::hash_map; - #define BEGIN_HASHMAP_NAMESPACE namespace nspace { - #define END_HASHMAP_NAMESPACE } - #endif - #endif - - // tr1: restoring sanity to our headers. now if only compiler vendors could agree on a FUCKING INCLUDE FILE. - #ifdef HAS_TR1_UNORDERED + #include + #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 } } + #define nspace std + #define BEGIN_HASHMAP_NAMESPACE namespace std { + #define END_HASHMAP_NAMESPACE } #endif #endif