50a42e903fb2157b3a8c4ce5b3a37164fcb61497
[cloogle-irc.git] / IRC.icl
1 implementation module IRC
2
3 import GenPrint
4 import StdOverloaded
5 import Data.Maybe
6 from StdMisc import undef
7
8 derive gPrint IRCCommands, IRCReplies, IRCErrors, (,), Maybe, ()
9
10 instance toString IRCCommands where toString r = printToString r
11 instance toString IRCReplies where toString r = printToString r
12 instance toString IRCErrors where toString r = printToString r
13
14 instance fromInt IRCReplies where
15 fromInt r = case r of
16 1 = RPL_WELCOME
17 2 = RPL_YOURHOST
18 3 = RPL_CREATED
19 4 = RPL_MYINFO
20 5 = RPL_BOUNCE
21 200 = RPL_TRACELINK
22 201 = RPL_TRACECONNECTING
23 202 = RPL_TRACEHANDSHAKE
24 203 = RPL_TRACEUNKNOWN
25 204 = RPL_TRACEOPERATOR
26 205 = RPL_TRACEUSER
27 206 = RPL_TRACESERVER
28 207 = RPL_TRACESERVICE
29 208 = RPL_TRACENEWTYPE
30 209 = RPL_TRACECLASS
31 210 = RPL_TRACERECONNECT
32 211 = RPL_STATSLINKINFO
33 212 = RPL_STATSCOMMANDS
34 219 = RPL_ENDOFSTATS
35 221 = RPL_UMODEIS
36 234 = RPL_SERVLIST
37 235 = RPL_SERVLISTEND
38 242 = RPL_STATSUPTIME
39 243 = RPL_STATSOLINE
40 251 = RPL_LUSERCLIENT
41 252 = RPL_LUSEROP
42 253 = RPL_LUSERUNKNOWN
43 254 = RPL_LUSERCHANNELS
44 255 = RPL_LUSERME
45 256 = RPL_ADMINME
46 257 = RPL_ADMINLOC1
47 258 = RPL_ADMINLOC2
48 259 = RPL_ADMINEMAIL
49 261 = RPL_TRACELOG
50 262 = RPL_TRACEEND
51 263 = RPL_TRYAGAIN
52 301 = RPL_AWAY
53 302 = RPL_USERHOST
54 303 = RPL_ISON
55 304 = RPL_UNAWAY
56 305 = RPL_NOWAWAY
57 311 = RPL_WHOISUSER
58 312 = RPL_WHOISSERVER
59 313 = RPL_WHOISOPERATOR
60 314 = RPL_WHOWASUSER
61 315 = RPL_ENDOFWHO
62 317 = RPL_WHOISIDLE
63 318 = RPL_ENDOFWHOIS
64 319 = RPL_WHOISCHANNELS
65 321 = RPL_LISTSTART
66 322 = RPL_LIST
67 323 = RPL_LISTEND
68 324 = RPL_CHANNELMODEIS
69 325 = RPL_UNIQOPIS
70 331 = RPL_NOTOPIC
71 332 = RPL_TOPIC
72 341 = RPL_INVITING
73 342 = RPL_SUMMONING
74 346 = RPL_INVITELIST
75 347 = RPL_ENDOFINVITELIST
76 348 = RPL_EXCEPTLIST
77 349 = RPL_ENDOFEXCEPTLIST
78 351 = RPL_VERSION
79 352 = RPL_WHOREPLY
80 353 = RPL_NAMREPLY
81 364 = RPL_LINKS
82 365 = RPL_ENDOFLINKS
83 366 = RPL_ENDOFNAMES
84 367 = RPL_BANLIST
85 368 = RPL_ENDOFBANLIST
86 369 = RPL_ENDOFWHOWAS
87 371 = RPL_INFO
88 372 = RPL_MOTD
89 374 = RPL_ENDOFINFO
90 375 = RPL_MOTDSTART
91 376 = RPL_ENDOFMOTD
92 381 = RPL_YOUREOPER
93 382 = RPL_REHASHING
94 383 = RPL_YOURESERVICE
95 391 = RPL_TIME
96 392 = RPL_USERSSTART
97 393 = RPL_USERS
98 394 = RPL_ENDOFUSERS
99 395 = RPL_NOUSERS
100 _ = undef
101
102 instance toInt IRCReplies where
103 toInt r = case r of
104 RPL_WELCOME = 1
105 RPL_YOURHOST = 2
106 RPL_CREATED = 3
107 RPL_MYINFO = 4
108 RPL_BOUNCE = 5
109 RPL_TRACELINK = 200
110 RPL_TRACECONNECTING = 201
111 RPL_TRACEHANDSHAKE = 202
112 RPL_TRACEUNKNOWN = 203
113 RPL_TRACEOPERATOR = 204
114 RPL_TRACEUSER = 205
115 RPL_TRACESERVER = 206
116 RPL_TRACESERVICE = 207
117 RPL_TRACENEWTYPE = 208
118 RPL_TRACECLASS = 209
119 RPL_TRACERECONNECT = 210
120 RPL_STATSLINKINFO = 211
121 RPL_STATSCOMMANDS = 212
122 RPL_ENDOFSTATS = 219
123 RPL_UMODEIS = 221
124 RPL_SERVLIST = 234
125 RPL_SERVLISTEND = 234
126 RPL_STATSUPTIME = 242
127 RPL_STATSOLINE = 243
128 RPL_LUSERCLIENT = 251
129 RPL_LUSEROP = 252
130 RPL_LUSERUNKNOWN = 253
131 RPL_LUSERCHANNELS = 254
132 RPL_LUSERME = 255
133 RPL_ADMINME = 256
134 RPL_ADMINLOC1 = 257
135 RPL_ADMINLOC2 = 258
136 RPL_ADMINEMAIL = 259
137 RPL_TRACELOG = 261
138 RPL_TRACEEND = 262
139 RPL_TRYAGAIN = 263
140 RPL_AWAY = 301
141 RPL_USERHOST = 302
142 RPL_ISON = 303
143 RPL_UNAWAY = 304
144 RPL_NOWAWAY = 305
145 RPL_WHOISUSER = 311
146 RPL_WHOISSERVER = 312
147 RPL_WHOISOPERATOR = 313
148 RPL_WHOWASUSER = 314
149 RPL_ENDOFWHO = 315
150 RPL_WHOISIDLE = 317
151 RPL_ENDOFWHOIS = 318
152 RPL_WHOISCHANNELS = 319
153 RPL_LISTSTART = 321
154 RPL_LIST = 322
155 RPL_LISTEND = 323
156 RPL_CHANNELMODEIS = 324
157 RPL_UNIQOPIS = 325
158 RPL_NOTOPIC = 331
159 RPL_TOPIC = 332
160 RPL_INVITING = 341
161 RPL_SUMMONING = 342
162 RPL_INVITELIST = 346
163 RPL_ENDOFINVITELIST = 347
164 RPL_EXCEPTLIST = 348
165 RPL_ENDOFEXCEPTLIST = 349
166 RPL_VERSION = 351
167 RPL_WHOREPLY = 352
168 RPL_NAMREPLY = 353
169 RPL_LINKS = 364
170 RPL_ENDOFLINKS = 365
171 RPL_ENDOFNAMES = 366
172 RPL_BANLIST = 367
173 RPL_ENDOFBANLIST = 367
174 RPL_ENDOFWHOWAS = 369
175 RPL_INFO = 371
176 RPL_MOTD = 372
177 RPL_ENDOFINFO = 374
178 RPL_MOTDSTART = 375
179 RPL_ENDOFMOTD = 376
180 RPL_YOUREOPER = 381
181 RPL_REHASHING = 382
182 RPL_YOURESERVICE = 383
183 RPL_TIME = 391
184 RPL_USERSSTART = 392
185 RPL_USERS = 393
186 RPL_ENDOFUSERS = 394
187 RPL_NOUSERS = 395
188
189 instance fromInt IRCErrors where
190 fromInt r = case r of
191 401 = ERR_NOSUCHNICK
192 402 = ERR_NOSUCHSERVER
193 403 = ERR_NOSUCHCHANNEL
194 404 = ERR_CANNOTSENDTOCHAN
195 405 = ERR_TOOMANYCHANNELS
196 406 = ERR_WASNOSUCHNICK
197 407 = ERR_TOOMANYTARGETS
198 408 = ERR_NOSUCHSERVICE
199 409 = ERR_NOORIGIN
200 411 = ERR_NORECIPIENT
201 412 = ERR_NOTEXTTOSEND
202 413 = ERR_NOTOPLEVEL
203 414 = ERR_WILDTOPLEVEL
204 415 = ERR_BADMASK
205 421 = ERR_UNKNOWNCOMMAND
206 422 = ERR_NOMOTD
207 423 = ERR_NOADMININFO
208 424 = ERR_FILEERROR
209 431 = ERR_NONICKNAMEGIVEN
210 432 = ERR_ERRONEUSNICKNAME
211 433 = ERR_NICKNAMEINUSE
212 436 = ERR_NICKCOLLISION
213 437 = ERR_UNAVAILRESOURCE
214 441 = ERR_USERNOTINCHANNEL
215 442 = ERR_NOTONCHANNEL
216 443 = ERR_USERONCHANNEL
217 444 = ERR_NOLOGIN
218 445 = ERR_SUMMONDISABLED
219 446 = ERR_USERSDISABLED
220 451 = ERR_NOTREGISTERED
221 461 = ERR_NEEDMOREPARAMS
222 462 = ERR_ALREADYREGISTRED
223 463 = ERR_NOPERMFORHOST
224 464 = ERR_PASSWDMISMATCH
225 465 = ERR_YOUREBANNEDCREEP
226 466 = ERR_YOUWILLBEBANNED
227 467 = ERR_KEYSET
228 471 = ERR_CHANNELISFULL
229 472 = ERR_UNKNOWNMODE
230 473 = ERR_INVITEONLYCHAN
231 474 = ERR_BANNEDFROMCHAN
232 475 = ERR_BADCHANNELKEY
233 476 = ERR_BADCHANMASK
234 477 = ERR_NOCHANMODES
235 478 = ERR_BANLISTFULL
236 481 = ERR_NOPRIVILEGES
237 482 = ERR_CHANOPRIVSNEEDED
238 483 = ERR_CANTKILLSERVER
239 484 = ERR_RESTRICTED
240 485 = ERR_UNIQOPPRIVSNEEDED
241 491 = ERR_NOOPERHOST
242 501 = ERR_UMODEUNKNOWNFLAG
243 502 = ERR_USERSDONTMATCH
244
245 instance toInt IRCErrors where
246 toInt r = case r of
247 ERR_NOSUCHNICK = 401
248 ERR_NOSUCHSERVER = 402
249 ERR_NOSUCHCHANNEL = 403
250 ERR_CANNOTSENDTOCHAN = 404
251 ERR_TOOMANYCHANNELS = 405
252 ERR_WASNOSUCHNICK = 406
253 ERR_TOOMANYTARGETS = 407
254 ERR_NOSUCHSERVICE = 408
255 ERR_NOORIGIN = 409
256 ERR_NORECIPIENT = 411
257 ERR_NOTEXTTOSEND = 412
258 ERR_NOTOPLEVEL = 413
259 ERR_WILDTOPLEVEL = 414
260 ERR_BADMASK = 415
261 ERR_UNKNOWNCOMMAND = 421
262 ERR_NOMOTD = 422
263 ERR_NOADMININFO = 423
264 ERR_FILEERROR = 424
265 ERR_NONICKNAMEGIVEN = 431
266 ERR_ERRONEUSNICKNAME = 432
267 ERR_NICKNAMEINUSE = 433
268 ERR_NICKCOLLISION = 436
269 ERR_UNAVAILRESOURCE = 437
270 ERR_USERNOTINCHANNEL = 441
271 ERR_NOTONCHANNEL = 442
272 ERR_USERONCHANNEL = 443
273 ERR_NOLOGIN = 444
274 ERR_SUMMONDISABLED = 445
275 ERR_USERSDISABLED = 446
276 ERR_NOTREGISTERED = 451
277 ERR_NEEDMOREPARAMS = 461
278 ERR_ALREADYREGISTRED = 462
279 ERR_NOPERMFORHOST = 463
280 ERR_PASSWDMISMATCH = 464
281 ERR_YOUREBANNEDCREEP = 465
282 ERR_YOUWILLBEBANNED = 466
283 ERR_KEYSET = 467
284 ERR_CHANNELISFULL = 471
285 ERR_UNKNOWNMODE = 472
286 ERR_INVITEONLYCHAN = 473
287 ERR_BANNEDFROMCHAN = 474
288 ERR_BADCHANNELKEY = 475
289 ERR_BADCHANMASK = 476
290 ERR_NOCHANMODES = 477
291 ERR_BANLISTFULL = 478
292 ERR_NOPRIVILEGES = 481
293 ERR_CHANOPRIVSNEEDED = 482
294 ERR_CANTKILLSERVER = 483
295 ERR_RESTRICTED = 484
296 ERR_UNIQOPPRIVSNEEDED = 485
297 ERR_NOOPERHOST = 491
298 ERR_UMODEUNKNOWNFLAG = 501
299 ERR_USERSDONTMATCH = 502