From 09280b0091474b58d43daf42c0f3d99f86e6ec25 Mon Sep 17 00:00:00 2001 From: KingPin Date: Mon, 10 Nov 2008 06:53:00 -0600 Subject: [svn] * Switch from hashmap to unordered map. - cleanup source - mangos. Help - Aokromes --HG-- branch : trunk rename : src/framework/Utilities/HashMap.h => src/framework/Utilities/UnorderedMap.h --- src/framework/Dynamic/ObjectRegistry.h | 2 +- src/framework/Makefile.am | 2 +- src/framework/Utilities/HashMap.h | 65 ------------------------------ src/framework/Utilities/UnorderedMap.h | 72 ++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 67 deletions(-) delete mode 100644 src/framework/Utilities/HashMap.h create mode 100644 src/framework/Utilities/UnorderedMap.h (limited to 'src/framework') diff --git a/src/framework/Dynamic/ObjectRegistry.h b/src/framework/Dynamic/ObjectRegistry.h index 8c2f58be7c1..83a99766e80 100644 --- a/src/framework/Dynamic/ObjectRegistry.h +++ b/src/framework/Dynamic/ObjectRegistry.h @@ -22,7 +22,7 @@ #define TRINITY_OBJECTREGISTRY_H #include "Platform/Define.h" -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" #include "Policies/Singleton.h" #include diff --git a/src/framework/Makefile.am b/src/framework/Makefile.am index c114fd95063..081b1cc9b44 100644 --- a/src/framework/Makefile.am +++ b/src/framework/Makefile.am @@ -60,6 +60,6 @@ EXTRA_DIST = \ Utilities/ByteConverter.h \ Utilities/Callback.h \ Utilities/EventProcessor.h \ - Utilities/HashMap.h \ + Utilities/UnorderedMap.h \ Utilities/LinkedList.h \ Utilities/TypeList.h diff --git a/src/framework/Utilities/HashMap.h b/src/framework/Utilities/HashMap.h deleted file mode 100644 index ed124bc4bf7..00000000000 --- a/src/framework/Utilities/HashMap.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS - * - * Copyright (C) 2008 Trinity - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef TRINITY_HASHMAP_H -#define TRINITY_HASHMAP_H - -#include "Platform/CompilerDefs.h" -#include "Platform/Define.h" - -#if COMPILER == COMPILER_INTEL -#include -#elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 -#include -#else -#include -#endif - -#ifdef _STLPORT_VERSION -#define HM_NAMESPACE std -using std::hash_map; -#elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1300 -#define HM_NAMESPACE stdext -using stdext::hash_map; -#elif COMPILER == COMPILER_INTEL -#define HM_NAMESPACE std -using std::hash_map; -#elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 -#define HM_NAMESPACE __gnu_cxx -using __gnu_cxx::hash_map; - -namespace __gnu_cxx -{ - template<> struct hash - { - size_t operator()(const unsigned long long &__x) const { return (size_t)__x; } - }; - template struct hash - { - size_t operator()(T * const &__x) const { return (size_t)__x; } - }; - -}; - -#else -#define HM_NAMESPACE std -using std::hash_map; -#endif -#endif diff --git a/src/framework/Utilities/UnorderedMap.h b/src/framework/Utilities/UnorderedMap.h new file mode 100644 index 00000000000..17d1742fc6c --- /dev/null +++ b/src/framework/Utilities/UnorderedMap.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2005-2008 MaNGOS + * + * Copyright (C) 2008 Trinity + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TRINITY_UNORDERED_MAP_H +#define TRINITY_UNORDERED_MAP_H + +#include "Platform/CompilerDefs.h" +#include "Platform/Define.h" + +#if COMPILER == COMPILER_INTEL +#include +#elif COMPILER == COMPILER_GNU && __GNUC__ >= 4 +#include +#elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 +#include +#elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1500 && _HAS_TR1 // VC9.0 and later +#include +#else +#include +#endif + +#ifdef _STLPORT_VERSION +#define UNORDERED_MAP std::hash_map +using std::hash_map; +#elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1500 && _HAS_TR1 +#define UNORDERED_MAP std::tr1::unordered_map +#elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1300 +#define UNORDERED_MAP stdext::hash_map +using stdext::hash_map; +#elif COMPILER == COMPILER_INTEL +#define UNORDERED_MAP std::hash_map +using std::hash_map; +#elif COMPILER == COMPILER_GNU && __GNUC__ >= 4 +#define UNORDERED_MAP std::tr1::unordered_map +#elif COMPILER == COMPILER_GNU && __GNUC__ >= 3 +#define UNORDERED_MAP std::__gnu_cxx::hash_map + +namespace __gnu_cxx +{ + template<> struct hash + { + size_t operator()(const unsigned long long &__x) const { return (size_t)__x; } + }; + template struct hash + { + size_t operator()(T * const &__x) const { return (size_t)__x; } + }; + +}; + +#else +#define UNORDERED_MAP std::hash_map +using std::hash_map; +#endif +#endif -- cgit v1.2.3