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