summaryrefslogtreecommitdiff
path: root/include/hash_map.h
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2009-08-15 11:32:49 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2009-08-15 11:32:49 +0000
commit01ce98f2746be837a64f5f9ed2c36eeaabae7462 (patch)
tree83e0a640f913a78861cc321bc9aaf67089b2b305 /include/hash_map.h
parent74a515a72f08fc85d8d59cb7207fba9ece51215f (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.h56
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