18#ifndef TRINITY_TYPECONTAINER_H
19#define TRINITY_TYPECONTAINER_H
27#include <unordered_map>
49template<
class H,
class T>
56template<
class OBJECT,
class KEY_TYPE>
59 std::unordered_map<KEY_TYPE, OBJECT*>
_element;
62template<
class KEY_TYPE>
67template<
class H,
class T,
class KEY_TYPE>
83template<
class OBJECT_TYPES>
94 template<class SPECIFIC_TYPE>
98 template<class SPECIFIC_TYPE>
116template <class OBJECT_TYPES>
119template <class OBJECT_TYPES>
122template <class OBJECT_TYPES>
123template <class SPECIFIC_TYPE>
129template <
class OBJECT_TYPES>
130template <
class SPECIFIC_TYPE>
134 return (t !=
nullptr);
137template <
class OBJECT_TYPES>
143template <
class OBJECT_TYPES>
149template<
class OBJECT_TYPES,
class KEY_TYPE>
160 template<class SPECIFIC_TYPE>
161 bool Insert(KEY_TYPE const& handle, SPECIFIC_TYPE* obj);
163 template<class SPECIFIC_TYPE>
164 bool Remove(KEY_TYPE const& handle);
166 template<class SPECIFIC_TYPE>
167 SPECIFIC_TYPE* Find(KEY_TYPE const& handle);
169 template<class SPECIFIC_TYPE>
179template <class OBJECT_TYPES, class KEY_TYPE>
182template <class OBJECT_TYPES, class KEY_TYPE>
185template <class OBJECT_TYPES, class KEY_TYPE>
186template <class SPECIFIC_TYPE>
192template <
class OBJECT_TYPES,
class KEY_TYPE>
193template <
class SPECIFIC_TYPE>
199template <
class OBJECT_TYPES,
class KEY_TYPE>
200template <
class SPECIFIC_TYPE>
203 return Trinity::Find(_elements, handle, (SPECIFIC_TYPE*)
nullptr);
206template <
class OBJECT_TYPES,
class KEY_TYPE>
207template <
class SPECIFIC_TYPE>
210 std::size_t size = 0;
215template <
class OBJECT_TYPES,
class KEY_TYPE>
221template <
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()
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)
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