Sparkle 0.0.1
Loading...
Searching...
No Matches
spk::Module::EventBasedModule< TEvent > Class Template Referenceabstract

Template helper for modules that process queued events for a widget. More...

#include <spk_event_based_module.hpp>

Collaboration diagram for spk::Module::EventBasedModule< TEvent >:
Collaboration graph

Public Member Functions

 EventBasedModule (const EventBasedModule &)=delete
EventBasedModuleoperator= (const EventBasedModule &)=delete
 EventBasedModule (EventBasedModule &&)=delete
EventBasedModuleoperator= (EventBasedModule &&)=delete
void setWidget (spk::Widget *p_widget)
 Binds the module to a widget that will receive callbacks.
spk::Widgetwidget () const
 Returns the currently bound widget.
void insertEvent (TEvent &&p_ievent)
 Queues a new event to be processed later.
bool hasEvent () const
 Checks whether the module has pending events.
void treatEvents ()
 Processes all queued events by invoking _treatEvent.

Protected Member Functions

virtual void _treatEvent (TEvent &p_ievent)=0
 Handles a single event pulled from the queue.

Detailed Description

template<typename TEvent>
class spk::Module::EventBasedModule< TEvent >

Template helper for modules that process queued events for a widget.

Template Parameters
TEventconcrete event type; must be movable into the internal queue.
See also
KeyboardModule, MouseModule, SystemModule
class MyModule : public spk::Module::EventBasedModule<MyEvent>
{
protected:
void _treatEvent(MyEvent &evt) override { process(evt); }
};
MyModule module;
module.setWidget(root);
module.insertEvent(MyEvent{});
module.treatEvents();
Template helper for modules that process queued events for a widget.
Definition spk_event_based_module.hpp:30
virtual void _treatEvent(TEvent &p_ievent)=0
Handles a single event pulled from the queue.

Member Function Documentation

◆ _treatEvent()

template<typename TEvent>
virtual void spk::Module::EventBasedModule< TEvent >::_treatEvent ( TEvent & p_ievent)
protectedpure virtual

Handles a single event pulled from the queue.

Parameters
p_ieventEvent instance to process.

Implemented in spk::Module::KeyboardModule, spk::Module::MouseModule, and spk::Module::SystemModule.

Here is the caller graph for this function:

◆ hasEvent()

template<typename TEvent>
bool spk::Module::EventBasedModule< TEvent >::hasEvent ( ) const
inline

Checks whether the module has pending events.

Returns
true when at least one event is queued.

◆ insertEvent()

template<typename TEvent>
void spk::Module::EventBasedModule< TEvent >::insertEvent ( TEvent && p_ievent)
inline

Queues a new event to be processed later.

Parameters
p_ieventEvent instance to enqueue.

◆ setWidget()

template<typename TEvent>
void spk::Module::EventBasedModule< TEvent >::setWidget ( spk::Widget * p_widget)
inline

Binds the module to a widget that will receive callbacks.

Parameters
p_widgetTarget widget; may be null to detach.

◆ widget()

template<typename TEvent>
spk::Widget * spk::Module::EventBasedModule< TEvent >::widget ( ) const
inline

Returns the currently bound widget.

Returns
Pointer to the widget or nullptr when detached.

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