rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Public Member Functions | Data Fields
IntListenerArray< MAX_INT_LISTENER_COUNT > Class Template Reference

#include <listener_array.h>

Collaboration diagram for IntListenerArray< MAX_INT_LISTENER_COUNT >:
Collaboration graph
[legend]

Public Member Functions

 IntListenerArray ()
 
void clear ()
 
void registerCallback (VoidInt handler, void *arg)
 
void registerCallback (Void listener)
 
void invokeJustArgCallbacks () const
 

Data Fields

int currentListenersCount = 0
 
VoidInt callbacks [MAX_INT_LISTENER_COUNT]
 
void * args [MAX_INT_LISTENER_COUNT]
 

Detailed Description

template<int MAX_INT_LISTENER_COUNT>
class IntListenerArray< MAX_INT_LISTENER_COUNT >

Definition at line 22 of file listener_array.h.

Constructor & Destructor Documentation

◆ IntListenerArray()

template<int MAX_INT_LISTENER_COUNT>
IntListenerArray< MAX_INT_LISTENER_COUNT >::IntListenerArray ( )

Definition at line 53 of file listener_array.h.

53 {
54 clear();
55}

Member Function Documentation

◆ clear()

template<int MAX_INT_LISTENER_COUNT>
void IntListenerArray< MAX_INT_LISTENER_COUNT >::clear ( )

Definition at line 58 of file listener_array.h.

58 {
60 memset(&args, 0, sizeof(args));
61 memset(&callbacks, 0, sizeof(callbacks));
62}
void * args[MAX_INT_LISTENER_COUNT]
VoidInt callbacks[MAX_INT_LISTENER_COUNT]

◆ invokeJustArgCallbacks()

template<int MAX_INT_LISTENER_COUNT>
void IntListenerArray< MAX_INT_LISTENER_COUNT >::invokeJustArgCallbacks ( ) const

Definition at line 84 of file listener_array.h.

84 {
85 for (int i = 0; i < currentListenersCount; i++) {
86 VoidPtr listener = (VoidPtr)(void*)callbacks[i];
87 void *arg = args[i];
88 (listener)(arg);
89 }
90}
void(* VoidPtr)(void *)
static CanTsListener listener

◆ registerCallback() [1/2]

template<int MAX_INT_LISTENER_COUNT>
void IntListenerArray< MAX_INT_LISTENER_COUNT >::registerCallback ( Void  listener)

Definition at line 73 of file listener_array.h.

73 {
75}
void registerCallback(VoidInt handler, void *arg)
void(* VoidInt)(int)

◆ registerCallback() [2/2]

template<int MAX_INT_LISTENER_COUNT>
void IntListenerArray< MAX_INT_LISTENER_COUNT >::registerCallback ( VoidInt  handler,
void *  arg 
)

Definition at line 65 of file listener_array.h.

65 {
66 efiAssertVoid(ObdCode::CUSTOM_ERR_6606, currentListenersCount < MAX_INT_LISTENER_COUNT, "Too many callbacks");
67 int index = currentListenersCount++;
68 callbacks[index] = handler;
69 args[index] = arg;
70}
@ CUSTOM_ERR_6606

Field Documentation

◆ args

template<int MAX_INT_LISTENER_COUNT>
void* IntListenerArray< MAX_INT_LISTENER_COUNT >::args[MAX_INT_LISTENER_COUNT]

Definition at line 31 of file listener_array.h.

Referenced by invokeArgIntCallbacks(), and invokeIntIntVoidCallbacks().

◆ callbacks

template<int MAX_INT_LISTENER_COUNT>
VoidInt IntListenerArray< MAX_INT_LISTENER_COUNT >::callbacks[MAX_INT_LISTENER_COUNT]

◆ currentListenersCount

template<int MAX_INT_LISTENER_COUNT>
int IntListenerArray< MAX_INT_LISTENER_COUNT >::currentListenersCount = 0

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