diff --git a/code/nel/include/nel/misc/entity_id.h b/code/nel/include/nel/misc/entity_id.h index b4e40909e..8c80daaba 100644 --- a/code/nel/include/nel/misc/entity_id.h +++ b/code/nel/include/nel/misc/entity_id.h @@ -580,7 +580,11 @@ struct CEntityIdHashMapTraits size_t operator() (const NLMISC::CEntityId &id ) const { uint64 hash64 = id.getUniqueId(); - return size_t(hash64) ^ size_t( hash64 >> 32 ); +#if (HAVE_X86_64) + return (size_t)hash64; +#else + return (size_t)hash64 ^ (size_t)(hash64 >> 32); +#endif //return size_t(id.getShortId()); } bool operator() (const NLMISC::CEntityId &id1, const NLMISC::CEntityId &id2) const diff --git a/code/nel/include/nel/misc/types_nl.h b/code/nel/include/nel/misc/types_nl.h index 2461cb5e6..3102238bd 100644 --- a/code/nel/include/nel/misc/types_nl.h +++ b/code/nel/include/nel/misc/types_nl.h @@ -417,12 +417,12 @@ extern void operator delete[](void *p) throw(); # define CHashMap stdext::hash_map # define CHashSet stdext::hash_set # define CHashMultiMap stdext::hash_multimap -#elif defined(NL_COMP_VC) && (NL_COMP_VC_VERSION >= 120) -# include -# include -# define CHashMap ::std::hash_map -# define CHashSet ::std::hash_set -# define CHashMultiMap ::std::hash_multimap +#elif defined(NL_COMP_VC) && (NL_COMP_VC_VERSION >= 100) +# include +# include +# define CHashMap ::std::unordered_map +# define CHashSet ::std::unordered_set +# define CHashMultiMap ::std::unordered_multimap #elif defined(NL_COMP_GCC) // GCC4 # include # include diff --git a/code/nel/include/nel/misc/ucstring.h b/code/nel/include/nel/misc/ucstring.h index 88e599c1a..2f921f9ae 100644 --- a/code/nel/include/nel/misc/ucstring.h +++ b/code/nel/include/nel/misc/ucstring.h @@ -363,7 +363,7 @@ struct CUCStringHashMapTraits } bool operator() (const ucstring &id1, const ucstring &id2) const { - return id1.size() < id2.size(); + return id1 < id2; } }; diff --git a/code/nel/include/nel/sound/context_sound.h b/code/nel/include/nel/sound/context_sound.h index 8424ee087..eeb29b433 100644 --- a/code/nel/include/nel/sound/context_sound.h +++ b/code/nel/include/nel/sound/context_sound.h @@ -71,6 +71,19 @@ struct CContextMatcher return memcmp(JokersValues, other.JokersValues, sizeof(uint32)*NbJoker) == 0; } + bool operator<(const CContextMatcher &other) const + { + if (UseRandom) + if (RandomValue != other.RandomValue) + return RandomValue < other.RandomValue; + + int cmp = memcmp(JokersValues, other.JokersValues, sizeof(uint32) * NbJoker); + if (cmp != 0) + return cmp < 0; + + return false; + } + size_t getHashValue() const { return size_t(HashValue); @@ -89,10 +102,9 @@ struct CContextMatcher } bool operator() (const CContextMatcher &patternMatcher1, const CContextMatcher &patternMatcher2) const { - return patternMatcher1.getHashValue() < patternMatcher2.getHashValue(); + return patternMatcher1 < patternMatcher2; } }; - }; diff --git a/code/ryzom/common/src/game_share/base_types.h b/code/ryzom/common/src/game_share/base_types.h index 5330537b7..f24daa69a 100644 --- a/code/ryzom/common/src/game_share/base_types.h +++ b/code/ryzom/common/src/game_share/base_types.h @@ -242,7 +242,7 @@ public: size_t operator () ( const TDataSetRow &index ) const { return index.getHashCode(); } - bool operator() (const TDataSetRow &index1, const TDataSetRow &index2) const { return index1.getHashCode() < index2.getHashCode(); } + bool operator() (const TDataSetRow &index1, const TDataSetRow &index2) const { return index1 < index2; } }; /// Warning: method to avoid (use it only when using rows as a static array) diff --git a/code/ryzom/server/src/entities_game_service/phrase_manager/fg_prospection_phrase.cpp b/code/ryzom/server/src/entities_game_service/phrase_manager/fg_prospection_phrase.cpp index f2fc03eb0..7721bad0c 100644 --- a/code/ryzom/server/src/entities_game_service/phrase_manager/fg_prospection_phrase.cpp +++ b/code/ryzom/server/src/entities_game_service/phrase_manager/fg_prospection_phrase.cpp @@ -17,6 +17,7 @@ #include "stdpch.h" +#include #include "fg_prospection_phrase.h" #include "nel/misc/common.h" #include "nel/misc/fast_floor.h" diff --git a/code/ryzom/server/src/entities_game_service/player_manager/character.cpp b/code/ryzom/server/src/entities_game_service/player_manager/character.cpp index 3c72995ea..b5cb58a07 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/character.cpp +++ b/code/ryzom/server/src/entities_game_service/player_manager/character.cpp @@ -8028,7 +8028,7 @@ void CCharacter::setStartStatistics( const CCreateCharMsg& createCharMsg ) } // create character start skills, skill point and money - string s = CreateCharacterStartSkillsValue; + string s = CreateCharacterStartSkillsValue.get(); if( s.size() > 0 ) { CSString skillValue = s; diff --git a/code/ryzom/server/src/entities_game_service/player_manager/db_string_updater.h b/code/ryzom/server/src/entities_game_service/player_manager/db_string_updater.h index 7603c92e9..e9296b0ef 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/db_string_updater.h +++ b/code/ryzom/server/src/entities_game_service/player_manager/db_string_updater.h @@ -48,6 +48,15 @@ class CDBStringUpdater : public NLMISC::CSingleton { return ClientDB == other.ClientDB && Node == other.Node; } + + bool operator <(const TBDStringLeaf &other) const + { + if (ClientDB != other.ClientDB) + return ClientDB < other.ClientDB; + if (Node != other.Node) + return Node < other.Node; + return false; + } }; // hasher for the identifier @@ -58,6 +67,10 @@ class CDBStringUpdater : public NLMISC::CSingleton { return ((size_t)stringLeaf.ClientDB>>4) ^ ((size_t)stringLeaf.Node>>4); } + bool operator()(const TBDStringLeaf &left, const TBDStringLeaf &right) const + { + return left < right; + } }; // info for each string leaf diff --git a/code/ryzom/server/src/entities_game_service/player_manager/player_manager.h b/code/ryzom/server/src/entities_game_service/player_manager/player_manager.h index ba0d1c306..5e68af4d2 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/player_manager.h +++ b/code/ryzom/server/src/entities_game_service/player_manager/player_manager.h @@ -52,6 +52,7 @@ struct CServiceIdHash { enum { bucket_size = 4, min_buckets = 8, }; size_t operator () ( const NLNET::TServiceId &sid ) const { return sid.get(); } + bool operator()(const NLNET::TServiceId &left, const NLNET::TServiceId &right) const { return left < right; } }; class CCharIdReplaced diff --git a/code/ryzom/server/src/entities_game_service/player_manager/player_manager_interface.h b/code/ryzom/server/src/entities_game_service/player_manager/player_manager_interface.h index 3e5de3130..2ebf3d50e 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/player_manager_interface.h +++ b/code/ryzom/server/src/entities_game_service/player_manager/player_manager_interface.h @@ -44,7 +44,8 @@ public: struct CUint32Hash { enum { bucket_size = 4, min_buckets = 8, }; - size_t operator () ( const uint32 &i ) const { return i; } + size_t operator () (const uint32 &i) const { return i; } + bool operator()(const uint32 left, const uint32 right) const { return left < right; } }; typedef uint32 TUserId; diff --git a/code/ryzom/server/src/persistant_data_service/db_manager.cpp b/code/ryzom/server/src/persistant_data_service/db_manager.cpp index 6acdf687c..1f853a729 100644 --- a/code/ryzom/server/src/persistant_data_service/db_manager.cpp +++ b/code/ryzom/server/src/persistant_data_service/db_manager.cpp @@ -785,7 +785,7 @@ NLNET::CMessage& CDbManager::addTask(const std::string& msg, ITaskEventListener* // add listener to task listeners if (listener != NULL) - _TaskListeners[id] = std::make_pair(listener, arg); + _TaskListeners[id] = std::pair(listener, arg); return *msgrbs; }