18#ifndef TRINITY_TYPECONTAINER_H
19#define TRINITY_TYPECONTAINER_H
26#include <unordered_map>
47template<
class H,
class T>
54template<
class OBJECT,
class KEY_TYPE>
57 std::unordered_map<KEY_TYPE, OBJECT*>
_element;
60template<
class KEY_TYPE>
65template<
class H,
class T,
class KEY_TYPE>
81template<
class OBJECT_TYPES>
92 template<class SPECIFIC_TYPE>
96 template<class SPECIFIC_TYPE>
114template <class OBJECT_TYPES>
117template <class OBJECT_TYPES>
120template <class OBJECT_TYPES>
121template <class SPECIFIC_TYPE>
127template <
class OBJECT_TYPES>
128template <
class SPECIFIC_TYPE>
132 return (t !=
nullptr);
135template <
class OBJECT_TYPES>
141template <
class OBJECT_TYPES>
147template<
class OBJECT_TYPES,
class KEY_TYPE>
158 template<class SPECIFIC_TYPE>
159 bool Insert(KEY_TYPE const& handle, SPECIFIC_TYPE* obj);
161 template<class SPECIFIC_TYPE>
164 template<class SPECIFIC_TYPE>
165 SPECIFIC_TYPE*
Find(KEY_TYPE const& handle);
167 template<class SPECIFIC_TYPE>
177template <class OBJECT_TYPES, class KEY_TYPE>
180template <class OBJECT_TYPES, class KEY_TYPE>
183template <class OBJECT_TYPES, class KEY_TYPE>
184template <class SPECIFIC_TYPE>
190template <
class OBJECT_TYPES,
class KEY_TYPE>
191template <
class SPECIFIC_TYPE>
197template <
class OBJECT_TYPES,
class KEY_TYPE>
198template <
class SPECIFIC_TYPE>
201 return Trinity::Find(_elements, handle, (SPECIFIC_TYPE*)
nullptr);
204template <
class OBJECT_TYPES,
class KEY_TYPE>
205template <
class SPECIFIC_TYPE>
208 std::size_t
size = 0;
213template <
class OBJECT_TYPES,
class KEY_TYPE>
219template <
class OBJECT_TYPES,
class KEY_TYPE>
bool insert(SPECIFIC_TYPE *obj)
inserts a specific object into the container
TypeMapContainer(TypeMapContainer const &)=default
ContainerMapList< OBJECT_TYPES > & GetElements(void)
Removes the object from the container, and returns the removed object.
ContainerMapList< OBJECT_TYPES > i_elements
TypeMapContainer(TypeMapContainer &&) noexcept=default
SPECIFIC_TYPE * Find(KEY_TYPE const &handle)
TypeUnorderedMapContainer(TypeUnorderedMapContainer &&) noexcept=default
bool Remove(KEY_TYPE const &handle)
ContainerUnorderedMap< OBJECT_TYPES, KEY_TYPE > & GetElements()
TypeUnorderedMapContainer(TypeUnorderedMapContainer const &)=default
TypeUnorderedMapContainer()
Player * Find(std::string_view name)
bool Insert(ContainerUnorderedMap< TypeList< H, T >, KEY_TYPE > &elements, KEY_TYPE const &handle, SPECIFIC_TYPE *obj)
size_t Count(ContainerMapList< TypeList< H, T > > const &elements, SPECIFIC_TYPE *fake)
bool Remove(ContainerUnorderedMap< TypeList< H, T >, KEY_TYPE > &elements, KEY_TYPE const &handle, SPECIFIC_TYPE *obj)
bool Size(ContainerUnorderedMap< TypeList< H, T >, KEY_TYPE > const &elements, std::size_t *size, SPECIFIC_TYPE *obj)
SPECIFIC_TYPE * Find(ContainerUnorderedMap< TypeList< H, T >, KEY_TYPE > const &elements, KEY_TYPE const &handle, SPECIFIC_TYPE *obj)
constexpr std::size_t size()
void Remove(VignetteData &vignette, WorldObject const *owner)
ContainerMapList< H > _elements
ContainerMapList< T > _TailElements
GridRefManager< OBJECT > _element
ContainerUnorderedMap< T, KEY_TYPE > _TailElements
ContainerUnorderedMap< H, KEY_TYPE > _elements
std::unordered_map< KEY_TYPE, OBJECT * > _element