13#ifndef __MESHX_ELEMENT_REGISTRY_HPP__
14#define __MESHX_ELEMENT_REGISTRY_HPP__
84 T*
find_and_cast(uint16_t element_idx, meshx_element_type_t expected_variant)
89 return static_cast<T*
>(base);
Interface class for MeshX elements.
Definition meshx_fwd_decl.hpp:82
uint16_t get_element_idx(void) const
Definition meshx_fwd_decl.hpp:99
virtual meshx_element_type_t get_element_variant(void) const =0
Get the element variant.
T * find_and_cast(uint16_t element_idx, meshx_element_type_t expected_variant)
Find and cast an element instance.
Definition meshx_element_registry.hpp:84
void unregister_element(uint16_t element_idx)
Unregister an element instance.
Definition meshx_element_registry.hpp:54
void register_element(meshXElementIF *element)
Register an element instance.
Definition meshx_element_registry.hpp:43
std::mutex registry_mutex
Definition meshx_element_registry.hpp:28
std::map< uint16_t, meshXElementIF * > get_all_elements()
Get all registered elements.
Definition meshx_element_registry.hpp:98
meshXElementIF * find_element(uint16_t element_idx)
Find an element instance by its index.
Definition meshx_element_registry.hpp:65
static meshXElementRegistry & get_instance()
Definition meshx_element_registry.hpp:33
meshXElementRegistry()=default
std::map< uint16_t, meshXElementIF * > element_map
Definition meshx_element_registry.hpp:27
meshXElementRegistry & operator=(const meshXElementRegistry &)=delete
meshXElementRegistry(const meshXElementRegistry &)=delete
Forward declaration of MeshX classes.