Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Dynamic_Event_Table< Signature > Class Template Reference

Dynamic (growable) event table implementation. More...

#include <driven_table.H>

Inheritance diagram for Dynamic_Event_Table< Signature >:
[legend]
Collaboration diagram for Dynamic_Event_Table< Signature >:
[legend]

Public Types

using Event_Handler = typename Event_Table< Signature >::Event_Handler
 
- Public Types inherited from Event_Table< Signature >
using Event_Handler = std::function< Signature >
 

Public Member Functions

size_t size () const override
 Get the current table size (implements Event_Table virtual method)
 
 Dynamic_Event_Table (const size_t num_events=0)
 Construct a dynamic event table.
 
 Dynamic_Event_Table (const Dynamic_Event_Table &)=delete
 Copying disabled (events may contain non-copyable captures)
 
Dynamic_Event_Tableoperator= (const Dynamic_Event_Table &)=delete
 
 Dynamic_Event_Table (Dynamic_Event_Table &&) noexcept=default
 Move constructor.
 
Dynamic_Event_Tableoperator= (Dynamic_Event_Table &&) noexcept=default
 Move assignment.
 
 ~Dynamic_Event_Table () override=default
 Default destructor.
 
- Public Member Functions inherited from Event_Table< Signature >
virtual ~Event_Table ()=default
 Virtual destructor for proper cleanup in derived classes.
 
template<typename Callable >
void register_event (const size_t index, Callable &&fct)
 Register an event at a specific index.
 
template<typename Callable >
size_t register_event (Callable &&fct)
 Append a new event and return its auto-assigned index.
 
void unregister_event (const size_t index)
 Unregister an event at the given index.
 
bool is_registered (const size_t index) const
 Check if an event is registered at the given index.
 
template<typename F >
bool check (const size_t, F) const
 Legacy check method (for backward compatibility).
 
template<typename... Args>
auto execute_event (const size_t index, Args &&... args) const
 Execute the event at the given index with type-safe arguments.
 

Private Member Functions

const Event_Handlerread_table (const size_t i) const override
 Read event at index (implements Event_Table virtual method)
 
void write_table (const size_t i, Event_Handler &&event_fct) override
 Write event at index (implements Event_Table virtual method)
 
void clear_slot (size_t i) override
 Clear event at index (implements Event_Table virtual method)
 

Private Attributes

DynArray< Event_Handlertable
 Dynamic array of event handlers.
 

Additional Inherited Members

Detailed Description

template<typename Signature>
class Dynamic_Event_Table< Signature >

Dynamic (growable) event table implementation.

Uses a dynamic array that can grow as events are added. Suitable when the number of events is not known in advance or when events are added dynamically at runtime.

Template Parameters
SignatureFunction signature for events (e.g., void(int), int(double, bool))

Memory Management

  • Backed by DynArray (automatic memory management)
  • Moveable (events may contain non-copyable captures)
  • Automatically grows when events are appended beyond current size

Growth Strategy

When appending beyond current size, the underlying DynArray grows according to its own growth strategy (typically doubling capacity).

Complexity
  • Space: O(n) where n is current size
  • register_event (at end): O(1) amortized
  • register_event (at index): O(1)
  • unregister_event: O(1)
  • execute_event: O(1)
Example
Dynamic_Event_Table<void(int)> table; // starts empty
// Events can be added dynamically (lambdas, functions, etc.)
auto id1 = table.register_event([](int x) { std::cout << x << "\n"; });
auto id2 = table.register_event([](int x) { std::cout << x * 2 << "\n"; });
table.execute_event(id1, 42); // prints 42
table.execute_event(id2, 21); // prints 42
Dynamic (growable) event table implementation.
DynArray< Event_Handler > table
Dynamic array of event handlers.
DynList< T > maps(const C &c, Op op)
Classic map operation.

Definition at line 514 of file driven_table.H.

Member Typedef Documentation

◆ Event_Handler

template<typename Signature >
using Dynamic_Event_Table< Signature >::Event_Handler = typename Event_Table<Signature>::Event_Handler

Definition at line 517 of file driven_table.H.

Constructor & Destructor Documentation

◆ Dynamic_Event_Table() [1/3]

template<typename Signature >
Dynamic_Event_Table< Signature >::Dynamic_Event_Table ( const size_t  num_events = 0)
inlineexplicit

Construct a dynamic event table.

Parameters
num_eventsInitial number of event slots (default: 0)

All initial slots are initialized to empty. The table can grow beyond this initial size as events are added.

Definition at line 552 of file driven_table.H.

References Aleph::maps(), and Dynamic_Event_Table< Signature >::table.

◆ Dynamic_Event_Table() [2/3]

Copying disabled (events may contain non-copyable captures)

◆ Dynamic_Event_Table() [3/3]

Move constructor.

◆ ~Dynamic_Event_Table()

Default destructor.

Member Function Documentation

◆ clear_slot()

template<typename Signature >
void Dynamic_Event_Table< Signature >::clear_slot ( size_t  i)
inlineoverrideprivatevirtual

Clear event at index (implements Event_Table virtual method)

Implements Event_Table< Signature >.

Definition at line 536 of file driven_table.H.

References Dynamic_Event_Table< Signature >::table.

◆ operator=() [1/2]

◆ operator=() [2/2]

Move assignment.

◆ read_table()

template<typename Signature >
const Event_Handler * Dynamic_Event_Table< Signature >::read_table ( const size_t  i) const
inlineoverrideprivatevirtual

Read event at index (implements Event_Table virtual method)

Implements Event_Table< Signature >.

Definition at line 523 of file driven_table.H.

References Dynamic_Event_Table< Signature >::table.

◆ size()

template<typename Signature >
size_t Dynamic_Event_Table< Signature >::size ( ) const
inlineoverridevirtual

Get the current table size (implements Event_Table virtual method)

Implements Event_Table< Signature >.

Definition at line 543 of file driven_table.H.

References Aleph::DynArray< T >::size(), and Dynamic_Event_Table< Signature >::table.

Referenced by TEST(), TEST(), TEST(), and TEST().

◆ write_table()

template<typename Signature >
void Dynamic_Event_Table< Signature >::write_table ( const size_t  i,
Event_Handler &&  event_fct 
)
inlineoverrideprivatevirtual

Write event at index (implements Event_Table virtual method)

Implements Event_Table< Signature >.

Definition at line 530 of file driven_table.H.

References Aleph::maps(), and Dynamic_Event_Table< Signature >::table.

Member Data Documentation

◆ table


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