add gperf input file

This commit is contained in:
Eric Mertens 2023-11-26 15:14:07 -08:00
parent 4c2f783d74
commit 52fe211067
2 changed files with 284 additions and 6 deletions

279
irc_commands.gperf Normal file
View File

@ -0,0 +1,279 @@
struct RecognizedCommand {
char const* text;
IrcCommand command;
std::size_t min_args;
std::size_t max_args;
};
%%
001, IrcCommand::RPL_WELCOME, 2, 2
002, IrcCommand::RPL_YOURHOST, 2, 2
003, IrcCommand::RPL_CREATED, 2, 2
004, IrcCommand::RPL_MYINFO, 5, 5
005, IrcCommand::RPL_ISUPPORT, 2, 15
008, IrcCommand::RPL_SNOMASK, 3, 3
010, IrcCommand::RPL_REDIR, 4, 4
015, IrcCommand::RPL_MAP, 2, 2
017, IrcCommand::RPL_MAPEND, 2, 2
043, IrcCommand::RPL_SAVENICK, 3, 3
200, IrcCommand::RPL_TRACELINK, 5, 5
201, IrcCommand::RPL_TRACECONNECTING, 4, 4
202, IrcCommand::RPL_TRACEHANDSHAKE, 4, 4
203, IrcCommand::RPL_TRACEUNKNOWN, 6, 6
204, IrcCommand::RPL_TRACEOPERATOR
205, IrcCommand::RPL_TRACEUSER
206, IrcCommand::RPL_TRACESERVER
208, IrcCommand::RPL_TRACENEWTYPE
209, IrcCommand::RPL_TRACECLASS
211, IrcCommand::RPL_STATSLINKINFO
212, IrcCommand::RPL_STATSCOMMANDS
213, IrcCommand::RPL_STATSCLINE
214, IrcCommand::RPL_STATSNLINE
215, IrcCommand::RPL_STATSILINE
216, IrcCommand::RPL_STATSKLINE
217, IrcCommand::RPL_STATSQLINE
218, IrcCommand::RPL_STATSYLINE
219, IrcCommand::RPL_ENDOFSTATS
220, IrcCommand::RPL_STATSPLINE
221, IrcCommand::RPL_UMODEIS, 2, 2
224, IrcCommand::RPL_STATSFLINE
225, IrcCommand::RPL_STATSDLINE
234, IrcCommand::RPL_SERVLIST
235, IrcCommand::RPL_SERVLISTEND
241, IrcCommand::RPL_STATSLLINE
242, IrcCommand::RPL_STATSUPTIME
243, IrcCommand::RPL_STATSOLINE
244, IrcCommand::RPL_STATSHLINE
245, IrcCommand::RPL_STATSSLINE
247, IrcCommand::RPL_STATSXLINE
248, IrcCommand::RPL_STATSULINE
249, IrcCommand::RPL_STATSDEBUG
250, IrcCommand::RPL_STATSCONN
251, IrcCommand::RPL_LUSERCLIENT
252, IrcCommand::RPL_LUSEROP
253, IrcCommand::RPL_LUSERUNKNOWN
254, IrcCommand::RPL_LUSERCHANNELS
255, IrcCommand::RPL_LUSERME
256, IrcCommand::RPL_ADMINME
257, IrcCommand::RPL_ADMINLOC1
258, IrcCommand::RPL_ADMINLOC2
259, IrcCommand::RPL_ADMINEMAIL
261, IrcCommand::RPL_TRACELOG
262, IrcCommand::RPL_ENDOFTRACE, 3, 3
263, IrcCommand::RPL_LOAD2HI
265, IrcCommand::RPL_LOCALUSERS
266, IrcCommand::RPL_GLOBALUSERS
270, IrcCommand::RPL_PRIVS
276, IrcCommand::RPL_WHOISCERTFP
281, IrcCommand::RPL_ACCEPTLIST
282, IrcCommand::RPL_ENDOFACCEPT
300, IrcCommand::RPL_NONE
301, IrcCommand::RPL_AWAY
302, IrcCommand::RPL_USERHOST
303, IrcCommand::RPL_ISON
304, IrcCommand::RPL_TEXT
305, IrcCommand::RPL_UNAWAY
306, IrcCommand::RPL_NOWAWAY
310, IrcCommand::RPL_WHOISHELPOP
311, IrcCommand::RPL_WHOISUSER
312, IrcCommand::RPL_WHOISSERVER
313, IrcCommand::RPL_WHOISOPERATOR
314, IrcCommand::RPL_WHOWASUSER
369, IrcCommand::RPL_ENDOFWHOWAS
316, IrcCommand::RPL_WHOISCHANOP
317, IrcCommand::RPL_WHOISIDLE
318, IrcCommand::RPL_ENDOFWHOIS
319, IrcCommand::RPL_WHOISCHANNELS
320, IrcCommand::RPL_WHOISSPECIAL
321, IrcCommand::RPL_LISTSTART
322, IrcCommand::RPL_LIST
323, IrcCommand::RPL_LISTEND
324, IrcCommand::RPL_CHANNELMODEIS
325, IrcCommand::RPL_CHANNELMLOCK
328, IrcCommand::RPL_CHANNELURL
329, IrcCommand::RPL_CREATIONTIME
330, IrcCommand::RPL_WHOISLOGGEDIN
331, IrcCommand::RPL_NOTOPIC
332, IrcCommand::RPL_TOPIC, 3, 3
333, IrcCommand::RPL_TOPICWHOTIME, 4, 4
337, IrcCommand::RPL_WHOISTEXT
338, IrcCommand::RPL_WHOISACTUALLY
341, IrcCommand::RPL_INVITING
342, IrcCommand::RPL_SUMMONING
346, IrcCommand::RPL_INVITELIST
347, IrcCommand::RPL_ENDOFINVITELIST
348, IrcCommand::RPL_EXCEPTLIST
349, IrcCommand::RPL_ENDOFEXCEPTLIST
351, IrcCommand::RPL_VERSION
352, IrcCommand::RPL_WHOREPLY
354, IrcCommand::RPL_WHOSPCRPL
315, IrcCommand::RPL_ENDOFWHO
353, IrcCommand::RPL_NAMREPLY
360, IrcCommand::RPL_WHOWASREAL
366, IrcCommand::RPL_ENDOFNAMES
361, IrcCommand::RPL_KILLDONE
362, IrcCommand::RPL_CLOSING
363, IrcCommand::RPL_CLOSEEND
364, IrcCommand::RPL_LINKS
365, IrcCommand::RPL_ENDOFLINKS
367, IrcCommand::RPL_BANLIST
368, IrcCommand::RPL_ENDOFBANLIST
371, IrcCommand::RPL_INFO
372, IrcCommand::RPL_MOTD
373, IrcCommand::RPL_INFOSTART
374, IrcCommand::RPL_ENDOFINFO
375, IrcCommand::RPL_MOTDSTART
376, IrcCommand::RPL_ENDOFMOTD
378, IrcCommand::RPL_WHOISHOST
381, IrcCommand::RPL_YOUREOPER
382, IrcCommand::RPL_REHASHING
384, IrcCommand::RPL_MYPORTIS
385, IrcCommand::RPL_NOTOPERANYMORE
386, IrcCommand::RPL_RSACHALLENGE
391, IrcCommand::RPL_TIME
392, IrcCommand::RPL_USERSSTART
393, IrcCommand::RPL_USERS
394, IrcCommand::RPL_ENDOFUSERS
395, IrcCommand::RPL_NOUSERS
396, IrcCommand::RPL_HOSTHIDDEN
401, IrcCommand::ERR_NOSUCHNICK, 3, 3
402, IrcCommand::ERR_NOSUCHSERVER
403, IrcCommand::ERR_NOSUCHCHANNEL
404, IrcCommand::ERR_CANNOTSENDTOCHAN
405, IrcCommand::ERR_TOOMANYCHANNELS
406, IrcCommand::ERR_WASNOSUCHNICK
407, IrcCommand::ERR_TOOMANYTARGETS
409, IrcCommand::ERR_NOORIGIN
410, IrcCommand::ERR_INVALIDCAPCMD
411, IrcCommand::ERR_NORECIPIENT
412, IrcCommand::ERR_NOTEXTTOSEND
413, IrcCommand::ERR_NOTOPLEVEL
414, IrcCommand::ERR_WILDTOPLEVEL
415, IrcCommand::ERR_MSGNEEDREGGEDNICK
416, IrcCommand::ERR_TOOMANYMATCHES
421, IrcCommand::ERR_UNKNOWNCOMMAND
422, IrcCommand::ERR_NOMOTD, 2, 2
423, IrcCommand::ERR_NOADMININFO
424, IrcCommand::ERR_FILEERROR
431, IrcCommand::ERR_NONICKNAMEGIVEN
432, IrcCommand::ERR_ERRONEUSNICKNAME
433, IrcCommand::ERR_NICKNAMEINUSE
435, IrcCommand::ERR_BANNICKCHANGE
436, IrcCommand::ERR_NICKCOLLISION
437, IrcCommand::ERR_UNAVAILRESOURCE
438, IrcCommand::ERR_NICKTOOFAST
440, IrcCommand::ERR_SERVICESDOWN
441, IrcCommand::ERR_USERNOTINCHANNEL
442, IrcCommand::ERR_NOTONCHANNEL
443, IrcCommand::ERR_USERONCHANNEL
444, IrcCommand::ERR_NOLOGIN
445, IrcCommand::ERR_SUMMONDISABLED
446, IrcCommand::ERR_USERSDISABLED
451, IrcCommand::ERR_NOTREGISTERED
456, IrcCommand::ERR_ACCEPTFULL
457, IrcCommand::ERR_ACCEPTEXIST
458, IrcCommand::ERR_ACCEPTNOT
461, IrcCommand::ERR_NEEDMOREPARAMS
462, IrcCommand::ERR_ALREADYREGISTRED
463, IrcCommand::ERR_NOPERMFORHOST
464, IrcCommand::ERR_PASSWDMISMATCH
465, IrcCommand::ERR_YOUREBANNEDCREEP
466, IrcCommand::ERR_YOUWILLBEBANNED
467, IrcCommand::ERR_KEYSET
470, IrcCommand::ERR_LINKCHANNEL
471, IrcCommand::ERR_CHANNELISFULL
472, IrcCommand::ERR_UNKNOWNMODE
473, IrcCommand::ERR_INVITEONLYCHAN
474, IrcCommand::ERR_BANNEDFROMCHAN
475, IrcCommand::ERR_BADCHANNELKEY
476, IrcCommand::ERR_BADCHANMASK
477, IrcCommand::ERR_NEEDREGGEDNICK
478, IrcCommand::ERR_BANLISTFULL
479, IrcCommand::ERR_BADCHANNAME
480, IrcCommand::ERR_THROTTLE
481, IrcCommand::ERR_NOPRIVILEGES
482, IrcCommand::ERR_CHANOPRIVSNEEDED
483, IrcCommand::ERR_CANTKILLSERVER
484, IrcCommand::ERR_ISCHANSERVICE
485, IrcCommand::ERR_BANNEDNICK
486, IrcCommand::ERR_NONONREG
489, IrcCommand::ERR_VOICENEEDED
491, IrcCommand::ERR_NOOPERHOST
492, IrcCommand::ERR_CANNOTSENDTOUSER
494, IrcCommand::ERR_OWNMODE
501, IrcCommand::ERR_UMODEUNKNOWNFLAG
502, IrcCommand::ERR_USERSDONTMATCH
503, IrcCommand::ERR_GHOSTEDCLIENT
504, IrcCommand::ERR_USERNOTONSERV
513, IrcCommand::ERR_WRONGPONG
517, IrcCommand::ERR_DISABLED
524, IrcCommand::ERR_HELPNOTFOUND
670, IrcCommand::RPL_STARTTLS
671, IrcCommand::RPL_WHOISSECURE
691, IrcCommand::ERR_STARTTLS
702, IrcCommand::RPL_MODLIST
703, IrcCommand::RPL_ENDOFMODLIST
704, IrcCommand::RPL_HELPSTART
705, IrcCommand::RPL_HELPTXT
706, IrcCommand::RPL_ENDOFHELP
707, IrcCommand::ERR_TARGCHANGE
708, IrcCommand::RPL_ETRACEFULL, 10, 10
709, IrcCommand::RPL_ETRACE
710, IrcCommand::RPL_KNOCK
711, IrcCommand::RPL_KNOCKDLVR
712, IrcCommand::ERR_TOOMANYKNOCK
713, IrcCommand::ERR_CHANOPEN
714, IrcCommand::ERR_KNOCKONCHAN
715, IrcCommand::ERR_KNOCKDISABLED
716, IrcCommand::ERR_TARGUMODEG
717, IrcCommand::RPL_TARGNOTIFY
718, IrcCommand::RPL_UMODEGMSG
720, IrcCommand::RPL_OMOTDSTART
721, IrcCommand::RPL_OMOTD
722, IrcCommand::RPL_ENDOFOMOTD
723, IrcCommand::ERR_NOPRIVS
724, IrcCommand::RPL_TESTMASK
725, IrcCommand::RPL_TESTLINE
726, IrcCommand::RPL_NOTESTLINE
727, IrcCommand::RPL_TESTMASKGECO
728, IrcCommand::RPL_QUIETLIST
729, IrcCommand::RPL_ENDOFQUIETLIS
730, IrcCommand::RPL_MONONLINE
731, IrcCommand::RPL_MONOFFLINE
732, IrcCommand::RPL_MONLIST
733, IrcCommand::RPL_ENDOFMONLIS
734, IrcCommand::ERR_MONLISTFULL
740, IrcCommand::RPL_RSACHALLENGE2
741, IrcCommand::RPL_ENDOFRSACHALLENGE2
742, IrcCommand::ERR_MLOCKRESTRICTE
743, IrcCommand::ERR_INVALIDBAN
744, IrcCommand::ERR_TOPICLOCK
750, IrcCommand::RPL_SCANMATCHED
751, IrcCommand::RPL_SCANUMODES
900, IrcCommand::RPL_LOGGEDIN
901, IrcCommand::RPL_LOGGEDOUT
902, IrcCommand::ERR_NICKLOCKED
903, IrcCommand::RPL_SASLSUCCESS
904, IrcCommand::ERR_SASLFAIL
905, IrcCommand::ERR_SASLTOOLONG
906, IrcCommand::ERR_SASLABORTED
907, IrcCommand::ERR_SASLALREADY
908, IrcCommand::RPL_SASLMECHS
ACCOUNT, IrcCommand::ACCOUNT, 1, 1
AUTHENTICATE, IrcCommand::AUTHENTICATE, 1, 1
AWAY, IrcCommand::AWAY, 0, 1
BATCH, IrcCommand::BATCH
BOUNCER, IrcCommand::BOUNCER
CAP, IrcCommand::CAP, 1, 15
CHGHOST, IrcCommand::CHGHOST, 2, 2
ERROR, IrcCommand::ERROR, 1, 1
JOIN, IrcCommand::JOIN, 1, 3
KICK, IrcCommand::KICK, 3, 3
MODE, IrcCommand::MODE, 2, 15
NICK, IrcCommand::NICK, 1, 1
NOTICE, IrcCommand::NOTICE, 2, 2
PART, IrcCommand::PART, 2, 2
PING, IrcCommand::PING, 1, 1
PRIVMSG, IrcCommand::PRIVMSG, 2, 2
QUIT, IrcCommand::QUIT, 1, 1
SETNAME, IrcCommand::SETNAME, 1, 1
TOPIC, IrcCommand::TOPIC, 2, 2

View File

@ -11,14 +11,13 @@ auto snote_thread(Connection * connection) -> void
static char const* const prefix = "*** Notice -- "; static char const* const prefix = "*** Notice -- ";
connection->add_listener<IrcMsgEvent>([connection](IrcMsgEvent& event) connection->add_listener<IrcMsgEvent>([connection](IrcMsgEvent& event)
{ {
auto& irc = event.irc; auto& args = event.irc.args;
if ("NOTICE" == irc.command if (IrcCommand::NOTICE == event.command
&& 2 == irc.args.size() && "*" == args[0]
&& "*" == irc.args[0] && args[1].starts_with(prefix))
&& irc.args[1].starts_with(prefix))
{ {
event.handled_ = true; event.handled_ = true;
connection->make_event<SnoteEvent>(irc.args[1].substr(strlen(prefix))); connection->make_event<SnoteEvent>(args[1].substr(strlen(prefix)));
} }
}); });
} }