30#ifndef HORIZON_CORE_STRUCTURES_GRIDREFERENCECONTAINER_HPP
31#define HORIZON_CORE_STRUCTURES_GRIDREFERENCECONTAINER_HPP
50template<
class HEAD,
class TAIL>
64 template<
class SPECIFIC_TYPE>
67 obj->add_grid_reference(elements.
_element);
71 template<
class SPECIFIC_TYPE>
78 template<
class SPECIFIC_TYPE,
class T>
88 template<
class SPECIFIC_TYPE,
class HEAD,
class TAIL>
91 SPECIFIC_TYPE *t =
Insert(elements._elements, obj);
92 return (t !=
nullptr ? t :
Insert(elements._tail_elements, obj));
99 template <
class SPECIFIC_TYPE>
102 return elements.
_element.get_size();
105 template <
class SPECIFIC_TYPE>
111 template <
class SPECIFIC_TYPE,
class T>
117 template <
class SPECIFIC_TYPE,
class T>
120 return count(elements._elements, fake);
125 template <
class SPECIFIC_TYPE,
class H,
class T>
128 return count(elements._tail_elements, fake);
131 template <
class TypeNull>
138 template <
class H,
class T>
141 return count(elements._elements, (H *)
nullptr) +
count_all(elements._tail_elements);
147template<
class OBJECT_TYPES>
151 template <
class SPECIFIC_TYPE>
163 template <
class SPECIFIC_TYPE>
166 assert(obj && !obj->has_valid_grid_reference());
168 return (t !=
nullptr);
Forward declaration of GridRefManager, the class that manages GridReference.
Definition: GridRefManager.hpp:41
Definition: GridReferenceContainer.hpp:149
GridTypeListContainer< OBJECT_TYPES > _elements
Definition: GridReferenceContainer.hpp:175
bool insert(SPECIFIC_TYPE *obj)
inserts a specific object into the container
Definition: GridReferenceContainer.hpp:164
size_t count() const
Definition: GridReferenceContainer.hpp:152
GridTypeListContainer< OBJECT_TYPES > & getElements(void)
Definition: GridReferenceContainer.hpp:171
size_t count_all() const
Definition: GridReferenceContainer.hpp:157
const GridTypeListContainer< OBJECT_TYPES > & getElements(void) const
Definition: GridReferenceContainer.hpp:172
Definition: GridReferenceContainer.hpp:62
SPECIFIC_TYPE * Insert(GridTypeListContainer< SPECIFIC_TYPE > &elements, SPECIFIC_TYPE *obj)
Definition: GridReferenceContainer.hpp:65
size_t count(GridTypeListContainer< SPECIFIC_TYPE > const &elements, SPECIFIC_TYPE *)
Definition: GridReferenceContainer.hpp:100
size_t count_all(GridTypeListContainer< TypeNull > const &elements)
Definition: GridReferenceContainer.hpp:132
GridTypeListContainer< HEAD > _elements
Definition: GridReferenceContainer.hpp:53
GridTypeListContainer< TAIL > _tail_elements
Definition: GridReferenceContainer.hpp:54
Definition: GridReferenceContainer.hpp:47
Definition: GridReferenceContainer.hpp:41
GridRefManager< OBJECT > _element
Definition: GridReferenceContainer.hpp:42
Definition: TypeList.hpp:8