18#ifndef TYPECONTAINER_FUNCTIONS_H
19#define TYPECONTAINER_FUNCTIONS_H
34 template<
class SPECIFIC_TYPE,
class KEY_TYPE,
class H,
class T>
37 if constexpr (std::is_same_v<H, SPECIFIC_TYPE>)
39 auto i = elements._elements._element.find(handle);
40 if (i == elements._elements._element.end())
42 elements._elements._element[handle] = obj;
47 ASSERT(i->second == obj,
"Object with certain key already in but objects are different!");
52 if constexpr (std::is_same_v<T, TypeNull>)
55 return Insert(elements._TailElements, handle, obj);
59 template<
class SPECIFIC_TYPE,
class KEY_TYPE,
class H,
class T>
62 if constexpr (std::is_same_v<H, SPECIFIC_TYPE>)
64 auto i = elements._elements._element.find(handle);
65 if (i == elements._elements._element.end())
71 if constexpr (std::is_same_v<T, TypeNull>)
74 return Find(elements._TailElements, handle, obj);
78 template<
class SPECIFIC_TYPE,
class KEY_TYPE,
class H,
class T>
81 if constexpr (std::is_same_v<H, SPECIFIC_TYPE>)
83 elements._elements._element.erase(handle);
87 if constexpr (std::is_same_v<T, TypeNull>)
90 return Remove(elements._TailElements, handle, obj);
94 template<
class SPECIFIC_TYPE,
class KEY_TYPE,
class H,
class T>
97 if constexpr (std::is_same_v<H, SPECIFIC_TYPE>)
99 *
size = elements._elements._element.size();
103 if constexpr (std::is_same_v<T, TypeNull>)
106 return Size(elements._TailElements,
size, obj);
111 template<
class SPECIFIC_TYPE,
class H,
class T>
114 if constexpr (std::is_same_v<H, SPECIFIC_TYPE>)
116 return elements._elements._element.getSize();
119 if constexpr (std::is_same_v<T, TypeNull>)
122 return Count(elements._TailElements, fake);
126 template<
class SPECIFIC_TYPE,
class H,
class T>
129 if constexpr (std::is_same_v<H, SPECIFIC_TYPE>)
131 obj->AddToGrid(elements._elements._element);
135 if constexpr (std::is_same_v<T, TypeNull>)
138 return Insert(elements._TailElements, obj);
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()