5 #include "../lib/array.h"
13 for (i
=0;i
<HOOKMAX
;i
++) {
14 array_init(&(hooks
[i
]),sizeof(HookCallback
));
15 array_setlim1(&(hooks
[i
]),2);
16 array_setlim2(&(hooks
[i
]),2);
20 int registerhook(int hooknum
, HookCallback callback
) {
27 hcbs
=(HookCallback
*)(hooks
[hooknum
].content
);
28 for(i
=0;i
<hooks
[hooknum
].cursi
;i
++)
32 i
=array_getfreeslot(&hooks
[hooknum
]);
33 hcbs
=(HookCallback
*)(hooks
[hooknum
].content
);
39 int deregisterhook(int hooknum
, HookCallback callback
) {
46 hcbs
=(HookCallback
*)(hooks
[hooknum
].content
);
48 for(i
=0;i
<hooks
[hooknum
].cursi
;i
++)
49 if(hcbs
[i
]==callback
) {
50 array_delslot(&(hooks
[hooknum
]),i
);
57 void triggerhook(int hooknum
, void *arg
) {
65 hcbs
=(HookCallback
*)(hooks
[hooknum
].content
);
66 for (i
=0;i
<hooks
[hooknum
].cursi
;i
++) {
67 (hcbs
[i
])(hooknum
, arg
);
71 if (!hookqueuelength
&& hooknum
!=HOOK_CORE_ENDOFHOOKSQUEUE
)
72 triggerhook(HOOK_CORE_ENDOFHOOKSQUEUE
, 0);