18#include "ioss_export.h"
37 IOSS_NODISCARD const std::vector<std::shared_ptr<DynamicTopologyObserver>> &
48 void register_observer(std::shared_ptr<DynamicTopologyObserver> observer);
50 void unregister_observer(std::shared_ptr<DynamicTopologyObserver> observer);
52 void reset_topology_modification();
54 void set_topology_modification(
unsigned int type);
60 for (
const std::shared_ptr<DynamicTopologyObserver> &observer :
m_observers) {
61 if (
dynamic_cast<const ObserverType *
>(observer.get()) !=
nullptr) {
69 template <
typename ObserverType>
72 std::vector<std::shared_ptr<ObserverType>> typed_observers;
74 for (
const std::shared_ptr<DynamicTopologyObserver> &observer :
m_observers) {
75 ObserverType *typed_observer =
dynamic_cast<ObserverType *
>(observer.get());
76 if (typed_observer !=
nullptr) {
77 typed_observers.push_back(std::dynamic_pointer_cast<ObserverType>(observer));
81 return typed_observers;
86 std::vector<std::shared_ptr<DynamicTopologyObserver>>
m_observers;
#define IOSS_NODISCARD
Definition Ioss_CodeTypes.h:56
std::vector< std::shared_ptr< DynamicTopologyObserver > > m_observers
Definition Ioss_DynamicTopologyNotifier.h:86
IOSS_NODISCARD std::vector< std::shared_ptr< DynamicTopologyObserver > > & get_observers()
Definition Ioss_DynamicTopologyNotifier.h:43
const std::string m_modelName
Definition Ioss_DynamicTopologyNotifier.h:85
IOSS_NODISCARD std::string name() const
Definition Ioss_DynamicTopologyNotifier.h:35
std::vector< std::shared_ptr< ObserverType > > get_observer_type() const
Definition Ioss_DynamicTopologyNotifier.h:70
DynamicTopologyNotifier(const std::string &model_name)
Definition Ioss_DynamicTopologyNotifier.h:31
IOSS_NODISCARD const std::vector< std::shared_ptr< DynamicTopologyObserver > > & get_observers() const
Definition Ioss_DynamicTopologyNotifier.h:38
bool has_observer_type() const
Definition Ioss_DynamicTopologyNotifier.h:56
virtual ~DynamicTopologyNotifier()=default
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40