/* * Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team * Copyright © 2005 William Pitcock, et al. * Rights to this code are as documented in doc/pod/license.pod. * * Commandlist manipulation routines. * * $Id: commandtree.h,v 1.2 2007/07/21 01:29:07 pippijn Exp $ */ #ifndef COMMANDLIST_H #define COMMANDLIST_H #include #include struct command_t { char const * const name; char const * const desc; char const *access; const int maxparc; void (*cmd) (sourceinfo_t *, const int parc, char *parv[]); void exec (service_t *svs, sourceinfo_t *si, int parc, char *parv[]) const; }; E command_t null_cmd; struct cmdvec : std::vector { typedef cmdvec::iterator iterator; command_t const *find (char const *command); }; E cmdvec null_cmdvec; /* struct for help command hash table */ struct helpentry_t : zero_initialised { char *name; char const * const access; char *file; void (*func) (sourceinfo_t *si); }; typedef std::vector helpvec; /* commandtree.c */ void operator << (cmdvec *commandlist, command_t const &cmd); void operator << (cmdvec &commandlist, command_t const *cmd[]); void operator >> (cmdvec *commandlist, command_t const &cmd); void operator >> (cmdvec &commandlist, command_t const *cmd[]); E void command_exec_split (service_t *svs, sourceinfo_t *si, char *cmd, char *text, cmdvec *commandlist); E void command_help (sourceinfo_t *si, cmdvec *commandlist); E void command_help_short (sourceinfo_t *si, cmdvec *commandlist, char *maincmds); /* help.c */ E void help_display (sourceinfo_t *si, char *command, helpvec *list); E void help_addentry (helpvec *list, char *topic, char *fname, void (*func) (sourceinfo_t *si)); E void help_delentry (helpvec *list, char *name); #endif