feat(Core/Misc): Add .Size() to TypeUnorderedMapContainer for stats/debugging (#6080)
* cherry-picked commit (TrinityCore/TrinityCore@d53a2de) Co-Authored-By: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
@@ -138,6 +138,14 @@ public:
|
|||||||
return Acore::Find(_elements, handle, (SPECIFIC_TYPE*)nullptr);
|
return Acore::Find(_elements, handle, (SPECIFIC_TYPE*)nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class SPECIFIC_TYPE>
|
||||||
|
std::size_t Size() const
|
||||||
|
{
|
||||||
|
std::size_t size = 0;
|
||||||
|
Acore::Size(_elements, &size, (SPECIFIC_TYPE*)nullptr);
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE>& GetElements() { return _elements; }
|
ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE>& GetElements() { return _elements; }
|
||||||
ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE> const& GetElements() const { return _elements; }
|
ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE> const& GetElements() const { return _elements; }
|
||||||
|
|
||||||
|
|||||||
@@ -114,6 +114,33 @@ namespace Acore
|
|||||||
return ret ? ret : Remove(elements._TailElements, handle, (SPECIFIC_TYPE*)nullptr);
|
return ret ? ret : Remove(elements._TailElements, handle, (SPECIFIC_TYPE*)nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Count helpers
|
||||||
|
template<class SPECIFIC_TYPE, class KEY_TYPE>
|
||||||
|
bool Size(ContainerUnorderedMap<SPECIFIC_TYPE, KEY_TYPE> const& elements, std::size_t* size, SPECIFIC_TYPE* /*obj*/)
|
||||||
|
{
|
||||||
|
*size = elements._element.size();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class SPECIFIC_TYPE, class KEY_TYPE>
|
||||||
|
bool Size(ContainerUnorderedMap<TypeNull, KEY_TYPE> const& /*elements*/, std::size_t* /*size*/, SPECIFIC_TYPE* /*obj*/)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class SPECIFIC_TYPE, class KEY_TYPE, class T>
|
||||||
|
bool Size(ContainerUnorderedMap<T, KEY_TYPE> const& /*elements*/, std::size_t* /*size*/, SPECIFIC_TYPE* /*obj*/)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class SPECIFIC_TYPE, class KEY_TYPE, class H, class T>
|
||||||
|
bool Size(ContainerUnorderedMap<TypeList<H, T>, KEY_TYPE> const& elements, std::size_t* size, SPECIFIC_TYPE* /*obj*/)
|
||||||
|
{
|
||||||
|
bool ret = Size(elements._elements, size, (SPECIFIC_TYPE*)nullptr);
|
||||||
|
return ret ? ret : Size(elements._TailElements, size, (SPECIFIC_TYPE*)nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
/* ContainerMapList Helpers */
|
/* ContainerMapList Helpers */
|
||||||
// count functions
|
// count functions
|
||||||
template<class SPECIFIC_TYPE>
|
template<class SPECIFIC_TYPE>
|
||||||
|
|||||||
Reference in New Issue
Block a user