Libmacro  0.2
Libmacro is an extensible macro and hotkey library.
idispatcher.h File Reference

mcr_IDispatcher - Blocking dispatcher, intercept signals before sending. More...

#include "mcr/base/types.h"

Go to the source code of this file.

Classes

struct  mcr_IDispatcher
 

Macros

#define mcr_DispatchReceiver_compare   mcr_ref_compare
 

Typedefs

typedef int(* mcr_IDispatcher_fnc) (struct mcr_IDispatcher *idispPt)
 
typedef int(* mcr_IDispatcher_add_fnc) (struct mcr_IDispatcher *idispPt, struct mcr_Signal *sigPt, void *receiver, mcr_dispatch_receive_fnc receiverFnc)
 
typedef void(* mcr_IDispatcher_remove_fnc) (struct mcr_IDispatcher *idispPt, void *remReceiver)
 
typedef bool(* mcr_IDispatcher_dispatch_fnc) (struct mcr_IDispatcher *idispPt, struct mcr_Signal *sigPt, unsigned int mods)
 
typedef void(* mcr_IDispatcher_modify_fnc) (struct mcr_IDispatcher *idispPt, struct mcr_Signal *sigPt, unsigned int *modsPt)
 

Functions

MCR_API void mcr_IDispatcher_ctor (struct mcr_IDispatcher *idispPt, struct mcr_context *ctx, void(*deinit)(struct mcr_IDispatcher *), mcr_IDispatcher_add_fnc add, void(*clear)(struct mcr_IDispatcher *), mcr_IDispatcher_dispatch_fnc dispatch, mcr_IDispatcher_modify_fnc modifier, mcr_IDispatcher_remove_fnc remove, void(*trim)(struct mcr_IDispatcher *))
 
MCR_API struct mcr_IDispatchermcr_IDispatcher_from_id (struct mcr_context *ctx, size_t signalTypeId)
 

Detailed Description

mcr_IDispatcher - Blocking dispatcher, intercept signals before sending.

Dispatchers are the consumers of modifiers.

Definition in file idispatcher.h.

Macro Definition Documentation

§ mcr_DispatchReceiver_compare

#define mcr_DispatchReceiver_compare   mcr_ref_compare

Compare mcr_DispatchReceiver, only compare receivers.

Definition at line 36 of file idispatcher.h.

Typedef Documentation

§ mcr_IDispatcher_add_fnc

typedef int(* mcr_IDispatcher_add_fnc) (struct mcr_IDispatcher *idispPt, struct mcr_Signal *sigPt, void *receiver, mcr_dispatch_receive_fnc receiverFnc)

Add dispatching receiver for a signal.

Parameters
idispPtmcr_IDispatcher * Object which registers dispatch logic, and dispatches signals with modifiers
sigPtopt Signal-specific logic for what to intercept
receiveropt If null the receiverFnc will be sent with a null pointer. This must be set for null receiver function, or mcr_Trigger_receive
receiverFncopt If null mcr_Trigger_receive will be used. If receiver is not set, then this cannot be used with mcr_Trigger_receive.
Returns
reterr

Definition at line 57 of file idispatcher.h.

§ mcr_IDispatcher_dispatch_fnc

typedef bool(* mcr_IDispatcher_dispatch_fnc) (struct mcr_IDispatcher *idispPt, struct mcr_Signal *sigPt, unsigned int mods)

Dispatch signal and modifiers

Parameters
idispPtmcr_IDispatcher *
sigPtopt Intercepted signal
modsIntercepted modifiers
Returns
True to block sending signal

Definition at line 75 of file idispatcher.h.

§ mcr_IDispatcher_fnc

typedef int(* mcr_IDispatcher_fnc) (struct mcr_IDispatcher *idispPt)

Function on dispatcher with no arguments.

Parameters
dispPtmcr_IDispatcher *
Returns
reterr

Definition at line 43 of file idispatcher.h.

§ mcr_IDispatcher_modify_fnc

typedef void(* mcr_IDispatcher_modify_fnc) (struct mcr_IDispatcher *idispPt, struct mcr_Signal *sigPt, unsigned int *modsPt)

Modify modifiers from given signal

Parameters
idispPtmcr_IDispatcher *
sigPtopt Intercepted signal
modsPtThe modifiers passed in will be modified directly.

Definition at line 83 of file idispatcher.h.

§ mcr_IDispatcher_remove_fnc

typedef void(* mcr_IDispatcher_remove_fnc) (struct mcr_IDispatcher *idispPt, void *remReceiver)

Remove receiver

Parameters
idispPtmcr_IDispatcher *
remReceiveropt Receiver to remove
Returns
reterr

Definition at line 66 of file idispatcher.h.

Function Documentation

§ mcr_IDispatcher_ctor()

MCR_API void mcr_IDispatcher_ctor ( struct mcr_IDispatcher idispPt,
struct mcr_context ctx,
void(*)(struct mcr_IDispatcher *)  deinit,
mcr_IDispatcher_add_fnc  add,
void(*)(struct mcr_IDispatcher *)  clear,
mcr_IDispatcher_dispatch_fnc  dispatch,
mcr_IDispatcher_modify_fnc  modifier,
mcr_IDispatcher_remove_fnc  remove,
void(*)(struct mcr_IDispatcher *)  trim 
)

§ mcr_IDispatcher_from_id()

MCR_API struct mcr_IDispatcher* mcr_IDispatcher_from_id ( struct mcr_context ctx,
size_t  signalTypeId 
)

Get a dispatcher from a signal id.

Parameters
signalTypeIdId of the signal type
Returns
Reference to a dispatcher registered for given signal type's id