icons
[lttv.git] / ltt / branches / poly / include / lttv / hook.h
CommitLineData
c5d77517 1#ifndef HOOK_H
2#define HOOK_H
3
858bd80a 4#include <glib.h>
c5d77517 5
6/* A hook is a function to call with the supplied hook data, and with
7 call site specific data (e.g., hooks for events are called with a
8 pointer to the current event). */
fcdf0ec2 9// MD compile fix: int instead of bool as return value
10typedef int (*lttv_hook)(void *hook_data, void *call_data);
c5d77517 11
12
13/* A list of hooks allows registering hooks to be called later. */
14
15typedef GArray _lttv_hooks;
16typedef _lttv_hooks lttv_hooks;
17
18lttv_hooks *lttv_hooks_new();
19
20void lttv_hooks_destroy(lttv_hooks *h);
21
22void lttv_hooks_add(lttv_hooks *h, lttv_hook f, void *hook_data);
23
1b82f325 24void lttv_hooks_remove(lttv_hooks *h, lttv_hook f, void *hook_data);
25
26unsigned lttv_hooks_number(lttv_hooks *h);
27
28void lttv_hooks_get(lttv_hooks *h, unsigned i, lttv_hook *f, void **hook_data);
29
30void lttv_hooks_remove_by_position(lttv_hooks *h, unsigned i);
31
fcdf0ec2 32int lttv_hooks_call(lttv_hooks *h, void *call_data);
1b82f325 33
fcdf0ec2 34int lttv_hooks_call_check(lttv_hooks *h, void *call_data);
c5d77517 35
36
37/* Sometimes different hooks need to be called based on the case. The
38 case is represented by an unsigned integer id and may represent different
39 event types, for instance. */
40
41typedef GPtrArray _lttv_hooks_by_id;
42typedef _lttv_hooks_by_id lttv_hooks_by_id;
43
44lttv_hooks_by_id *lttv_hooks_by_id_new();
45
46void lttv_hooks_by_id_destroy(lttv_hooks_by_id *h);
47
48void lttv_hooks_by_id_add(lttv_hooks_by_id *h, lttv_hook f, void *hook_data,
49 unsigned int id);
50
51void lttv_hooks_by_id_call(lttv_hooks_by_id *h, void *call_data, unsigned int id);
52
53#endif // HOOK_H
This page took 0.024167 seconds and 4 git commands to generate.