Core/Misc: Add .Size() to TypeUnorderedMapContainer for stats/debugging

This commit is contained in:
Shauren
2020-06-14 15:09:33 +02:00
parent 1258800add
commit d53a2dea5f
2 changed files with 35 additions and 0 deletions

View File

@@ -132,6 +132,14 @@ public:
return Trinity::Find(_elements, handle, (SPECIFIC_TYPE*)NULL);
}
template<class SPECIFIC_TYPE>
std::size_t Size() const
{
std::size_t size = 0;
Trinity::Size(_elements, &size, (SPECIFIC_TYPE*)nullptr);
return size;
}
ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE>& GetElements() { return _elements; }
ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE> const& GetElements() const { return _elements; }

View File

@@ -125,6 +125,33 @@ namespace Trinity
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 */
// count functions
template<class SPECIFIC_TYPE>