Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
Loading...
Searching...
No Matches
bertini::endgame::EventRecorder< EndgameT > Struct Template Reference

Counts endgame events and captures their payloads, for tests and diagnostics. More...

#include <observers.hpp>

Inheritance diagram for bertini::endgame::EventRecorder< EndgameT >:
[legend]
Collaboration diagram for bertini::endgame::EventRecorder< EndgameT >:
[legend]

Public Types

using EmitterT = EndgameT
 The endgame type emitting the observed events.
using BCT = typename EndgameT::BaseComplexT
 The boundary complex type of the observed endgame.

Public Member Functions

virtual ObserveResult Observe (AnyEvent const &e) override
 Observe the observable object being observed.
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

unsigned num_events = 0
 Total number of events observed.
unsigned num_time_advanced = 0
 Number of TimeAdvanced events observed.
unsigned num_sample_refined = 0
 Number of SampleRefined events observed.
unsigned num_circle_advanced = 0
 Number of circle-advanced events observed.
unsigned num_closed_loop = 0
 Number of closed-loop events observed.
unsigned num_approximated_root = 0
 Number of approximated-root events observed.
unsigned num_in_eg_zone = 0
 Number of in-endgame-zone events observed.
unsigned num_converged = 0
 Number of converged events observed.
unsigned num_precision_changed = 0
 Number of precision-changed events observed.
Vec< BCT > last_circle_point
 The most-recent circle sample point captured from an event.
BCT last_circle_time
 The most-recent circle sample time captured from an event.
Vec< BCT > converged_point
 The converged root point captured from a converged event.

Detailed Description

template<typename EndgameT>
struct bertini::endgame::EventRecorder< EndgameT >

Counts endgame events and captures their payloads, for tests and diagnostics.

Records how many of each event type were delivered, and captures the most-recent CircleAdvanced point/time and the Converged approximation – reading each payload (and the state accessors LatestTime / FinalApproximation / ApproximateError) the way a real observer would. This deliberately exercises the full event-delivery path, including the numeric-type conversion the adaptive-numeric-type endgame performs when it emits from its hardware-complex_dbl fast lane, and the slot-aware state accessors.

Member Typedef Documentation

◆ BCT

template<typename EndgameT>
using bertini::endgame::EventRecorder< EndgameT >::BCT = typename EndgameT::BaseComplexT

The boundary complex type of the observed endgame.

◆ EmitterT

template<typename EndgameT>
using bertini::endgame::EventRecorder< EndgameT >::EmitterT = EndgameT

The endgame type emitting the observed events.

Member Function Documentation

◆ Observe()

template<typename EndgameT>
virtual ObserveResult bertini::endgame::EventRecorder< EndgameT >::Observe ( AnyEvent const & e)
inlineoverridevirtual

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.

Implements bertini::AnyObserver.

◆ ObservedKind()

std::type_index bertini::Observer< EndgameT >::ObservedKind ( ) const
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.

◆ SubscribedEventTypes()

virtual std::vector< std::type_index > bertini::AnyObserver::SubscribedEventTypes ( ) const
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 > >.

Member Data Documentation

◆ converged_point

template<typename EndgameT>
Vec<BCT> bertini::endgame::EventRecorder< EndgameT >::converged_point

The converged root point captured from a converged event.

◆ last_circle_point

template<typename EndgameT>
Vec<BCT> bertini::endgame::EventRecorder< EndgameT >::last_circle_point

The most-recent circle sample point captured from an event.

◆ last_circle_time

template<typename EndgameT>
BCT bertini::endgame::EventRecorder< EndgameT >::last_circle_time

The most-recent circle sample time captured from an event.

◆ num_approximated_root

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_approximated_root = 0

Number of approximated-root events observed.

◆ num_circle_advanced

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_circle_advanced = 0

Number of circle-advanced events observed.

◆ num_closed_loop

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_closed_loop = 0

Number of closed-loop events observed.

◆ num_converged

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_converged = 0

Number of converged events observed.

◆ num_events

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_events = 0

Total number of events observed.

◆ num_in_eg_zone

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_in_eg_zone = 0

Number of in-endgame-zone events observed.

◆ num_precision_changed

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_precision_changed = 0

Number of precision-changed events observed.

◆ num_sample_refined

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_sample_refined = 0

Number of SampleRefined events observed.

◆ num_time_advanced

template<typename EndgameT>
unsigned bertini::endgame::EventRecorder< EndgameT >::num_time_advanced = 0

Number of TimeAdvanced events observed.