|
Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
|
A class which can glob together observer types into a new, single observer type. More...
#include <observer.hpp>
Public Member Functions | |
| ObserveResult | Observe (AnyEvent const &e) override |
| Observe override which calls the overrides for the types you glued together. | |
| virtual | ~MultiObserver ()=default |
| std::type_index | ObservedKind () const override |
| The type this observer expects to observe. | |
| virtual std::vector< std::type_index > | SubscribedEventTypes () const |
| Declares which event types this observer wants to receive. | |
Public Attributes | |
| std::tuple< ObserverTypes< ObservedT >... > | observers_ |
| The held sub-observers, one per observer type. | |
A class which can glob together observer types into a new, single observer type.
If there are pre-existing observers for the object you wish to observe, rather than making one of each, and attaching each to the observable, you can make many things one.
https://frinkiac.com/?q=many%20guns%20into%20five
| ObservedT | The type of thing the observer types you are gluing together observe. They must all observe the same type of object. |
| ObserverTypes | The already-existing observer types you are gluing together. You can put as many of them together as you want! |
|
virtualdefault |
|
inlineoverridevirtual |
Observe override which calls the overrides for the types you glued together.
The bundle keeps observing as long as at least one of its children still wants events; it asks to unsubscribe only once every glued-in observer has returned Unsubscribe.
| e | The emitted event which caused observation. |
Implements bertini::AnyObserver.
|
inlineoverridevirtualinherited |
The type this observer expects to observe.
Used by Observable::AddObserver to reject attaching an observer to an incompatible observable (which would otherwise silently never fire). The default is typeid(void), a wildcard meaning "attach me anywhere"; Observer<ObservedT> reports typeid(ObservedT).
Reimplemented from bertini::AnyObserver.
|
inlinevirtualinherited |
Declares which event types this observer wants to receive.
Return a non-empty vector to opt into type-indexed dispatch: the observable will only call Observe() for events whose dynamic type exactly matches one of the returned type_index values. Return an empty vector (the default) to receive every event — this is the correct choice for observers that handle many or all event types, and is the automatic behavior for Python-defined observers.
Reimplemented in bertini::TypedObserver< Derived, ObservedT, ConcreteEvents >, bertini::TypedObserver< AMPPathAccumulator< TrackerT, SuccessfulStep >, TrackerT, SuccessfulStep< TrackerTraits< TrackerT >::EventEmitterType > >, bertini::TypedObserver< FirstPrecisionRecorder< TrackerT >, TrackerT, Initializing< TrackerTraits< TrackerT >::EventEmitterType, TrackerTraits< TrackerT >::BaseComplexT >, TrackingStarted< TrackerTraits< TrackerT >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerT >::EventEmitterType > >, bertini::TypedObserver< MinMaxPrecisionRecorder< TrackerT >, TrackerT, Initializing< TrackerTraits< TrackerT >::EventEmitterType, TrackerTraits< TrackerT >::BaseComplexT >, TrackingStarted< TrackerTraits< TrackerT >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerT >::EventEmitterType > >, bertini::TypedObserver< PathPrecisionRecorder< TrackerT >, TrackerT, TrackingStarted< TrackerTraits< TrackerT >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerT >::EventEmitterType > >, bertini::TypedObserver< PathPrecisionRecorder< TrackerType >, TrackerType, TrackingStarted< TrackerTraits< TrackerType >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerType >::EventEmitterType > >, and bertini::TypedObserver< StepFailScreenPrinter< TrackerT >, TrackerT, FailedStep< TrackerTraits< TrackerT >::EventEmitterType > >.
| std::tuple<ObserverTypes<ObservedT>...> bertini::MultiObserver< ObservedT, ObserverTypes >::observers_ |
The held sub-observers, one per observer type.