diff --git a/src/framework/Dynamic/ObjectRegistry.h b/src/framework/Dynamic/ObjectRegistry.h index 3cec26bbf..e78874d4b 100644 --- a/src/framework/Dynamic/ObjectRegistry.h +++ b/src/framework/Dynamic/ObjectRegistry.h @@ -20,7 +20,7 @@ #define MANGOS_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 4d064cefc..2a62943ab 100644 --- a/src/framework/Makefile.am +++ b/src/framework/Makefile.am @@ -58,6 +58,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/UnorderedMap.h similarity index 71% rename from src/framework/Utilities/HashMap.h rename to src/framework/Utilities/UnorderedMap.h index 7ae3ee71f..5972faefc 100644 --- a/src/framework/Utilities/HashMap.h +++ b/src/framework/Utilities/UnorderedMap.h @@ -16,32 +16,39 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef MANGOS_HASHMAP_H -#define MANGOS_HASHMAP_H +#ifndef MANGOS_UNORDERED_MAP_H +#define MANGOS_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 // VC9.0 and later +#include #else #include #endif #ifdef _STLPORT_VERSION -#define HM_NAMESPACE std +#define UNORDERED_MAP std::hash_map using std::hash_map; +#elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1500 +#define UNORDERED_MAP std::tr1::unordered_map #elif COMPILER == COMPILER_MICROSOFT && _MSC_VER >= 1300 -#define HM_NAMESPACE stdext +#define UNORDERED_MAP stdext::hash_map using stdext::hash_map; #elif COMPILER == COMPILER_INTEL -#define HM_NAMESPACE std +#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 HM_NAMESPACE __gnu_cxx -using __gnu_cxx::hash_map; +#define UNORDERED_MAP std::__gnu_cxx::hash_map namespace __gnu_cxx { @@ -57,7 +64,7 @@ namespace __gnu_cxx }; #else -#define HM_NAMESPACE std +#define UNORDERED_MAP std::hash_map using std::hash_map; #endif #endif diff --git a/src/game/Group.h b/src/game/Group.h index 3368cbf4f..6160fd0f2 100644 --- a/src/game/Group.h +++ b/src/game/Group.h @@ -140,7 +140,7 @@ class MANGOS_DLL_SPEC Group typedef std::list MemberSlotList; typedef MemberSlotList::const_iterator member_citerator; - typedef HM_NAMESPACE::hash_map< uint32 /*mapId*/, InstanceGroupBind> BoundInstancesMap; + typedef UNORDERED_MAP< uint32 /*mapId*/, InstanceGroupBind> BoundInstancesMap; protected: typedef MemberSlotList::iterator member_witerator; typedef std::set InvitesList; diff --git a/src/game/InstanceSaveMgr.h b/src/game/InstanceSaveMgr.h index b9313ccbe..99749d9af 100644 --- a/src/game/InstanceSaveMgr.h +++ b/src/game/InstanceSaveMgr.h @@ -24,7 +24,7 @@ #include "zthread/Mutex.h" #include #include -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" #include "Database/DatabaseEnv.h" struct InstanceTemplate; @@ -118,7 +118,7 @@ class MANGOS_DLL_DECL InstanceSaveManager : public MaNGOS::Singleton InstanceSaveMap; - typedef HM_NAMESPACE::hash_map InstanceSaveHashMap; + typedef UNORDERED_MAP InstanceSaveHashMap; typedef std::map InstanceSaveMapMap; /* resetTime is a global propery of each (raid/heroic) map diff --git a/src/game/ItemEnchantmentMgr.cpp b/src/game/ItemEnchantmentMgr.cpp index a912a7a07..1971200bc 100644 --- a/src/game/ItemEnchantmentMgr.cpp +++ b/src/game/ItemEnchantmentMgr.cpp @@ -40,7 +40,7 @@ struct EnchStoreItem }; typedef std::vector EnchStoreList; -typedef HM_NAMESPACE::hash_map EnchantmentStore; +typedef UNORDERED_MAP EnchantmentStore; static EnchantmentStore RandomItemEnch; diff --git a/src/game/LootMgr.h b/src/game/LootMgr.h index 56fd6da3f..3c5020f53 100644 --- a/src/game/LootMgr.h +++ b/src/game/LootMgr.h @@ -120,7 +120,7 @@ class LootTemplate; typedef std::vector QuestItemList; typedef std::map QuestItemMap; typedef std::vector LootStoreItemList; -typedef HM_NAMESPACE::hash_map LootTemplateMap; +typedef UNORDERED_MAP LootTemplateMap; typedef std::set LootIdSet; diff --git a/src/game/Map.h b/src/game/Map.h index 6da1e56ae..e4f9f5839 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -116,7 +116,7 @@ enum LevelRequirementVsMode #pragma pack(pop) #endif -typedef HM_NAMESPACE::hash_map CreatureMoveList; +typedef UNORDERED_MAP CreatureMoveList; #define MAX_HEIGHT 100000.0f // can be use for find ground height at surface #define INVALID_HEIGHT -100000.0f // for check, must be equal to VMAP_INVALID_HEIGHT, real value for unknown height is VMAP_INVALID_HEIGHT_VALUE diff --git a/src/game/MapInstanced.h b/src/game/MapInstanced.h index 08482dbd5..030716853 100644 --- a/src/game/MapInstanced.h +++ b/src/game/MapInstanced.h @@ -26,7 +26,7 @@ class MANGOS_DLL_DECL MapInstanced : public Map { friend class MapManager; public: - typedef HM_NAMESPACE::hash_map< uint32, Map* > InstancedMaps; + typedef UNORDERED_MAP< uint32, Map* > InstancedMaps; MapInstanced(uint32 id, time_t expiry); ~MapInstanced() {} diff --git a/src/game/MapManager.h b/src/game/MapManager.h index 71a627b43..43ba884a9 100644 --- a/src/game/MapManager.h +++ b/src/game/MapManager.h @@ -32,8 +32,8 @@ class MANGOS_DLL_DECL MapManager : public MaNGOS::Singleton; - typedef HM_NAMESPACE::hash_map MapMapType; - typedef std::pair::iterator, bool> MapMapPair; + typedef UNORDERED_MAP MapMapType; + typedef std::pair::iterator, bool> MapMapPair; public: diff --git a/src/game/Object.h b/src/game/Object.h index 62dfc9c58..066e54438 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -89,7 +89,7 @@ class Map; class UpdateMask; class InstanceData; -typedef HM_NAMESPACE::hash_map UpdateDataMapType; +typedef UNORDERED_MAP UpdateDataMapType; struct WorldLocation { diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index f1cf1e57b..586f84a82 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -628,7 +628,7 @@ void ObjectAccessor::UpdateVisibilityForPlayer( Player* player ) /// Define the static member of HashMapHolder -template HM_NAMESPACE::hash_map< uint64, T* > HashMapHolder::m_objectMap; +template UNORDERED_MAP< uint64, T* > HashMapHolder::m_objectMap; template ZThread::FastMutex HashMapHolder::i_lock; /// Global defintions for the hashmap storage diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h index 92483adf0..ccb5b8af8 100644 --- a/src/game/ObjectAccessor.h +++ b/src/game/ObjectAccessor.h @@ -22,7 +22,7 @@ #include "Platform/Define.h" #include "Policies/Singleton.h" #include "zthread/FastMutex.h" -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" #include "Policies/ThreadingModel.h" #include "ByteBuffer.h" @@ -47,7 +47,7 @@ class HashMapHolder { public: - typedef HM_NAMESPACE::hash_map< uint64, T* > MapType; + typedef UNORDERED_MAP< uint64, T* > MapType; typedef ZThread::FastMutex LockType; typedef MaNGOS::GeneralLock Guard; @@ -89,8 +89,8 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton Player2CorpsesMapType; - typedef HM_NAMESPACE::hash_map::value_type UpdateDataValueType; + typedef UNORDERED_MAP Player2CorpsesMapType; + typedef UNORDERED_MAP::value_type UpdateDataValueType; template static T* GetObjectInWorld(uint64 guid, T* /*fake*/) { diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index a849df1f9..788934e42 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -72,7 +72,7 @@ struct GameTele std::wstring wnameLow; }; -typedef HM_NAMESPACE::hash_map GameTeleMap; +typedef UNORDERED_MAP GameTeleMap; struct ScriptInfo { @@ -120,26 +120,26 @@ struct CellObjectGuids CellGuidSet gameobjects; CellCorpseSet corpses; }; -typedef HM_NAMESPACE::hash_map CellObjectGuidsMap; -typedef HM_NAMESPACE::hash_map MapObjectGuids; +typedef UNORDERED_MAP CellObjectGuidsMap; +typedef UNORDERED_MAP MapObjectGuids; -typedef HM_NAMESPACE::hash_map RespawnTimes; +typedef UNORDERED_MAP RespawnTimes; struct MangosStringLocale { std::vector Content; // 0 -> default, i -> i-1 locale index }; -typedef HM_NAMESPACE::hash_map CreatureDataMap; -typedef HM_NAMESPACE::hash_map GameObjectDataMap; -typedef HM_NAMESPACE::hash_map CreatureLocaleMap; -typedef HM_NAMESPACE::hash_map GameObjectLocaleMap; -typedef HM_NAMESPACE::hash_map ItemLocaleMap; -typedef HM_NAMESPACE::hash_map QuestLocaleMap; -typedef HM_NAMESPACE::hash_map NpcTextLocaleMap; -typedef HM_NAMESPACE::hash_map PageTextLocaleMap; -typedef HM_NAMESPACE::hash_map MangosStringLocaleMap; -typedef HM_NAMESPACE::hash_map NpcOptionLocaleMap; +typedef UNORDERED_MAP CreatureDataMap; +typedef UNORDERED_MAP GameObjectDataMap; +typedef UNORDERED_MAP CreatureLocaleMap; +typedef UNORDERED_MAP GameObjectLocaleMap; +typedef UNORDERED_MAP ItemLocaleMap; +typedef UNORDERED_MAP QuestLocaleMap; +typedef UNORDERED_MAP NpcTextLocaleMap; +typedef UNORDERED_MAP PageTextLocaleMap; +typedef UNORDERED_MAP MangosStringLocaleMap; +typedef UNORDERED_MAP NpcOptionLocaleMap; typedef std::multimap QuestRelations; @@ -229,11 +229,11 @@ struct PlayerCondition }; // NPC gossip text id -typedef HM_NAMESPACE::hash_map CacheNpcTextIdMap; +typedef UNORDERED_MAP CacheNpcTextIdMap; typedef std::list CacheNpcOptionList; -typedef HM_NAMESPACE::hash_map CacheVendorItemMap; -typedef HM_NAMESPACE::hash_map CacheTrainerSpellMap; +typedef UNORDERED_MAP CacheVendorItemMap; +typedef UNORDERED_MAP CacheTrainerSpellMap; enum SkillRangeType { @@ -271,23 +271,23 @@ class ObjectMgr ObjectMgr(); ~ObjectMgr(); - typedef HM_NAMESPACE::hash_map ItemMap; + typedef UNORDERED_MAP ItemMap; typedef std::set< Group * > GroupSet; typedef std::set< Guild * > GuildSet; typedef std::set< ArenaTeam * > ArenaTeamSet; - typedef HM_NAMESPACE::hash_map QuestMap; + typedef UNORDERED_MAP QuestMap; - typedef HM_NAMESPACE::hash_map AreaTriggerMap; + typedef UNORDERED_MAP AreaTriggerMap; - typedef HM_NAMESPACE::hash_map AreaTriggerScriptMap; + typedef UNORDERED_MAP AreaTriggerScriptMap; - typedef HM_NAMESPACE::hash_map RepOnKillMap; + typedef UNORDERED_MAP RepOnKillMap; - typedef HM_NAMESPACE::hash_map WeatherZoneMap; + typedef UNORDERED_MAP WeatherZoneMap; - typedef HM_NAMESPACE::hash_map PetCreateSpellMap; + typedef UNORDERED_MAP PetCreateSpellMap; Player* GetPlayer(const char* name) const { return ObjectAccessor::Instance().FindPlayerByName(name);} Player* GetPlayer(uint64 guid) const { return ObjectAccessor::FindPlayer(guid); } @@ -775,10 +775,10 @@ class ObjectMgr QuestMap mQuestTemplates; - typedef HM_NAMESPACE::hash_map GossipTextMap; - typedef HM_NAMESPACE::hash_map QuestAreaTriggerMap; - typedef HM_NAMESPACE::hash_map BattleMastersMap; - typedef HM_NAMESPACE::hash_map ItemTextMap; + typedef UNORDERED_MAP GossipTextMap; + typedef UNORDERED_MAP QuestAreaTriggerMap; + typedef UNORDERED_MAP BattleMastersMap; + typedef UNORDERED_MAP ItemTextMap; typedef std::set TavernAreaTriggerSet; typedef std::set GameObjectForQuestSet; diff --git a/src/game/Pet.h b/src/game/Pet.h index f7a372adf..c050b96b6 100644 --- a/src/game/Pet.h +++ b/src/game/Pet.h @@ -113,7 +113,7 @@ enum PetNameInvalidReason PET_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 16 }; -typedef HM_NAMESPACE::hash_map PetSpellMap; +typedef UNORDERED_MAP PetSpellMap; typedef std::map TeachSpellMap; typedef std::vector AutoSpellList; diff --git a/src/game/Player.h b/src/game/Player.h index a5222d308..3d19dc5ed 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -88,7 +88,7 @@ struct SpellModifier Spell const* lastAffected; }; -typedef HM_NAMESPACE::hash_map PlayerSpellMap; +typedef UNORDERED_MAP PlayerSpellMap; typedef std::list SpellModList; struct SpellCooldown @@ -1359,7 +1359,7 @@ class MANGOS_DLL_SPEC Player : public Unit uint8 unReadMails; time_t m_nextMailDelivereTime; - typedef HM_NAMESPACE::hash_map ItemMap; + typedef UNORDERED_MAP ItemMap; ItemMap mMitems; //template defined in objectmgr.cpp @@ -1986,7 +1986,7 @@ class MANGOS_DLL_SPEC Player : public Unit /*** INSTANCE SYSTEM ***/ /*********************************************************/ - typedef HM_NAMESPACE::hash_map< uint32 /*mapId*/, InstancePlayerBind > BoundInstancesMap; + typedef UNORDERED_MAP< uint32 /*mapId*/, InstancePlayerBind > BoundInstancesMap; void UpdateHomebindTime(uint32 time); diff --git a/src/game/SkillDiscovery.cpp b/src/game/SkillDiscovery.cpp index ccb35ef74..fa4bd977a 100644 --- a/src/game/SkillDiscovery.cpp +++ b/src/game/SkillDiscovery.cpp @@ -40,7 +40,7 @@ struct SkillDiscoveryEntry }; typedef std::list SkillDiscoveryList; -typedef HM_NAMESPACE::hash_map SkillDiscoveryMap; +typedef UNORDERED_MAP SkillDiscoveryMap; static SkillDiscoveryMap SkillDiscoveryStore; diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index e67191b4d..a2a9c4834 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -26,7 +26,7 @@ #include "Database/DBCStructure.h" #include "Database/SQLStorage.h" -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" #include class Player; @@ -488,7 +488,7 @@ struct SpellProcEventEntry uint32 cooldown; // hidden cooldown used for some spell proc events, applied to _triggered_spell_ }; -typedef HM_NAMESPACE::hash_map SpellProcEventMap; +typedef UNORDERED_MAP SpellProcEventMap; #define ELIXIR_BATTLE_MASK 0x1 #define ELIXIR_GUARDIAN_MASK 0x2 @@ -527,7 +527,7 @@ struct SpellTargetPosition float target_Orientation; }; -typedef HM_NAMESPACE::hash_map SpellTargetPositionMap; +typedef UNORDERED_MAP SpellTargetPositionMap; // Spell pet auras class PetAura @@ -590,7 +590,7 @@ struct SpellChainNode uint8 rank; }; -typedef HM_NAMESPACE::hash_map SpellChainMap; +typedef UNORDERED_MAP SpellChainMap; typedef std::multimap SpellChainMapNext; // Spell learning properties (accessed using SpellMgr functions) diff --git a/src/game/WaypointManager.h b/src/game/WaypointManager.h index 9a6940cc7..4094c851b 100644 --- a/src/game/WaypointManager.h +++ b/src/game/WaypointManager.h @@ -21,7 +21,7 @@ #include #include -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" struct WaypointBehavior { @@ -80,7 +80,7 @@ class WaypointManager void _addNode(uint32 id, uint32 point, float x, float y, float z, float o, uint32 delay, uint32 wpGuid); void _clearPath(WaypointPath &path); - typedef HM_NAMESPACE::hash_map WaypointPathMap; + typedef UNORDERED_MAP WaypointPathMap; WaypointPathMap m_pathMap; }; diff --git a/src/game/World.h b/src/game/World.h index 108b1bb86..baa36fdb5 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -473,9 +473,9 @@ class World uint32 mail_timer; uint32 mail_timer_expires; - typedef HM_NAMESPACE::hash_map WeatherMap; + typedef UNORDERED_MAP WeatherMap; WeatherMap m_weathers; - typedef HM_NAMESPACE::hash_map SessionMap; + typedef UNORDERED_MAP SessionMap; SessionMap m_sessions; std::set m_kicked_sessions; uint32 m_maxActiveSessionCount; diff --git a/src/shared/Common.h b/src/shared/Common.h index 41faa2098..5c938ea67 100644 --- a/src/shared/Common.h +++ b/src/shared/Common.h @@ -79,7 +79,7 @@ // must be the first thing to include for it to work #include "MemoryLeaks.h" -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" #include #include #include diff --git a/src/shared/Database/Database.h b/src/shared/Database/Database.h index 2d4ee6181..a62675c70 100644 --- a/src/shared/Database/Database.h +++ b/src/shared/Database/Database.h @@ -21,15 +21,15 @@ #include "zthread/Thread.h" #include "../src/zthread/ThreadImpl.h" -#include "Utilities/HashMap.h" +#include "Utilities/UnorderedMap.h" #include "Database/SqlDelayThread.h" class SqlTransaction; class SqlResultQueue; class SqlQueryHolder; -typedef HM_NAMESPACE::hash_map TransactionQueues; -typedef HM_NAMESPACE::hash_map QueryQueues; +typedef UNORDERED_MAP TransactionQueues; +typedef UNORDERED_MAP QueryQueues; #define MAX_QUERY_LEN 1024 diff --git a/win/VC71/framework.vcproj b/win/VC71/framework.vcproj index a1aa5a290..519c8f481 100644 --- a/win/VC71/framework.vcproj +++ b/win/VC71/framework.vcproj @@ -190,7 +190,7 @@ RelativePath="..\..\src\framework\Utilities\EventProcessor.h"> + RelativePath="..\..\src\framework\Utilities\UnorderedMap.h"> diff --git a/win/VC80/framework.vcproj b/win/VC80/framework.vcproj index 581235c54..9b41a6692 100644 --- a/win/VC80/framework.vcproj +++ b/win/VC80/framework.vcproj @@ -418,7 +418,7 @@ >