Template Class GeometryHierarchyMap¶
Defined in File GeometryHierarchyMap.hpp
Class Documentation¶
-
template<typename
value_t
>
classActs
::
GeometryHierarchyMap
¶ Store values mapped into the geometry hierarchy.
The core functionality is to find an equivalent element, i.e. an identifier-value pair, for a given geometry identifier via
auto it = container.find(GeometryIdentifier(...)); if (it != container.end()) { ... }
- Template Parameters
value_t
: stored value type
Trailing zero levels of stored geometry identifiers are used as broadcast values to refer to higher-level objects within the geometry, e.g. a geometry identifier with vanishing approach and sensitive index identifies a layer. An entry will all geometry identifier levels set to zero acts as the global default value.
The container also supports range-based iteration over all stored elements
for (const auto& element : container) { ... }
and index-based access to stored elements and associated geometry identifiers
GeometryIdentifier id3 = container.idAt(3); const auto& element4 = container.valueAt(4);
Adding elements is potentially expensive as the internal lookup structure must be updated. In addition, modifying an element in-place could change its identifier which would also break the lookup. Thus, the container can not be modified after construction to prevent misuse.
- Note
No guarantees are given for the element order when using range-based or index-based access. Any apparent ordering must be considered an implementation detail and might change.
Public Types
-
using
InputElement
= typename std::pair<GeometryIdentifier, value_t>¶ Combined geometry identifier and value element. Only used for input.
Public Functions
-
GeometryHierarchyMap
(std::vector<InputElement> elements)¶ Construct the container from the given elements.
- Parameters
elements
: input elements (must be unique with respect to identifier)
-
GeometryHierarchyMap
(std::initializer_list<InputElement> elements)¶ Construct the container from an initializer list.
- Parameters
elements
: input initializer list
-
GeometryHierarchyMap
() = default¶
-
GeometryHierarchyMap
(const GeometryHierarchyMap&) = default¶
-
GeometryHierarchyMap
(GeometryHierarchyMap&&) = default¶
-
~GeometryHierarchyMap
() = default¶
-
bool
empty
() const¶ Check if any elements are stored.
-
Iterator
find
(GeometryIdentifier id) const¶ Find the most specific value for a given geometry identifier.
This can be either from the element matching exactly to the given geometry id, if it exists, or from the element for the next available higher level within the geometry hierachy.
- Parameters
id
: geometry identifier for which information is requested
- Return Value
iterator
: to an existing value<tt>.end()</tt>
: iterator if no matching element exists
-
GeometryIdentifier
idAt
(Size index) const¶ Access the geometry identifier for the i-th element with bounds check.
- Exceptions
std::out_of_range
: for invalid indices
-
GeometryHierarchyMap &
operator=
(const GeometryHierarchyMap&) = default¶
-
GeometryHierarchyMap &
operator=
(GeometryHierarchyMap&&) = default¶