diff --git a/src/engine/shared/uuid_manager.cpp b/src/engine/shared/uuid_manager.cpp index 01d39517d..dd16b55f1 100644 --- a/src/engine/shared/uuid_manager.cpp +++ b/src/engine/shared/uuid_manager.cpp @@ -112,7 +112,7 @@ void CUuidManager::RegisterName(int ID, const char *pName) CNameIndexed NameIndexed; NameIndexed.m_Uuid = Name.m_Uuid; NameIndexed.m_ID = GetIndex(ID); - m_aNamesSorted.add(NameIndexed); + m_aNamesSorted.insert(std::lower_bound(m_aNamesSorted.begin(), m_aNamesSorted.end(), NameIndexed), NameIndexed); } CUuid CUuidManager::GetUuid(int ID) const @@ -127,10 +127,13 @@ const char *CUuidManager::GetName(int ID) const int CUuidManager::LookupUuid(CUuid Uuid) const { - sorted_array::range Pos = ::find_binary(m_aNamesSorted.all(), Uuid); - if(!Pos.empty()) + CNameIndexed Needle; + Needle.m_Uuid = Uuid; + Needle.m_ID = 0; + auto Range = std::equal_range(m_aNamesSorted.begin(), m_aNamesSorted.end(), Needle); + if(std::distance(Range.first, Range.second) == 1) { - return GetID(Pos.front().m_ID); + return GetID(Range.first->m_ID); } return UUID_UNKNOWN; } diff --git a/src/engine/shared/uuid_manager.h b/src/engine/shared/uuid_manager.h index 87b4f2064..5a0798d5f 100644 --- a/src/engine/shared/uuid_manager.h +++ b/src/engine/shared/uuid_manager.h @@ -2,7 +2,7 @@ #define ENGINE_SHARED_UUID_MANAGER_H #include -#include +#include enum { @@ -42,8 +42,7 @@ struct CNameIndexed int m_ID; bool operator<(const CNameIndexed &Other) const { return m_Uuid < Other.m_Uuid; } - bool operator<(const CUuid &Other) const { return m_Uuid < Other; } - bool operator==(const CUuid &Other) const { return m_Uuid == Other; } + bool operator==(const CNameIndexed &Other) const { return m_Uuid == Other.m_Uuid; } }; class CPacker; @@ -52,7 +51,7 @@ class CUnpacker; class CUuidManager { array m_aNames; - sorted_array m_aNamesSorted; + std::vector m_aNamesSorted; public: void RegisterName(int ID, const char *pName);