GridFire v0.7.1_rc2
General Purpose Nuclear Network
Loading...
Searching...
No Matches
gridfire::trigger::EveryNthTrigger< TriggerContextStruct > Class Template Referencefinal

Pass-through trigger that fires every Nth time its child trigger is true. More...

#include <trigger_logical.h>

Inheritance diagram for gridfire::trigger::EveryNthTrigger< TriggerContextStruct >:
[legend]
Collaboration diagram for gridfire::trigger::EveryNthTrigger< TriggerContextStruct >:
[legend]

Public Member Functions

 EveryNthTrigger (std::unique_ptr< Trigger< TriggerContextStruct > > A, size_t N)
 
 ~EveryNthTrigger () override=default
 
bool check (const TriggerContextStruct &ctx) const override
 Evaluate the trigger condition against the provided context.
 
void update (const TriggerContextStruct &ctx) override
 Update any internal state with the given context (e.g., counters, windows).
 
void step (const TriggerContextStruct &ctx) override
 similar to update but intended to be run on every step not just those where the trigger triggered
 
void reset () override
 Reset internal state and diagnostics counters.
 
std::string name () const override
 Short, stable name for this trigger (suitable for logs/UI).
 
TriggerResult why (const TriggerContextStruct &ctx) const override
 Explain why the last evaluation would be true/false in a structured way.
 
std::string describe () const override
 Human-readable description of this trigger's logic.
 
size_t numTriggers () const override
 Total number of times this trigger evaluated to true since last reset.
 
size_t numMisses () const override
 Total number of times this trigger evaluated to false since last reset.
 
- Public Member Functions inherited from gridfire::trigger::Trigger< TriggerContextStruct >
virtual ~Trigger ()=default
 Virtual destructor for polymorphic use.
 

Private Attributes

std::unique_ptr< Trigger< TriggerContextStruct > > m_A
 
size_t m_N
 
size_t m_counter = 0
 
size_t m_hits = 0
 
size_t m_misses = 0
 
size_t m_updates = 0
 
size_t m_resets = 0
 
size_t m_steps = 0
 

Detailed Description

template<typename TriggerContextStruct>
class gridfire::trigger::EveryNthTrigger< TriggerContextStruct >

Pass-through trigger that fires every Nth time its child trigger is true.

On update(ctx), increments an internal counter when A.check(ctx) is true. check(ctx) returns true only when A.check(ctx) is true and the internal counter is a multiple of N.

Exceptions
std::invalid_argumentWhen constructed with N==0.

Constructor & Destructor Documentation

◆ EveryNthTrigger()

template<typename TriggerContextStruct >
gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::EveryNthTrigger ( std::unique_ptr< Trigger< TriggerContextStruct > >  A,
size_t  N 
)
explicit

◆ ~EveryNthTrigger()

template<typename TriggerContextStruct >
gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::~EveryNthTrigger ( )
overridedefault

Member Function Documentation

◆ check()

template<typename TriggerContextStruct >
bool gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::check ( const TriggerContextStruct &  ctx) const
overridevirtual

Evaluate the trigger condition against the provided context.

Parameters
ctxContext snapshot (immutable view) used to evaluate the condition.
Returns
true if the condition is satisfied; false otherwise.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ describe()

template<typename TriggerContextStruct >
std::string gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::describe ( ) const
overridevirtual

Human-readable description of this trigger's logic.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ name()

template<typename TriggerContextStruct >
std::string gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::name ( ) const
overridevirtual

Short, stable name for this trigger (suitable for logs/UI).

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ numMisses()

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::numMisses ( ) const
overridevirtual

Total number of times this trigger evaluated to false since last reset.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ numTriggers()

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::numTriggers ( ) const
overridevirtual

Total number of times this trigger evaluated to true since last reset.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ reset()

template<typename TriggerContextStruct >
void gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::reset ( )
overridevirtual

Reset internal state and diagnostics counters.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ step()

template<typename TriggerContextStruct >
void gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::step ( const TriggerContextStruct &  ctx)
overridevirtual

similar to update but intended to be run on every step not just those where the trigger triggered

Parameters
ctxContext snapshot used to update state.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ update()

template<typename TriggerContextStruct >
void gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::update ( const TriggerContextStruct &  ctx)
overridevirtual

Update any internal state with the given context (e.g., counters, windows).

Parameters
ctxContext snapshot used to update state.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

◆ why()

template<typename TriggerContextStruct >
TriggerResult gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::why ( const TriggerContextStruct &  ctx) const
overridevirtual

Explain why the last evaluation would be true/false in a structured way.

Parameters
ctxContext snapshot for the explanation.
Returns
A TriggerResult tree with a boolean value and per-cause details.

Implements gridfire::trigger::Trigger< TriggerContextStruct >.

Member Data Documentation

◆ m_A

template<typename TriggerContextStruct >
std::unique_ptr<Trigger<TriggerContextStruct> > gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_A
private

◆ m_counter

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_counter = 0
mutableprivate

◆ m_hits

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_hits = 0
mutableprivate

◆ m_misses

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_misses = 0
mutableprivate

◆ m_N

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_N
private

◆ m_resets

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_resets = 0
mutableprivate

◆ m_steps

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_steps = 0
mutableprivate

◆ m_updates

template<typename TriggerContextStruct >
size_t gridfire::trigger::EveryNthTrigger< TriggerContextStruct >::m_updates = 0
mutableprivate

The documentation for this class was generated from the following file: