]> jfr.im git - irc/quakenet/newserv.git/blame - core/hooks.h
Merge.
[irc/quakenet/newserv.git] / core / hooks.h
CommitLineData
2c5db955
CP
1/* hooks.h */
2
3#ifndef __HOOKS_H
4#define __HOOKS_H
5
6#define HOOKMAX 5000
7
8/* This is the authoritative registry of all known hook numbers */
9
10#define HOOK_CORE_REHASH 0
11#define HOOK_CORE_STATSREQUEST 1
12#define HOOK_CORE_STATSREPLY 2
526e7c1d 13#define HOOK_CORE_ENDOFHOOKSQUEUE 3
d931d0f7 14#define HOOK_CORE_STOPERROR 4
2c5db955
CP
15
16#define HOOK_IRC_CONNECTED 100
17#define HOOK_IRC_DISCON 101
18#define HOOK_IRC_SENDBURSTSERVERS 102
19#define HOOK_IRC_SENDBURSTNICKS 103
20#define HOOK_IRC_SENDBURSTBURSTS 104
e609eb1f 21#define HOOK_IRC_PRE_DISCON 105
2c5db955
CP
22
23#define HOOK_SERVER_NEWSERVER 200 /* Argument is number of new server */
24#define HOOK_SERVER_LOSTSERVER 201 /* Argument is number of lost server */
e609eb1f
CP
25#define HOOK_SERVER_END_OF_BURST 202
26#define HOOK_SERVER_PRE_LOSTSERVER 203 /* Argument is number of lost server */
b6049faf 27#define HOOK_SERVER_LINKED 204 /* Argument is number of server */
2c5db955
CP
28
29#define HOOK_NICK_NEWNICK 300 /* Argument is nick* */
30#define HOOK_NICK_RENAME 301 /* Argument is nick* */
31#define HOOK_NICK_LOSTNICK 302 /* Argument is nick* */
32#define HOOK_NICK_WHOISCHANNELS 303 /* Argument is nick*[2] (sender, target) */
33#define HOOK_NICK_ACCOUNT 304 /* Argument is nick* */
34#define HOOK_NICK_QUIT 305 /* Argument is void*[2] (nick, reason) */
35#define HOOK_NICK_SETHOST 306 /* Argument is nick* */
3e3692bf 36#define HOOK_NICK_MODEOPER 307 /* Argument is void*[2] (nick, modes) */
acd438c7 37#define HOOK_NICK_KILL 308 /* Argument is void*[2] (nick, reason) */
2c5db955
CP
38
39#define HOOK_CHANNEL_BURST 400 /* Argument is channel pointer */
40#define HOOK_CHANNEL_CREATE 401 /* Argument is void*[2] (channel, nick) */
41#define HOOK_CHANNEL_JOIN 402 /* Argument is void*[2] (channel, nick) */
42#define HOOK_CHANNEL_PART 403 /* Argument is void*[3] (channel, nick, reason) */
43#define HOOK_CHANNEL_KICK 404 /* Argument is void*[4] (channel, kicked, kicker, reason) ** KICKER COULD BE NULL ***/
44#define HOOK_CHANNEL_TOPIC 405 /* Argument is void*[2] (channel, nick) ** NICK COULD BE NULL ** */
45#define HOOK_CHANNEL_MODECHANGE 406 /* Argument is void*[3] (channel, nick, flags) ** NICK COULD BE NULL ** */
46#define HOOK_CHANNEL_BANSET 407 /* Argument is void*[2] (channel, nick) ** NICK COULD BE NULL **, ban will be first ban on channel */
47#define HOOK_CHANNEL_BANCLEAR 408 /* Argument is void*[2] (channel, nick) ** NICK COULD BE NULL **, ban will be gone. XXX - could we care what the ban was? */
48#define HOOK_CHANNEL_OPPED 409 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
49#define HOOK_CHANNEL_DEOPPED 410 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
50#define HOOK_CHANNEL_VOICED 411 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
51#define HOOK_CHANNEL_DEVOICED 412 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
52
53#define HOOK_CHANNEL_NEWCHANNEL 413 /* Argument is channel pointer */
54#define HOOK_CHANNEL_LOSTCHANNEL 414 /* Argument is channel pointer */
55
56#define HOOK_CHANNEL_NEWNICK 415 /* Argument is void*[2] (channel, nick) */
57#define HOOK_CHANNEL_LOSTNICK 416 /* Argument is void*[2] (channel, nick) */
58
8dabf9c9 59#define HOOK_CHANSERV_DBLOADED 500 /* No arg */
60#define HOOK_CHANSERV_SETUSERID 501 /* Argument is nick * */
61#define HOOK_CHANSERV_RUNNING 502 /* No arg */
3e3692bf
CP
62#define HOOK_CONTROL_REGISTERED 600 /* Argument is nick* */
63#define HOOK_CONTROL_WHOISREQUEST 601 /* Argument is nick* */
64#define HOOK_CONTROL_WHOISREPLY 602 /* Argument is char* */
65
2c5db955
CP
66typedef void (*HookCallback)(int, void *);
67
a451a113 68extern unsigned int hookqueuelength;
526e7c1d 69
2c5db955
CP
70void inithooks();
71int registerhook(int hooknum, HookCallback callback);
72int deregisterhook(int hooknum, HookCallback callback);
73void triggerhook(int hooknum, void *arg);
74
75#endif