Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
Loading...
Searching...
No Matches
bertini::AnyObserver Class Referenceabstract

Strawman base class for Observer objects. More...

#include <observer.hpp>

Inheritance diagram for bertini::AnyObserver:
[legend]

Public Member Functions

virtual ~AnyObserver ()=default
virtual ObserveResult Observe (AnyEvent const &e)=0
 Observe the observable object being observed.
virtual std::vector< std::type_index > SubscribedEventTypes () const
 Declares which event types this observer wants to receive.
virtual std::type_index ObservedKind () const
 The type this observer expects to observe.

Detailed Description

Strawman base class for Observer objects.

See also
Observer

Constructor & Destructor Documentation

◆ ~AnyObserver()

virtual bertini::AnyObserver::~AnyObserver ( )
virtualdefault

Member Function Documentation

◆ Observe()

virtual ObserveResult bertini::AnyObserver::Observe ( AnyEvent const & e)
pure virtual

Observe the observable object being observed.

This is probably in response to NotifyObservers.

This virtual function must be overridden by actual observers, defining how they observe the observable they are observing, probably filtering events and doing something specific for different ones.

Parameters
eThe event which was emitted by the observed object.
Returns
ObserveResult::KeepObserving to keep receiving events, or ObserveResult::Unsubscribe to ask the observable to drop this observer once the current notification finishes.

Implemented in bertini::endgame::EventRecorder< EndgameT >, bertini::endgame::GoryDetailLogger< EndgameT >, bertini::endgame::SampleSequenceCollector< EndgameT >, bertini::MultiObserver< ObservedT, ObserverTypes >, bertini::tracking::GoryDetailLogger< TrackerT >, 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 > >.

◆ ObservedKind()

virtual std::type_index bertini::AnyObserver::ObservedKind ( ) const
inlinevirtual

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 in bertini::Observer< ObservedT >, bertini::Observer< EndgameT >, bertini::Observer< TrackerT >, and bertini::Observer< TrackerType >.

◆ SubscribedEventTypes()

virtual std::vector< std::type_index > bertini::AnyObserver::SubscribedEventTypes ( ) const
inlinevirtual

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 > >.