diff --git a/src/framework/Utilities/UnorderedMap.h b/src/framework/Utilities/UnorderedMap.h index ca2b80bf6..3a36dba4b 100644 --- a/src/framework/Utilities/UnorderedMap.h +++ b/src/framework/Utilities/UnorderedMap.h @@ -23,31 +23,41 @@ #include "Platform/Define.h" #if COMPILER == COMPILER_INTEL -#include +# include +# include #elif COMPILER == COMPILER_GNU && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 3) -#include +# include +# include #elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 -#include +# include +# include #elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1500 && _HAS_TR1 // VC9.0 SP1 and later -#include +# include +# include #else -#include +# include +# include #endif #ifdef _STLPORT_VERSION # define UNORDERED_MAP std::hash_map +# define UNORDERED_SET std::hash_set # define HASH_NAMESPACE_START namespace std { # define HASH_NAMESPACE_END } using std::hash_map; +using std::hash_set; #elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1500 && _HAS_TR1 # define UNORDERED_MAP std::tr1::unordered_map +# define UNORDERED_SET std::tr1::unordered_set # define HASH_NAMESPACE_START namespace std { # define HASH_NAMESPACE_END } #elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1300 # define UNORDERED_MAP stdext::hash_map +# define UNORDERED_SET stdext::hash_set # define HASH_NAMESPACE_START namespace stdext { # define HASH_NAMESPACE_END } using stdext::hash_map; +using stdext::hash_set; #if !_HAS_TRADITIONAL_STL @@ -67,15 +77,19 @@ HASH_NAMESPACE_END #elif COMPILER == COMPILER_INTEL # define UNORDERED_MAP std::hash_map +# define UNORDERED_SET std::hash_set # define HASH_NAMESPACE_START namespace std { # define HASH_NAMESPACE_END } using std::hash_map; +using std::hash_set; #elif COMPILER == COMPILER_GNU && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 3) -#define UNORDERED_MAP std::tr1::unordered_map +# define UNORDERED_MAP std::tr1::unordered_map +# define UNORDERED_SET std::tr1::unordered_set # define HASH_NAMESPACE_START namespace std { namespace tr1 { # define HASH_NAMESPACE_END } } #elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 # define UNORDERED_MAP __gnu_cxx::hash_map +# define UNORDERED_SET __gnu_cxx::hash_set # define HASH_NAMESPACE_START namespace __gnu_cxx { # define HASH_NAMESPACE_END } @@ -102,13 +116,27 @@ HASH_NAMESPACE_START return hash()(__x.c_str()); } }; + HASH_NAMESPACE_END #else # define UNORDERED_MAP std::hash_map +# define UNORDERED_SET std::hash_set # define HASH_NAMESPACE_START namespace std { # define HASH_NAMESPACE_END } using std::hash_map; +using std::hash_set; +#endif + +#if COMPILER != COMPILER_MICROSOFT + +// Visual Studio use non standard hash calculation function, so provide fake forward for other +HASH_NAMESPACE_START + +template +size_t hash_value(K const&); + +HASH_NAMESPACE_END #endif diff --git a/src/game/ObjectGuid.h b/src/game/ObjectGuid.h index 5c194012d..393af8276 100644 --- a/src/game/ObjectGuid.h +++ b/src/game/ObjectGuid.h @@ -292,6 +292,12 @@ HASH_NAMESPACE_START } }; + // for pre-TR1 Visual Studio versions (VS90 SP1 or early) + inline size_t hash_value(ObjectGuid const& key) + { + return hash_value(key.GetRawValue()); + } + HASH_NAMESPACE_END #endif diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 53de72ede..57f56de30 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10368" + #define REVISION_NR "10369" #endif // __REVISION_NR_H__