## EEventHook

EEventHook

## Functions

void | (*EEventItemsFunc) ()
void | (*EEventFunc) ()
void | (*EEventFactoryFunc) ()
EEvent * | e_event_construct ()
gpointer | e_event_add_items ()
void | e_event_remove_items ()
void | e_event_emit ()
gpointer | e_event_target_new ()
void | e_event_target_free ()
void | (*EEventHookFunc) ()
void | e_event_hook_class_add_target_map ()

## Types and Values

enum | e_event_t
struct | EEventItem
struct | EEventTarget
typedef | EEventHookTargetMap
typedef | EEventHookTargetMask
| EEventFactory

## Object Hierarchy

        GObject
        ├── EPluginHook
        │   ╰── EEventHook
        ╰── EEvent

## Description

## Functions

### EEventItemsFunc ()

    void
    (*EEventItemsFunc) (EEvent *ee,
                        GSList *items,
                        gpointer data);

### EEventFunc ()

    void
    (*EEventFunc) (EEvent *ee,
                   EEventItem *item,
                   gpointer data);

### EEventFactoryFunc ()

    void
    (*EEventFactoryFunc) (EEvent *ee,
                          gpointer Param2);

### e_event_construct ()

    EEvent *
    e_event_construct (EEvent *event,
                       const gchar *id);

Construct the base event instance with standard parameters.

#### Parameters

event | An instantiated but uninitialised EEvent. |
id | Event manager id. |

#### Returns

the `event`

### e_event_add_items ()

    gpointer
    e_event_add_items (EEvent *event,
                       GSList *items,
                       EEventItemsFunc freefunc,
                       gpointer data);

Adds `items` to the list of events listened to on the event manager `event` .

#### Parameters

event | An initialised EEvent structure. |
items | A list of EEventItems event listeners to register on this event manager. |
freefunc | A function called when the `items` list is no longer needed. |
data | callback data for `freefunc` and for item event handlers. |

#### Returns

An opaque key which can later be passed to remove_items.

### e_event_remove_items ()

    void
    e_event_remove_items (EEvent *event,
                          gpointer handle);

Remove items previously added. They MUST have been previously added, and may only be removed once.

#### Parameters

event | an EEvent |
handle | an opaque key returned by `e_event_add_items()` |

### e_event_emit ()

    void
    e_event_emit (EEvent *event,
                  const gchar *id,
                  EEventTarget *target);

Emit an event. `target` will automatically be freed once its emission is complete.

#### Parameters

id | Event name. This will be compared against EEventItem.id. |
target | The target describing the event context. This will be implementation defined. |

### e_event_target_new ()

    gpointer
    e_event_target_new (EEvent *event,
                        gint type,
                        gsize size);

Allocate a new event target suitable for this class. It is up to the implementation to define the available target types and their structure.

#### Parameters

event | An initialised EEvent instance. |
type | type, up to implementor |
size | The size of memory to allocate. This must be >= sizeof(EEventTarget). |

### e_event_target_free ()

    void
    e_event_target_free (EEvent *event,
                         gpointer target);

Free a target. This invokes the virtual free method on the EEventClass.

#### Parameters

event | An initialised EEvent instance on which this target was allocated. |
target | The target to free. |

### EEventHookFunc ()

    void
    (*EEventHookFunc) (EPlugin *plugin,
                       EEventTarget *target);

### e_event_hook_class_add_target_map ()

    void
    e_event_hook_class_add_target_map (EEventHookClass *hook_class,
                                       const EEventHookTargetMap *map);

Add a target map to a concrete derived class of EEvent. The target map enumerates a single target type and th eenable mask bit names, so that the type can be loaded automatically by the base EEvent class.

#### Parameters

hook_class | The derived EEventHook class. |
map | A map used to describe a single EEventTarget type for this class. |

## Types and Values

### enum e_event_t

#### Members

E_EVENT_INVALID |  |
E_EVENT_PASS |  |
E_EVENT_SINK |  |

### struct EEventItem

    struct EEventItem {
    	enum _e_event_t type;
    	gint priority;		/* priority of event */
    	const gchar *id;		/* event id */
    	gint target_type;
    	EEventFunc handle;
    	gpointer user_data;
    	guint32 enable;		/* enable mask */
    };

### struct EEventTarget

    struct EEventTarget {
    	EEvent *event; /* used for virtual methods */

    	guint32 type;		/* targe type, for implementors */
    	guint32 mask;		/* depends on type, enable mask */

    	/* implementation fields follow */
    };

### EEventHookTargetMap

    typedef struct _EPluginHookTargetMap EEventHookTargetMap;

### EEventHookTargetMask

    typedef struct _EPluginHookTargetKey EEventHookTargetMask;

### EEventFactory

    typedef struct _EEventFactory EEventFactory;