diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-08-15 11:32:49 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-08-15 11:32:49 +0000 |
commit | 01ce98f2746be837a64f5f9ed2c36eeaabae7462 (patch) | |
tree | 83e0a640f913a78861cc321bc9aaf67089b2b305 /include/hash_map.h | |
parent | 74a515a72f08fc85d8d59cb7207fba9ece51215f (diff) |
win: Last part of support required for VS2010:
NEEDS COMPILE TESTING ON: gcc3 (if possible), gcc4, vs2008.
- Check for vs2010 in hash_map.h
- use unordered_map if it exists
- change all map creations to:
#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED)
// old windows crap
#else
#if HASHMAP_DEPRECATED
// tr1/gcc crap
#endif
#endif
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11524 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/hash_map.h')
-rw-r--r-- | include/hash_map.h | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/include/hash_map.h b/include/hash_map.h index dad08aa93..6e47d292b 100644 --- a/include/hash_map.h +++ b/include/hash_map.h @@ -11,35 +11,45 @@ * --------------------------------------------------- */ -#ifndef INSPIRCD_HASHMAP_H -#define INSPIRCD_HASHMAP_H + #ifndef INSPIRCD_HASHMAP_H + #define INSPIRCD_HASHMAP_H -/** Where hash_map is varies from compiler to compiler - * as it is not standard unless we have tr1. - */ -#ifndef WIN32 - #ifndef HASHMAP_DEPRECATED - #include <ext/hash_map> - /** Oddball linux namespace for hash_map */ - #define nspace __gnu_cxx - #define BEGIN_HASHMAP_NAMESPACE namespace nspace { - #define END_HASHMAP_NAMESPACE } + /** Where hash_map is varies from compiler to compiler + * as it is not standard unless we have tr1. + */ + #ifndef WIN32 + #ifdef HASHMAP_DEPRECATED + // 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 + #else + #include <ext/hash_map> + /** Oddball linux namespace for hash_map */ + #define nspace __gnu_cxx + #define BEGIN_HASHMAP_NAMESPACE namespace nspace { + #define END_HASHMAP_NAMESPACE } + #endif #else - /** Yay, we have tr1! */ - #include <tr1/unordered_map> - /** Not so oddball linux namespace for hash_map with gcc 4.0 and above */ + #if _MSC_VER >= 1600 + // New MSVC has tr1. Just to make things fucked up, though, MSVC and GCC use different includes! FFS. + #include <unordered_map> + #define HAS_TR1_UNORDERED + #define HASHMAP_DEPRECATED + #else + #define nspace stdext + /** Oddball windows namespace for hash_map */ + 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 #define hash_map unordered_map #define nspace std::tr1 #define BEGIN_HASHMAP_NAMESPACE namespace std { namespace tr1 { #define END_HASHMAP_NAMESPACE } } #endif -#else - #include <hash_map> - #define nspace stdext - /** Oddball windows namespace for hash_map */ - using stdext::hash_map; - #define BEGIN_HASHMAP_NAMESPACE namespace nspace { - #define END_HASHMAP_NAMESPACE } -#endif #endif |