/* Do not remove the headers from this file! see /USAGE for more info. */

/*
** verb_d.c
**
** Manages all of the verbs in the system.  There only needs to be
** a single copy of this object, so we use a daemon.
**
** NOTE: it is possible to add all of the parse rules here rather
** than in the individual verb files.  This allows a person to
** see all of the verbs as a whole.  Doing it that way, though,
** is not very encapsulated.  If each verb object does it, then
** that object can define the rules AND the responses for each
** rule.  Breaking up those two concepts means that this file
** would have to know the rules that the verb object can understand.
*/

#include <commands.h>

/*
** reload_verb()
**
** Load or reload the given verb file
*/
private void reload_verb(string file)
{
    object ob;
    string err;

    if ( ob = find_object(CMD_DIR_VERBS "/" + file) )
	destruct(ob);
    err = catch
    {

	load_object(CMD_DIR_VERBS "/" + file);
    };
    if (err != 0)
	printf("VERB_D failed to load: %s\n", CMD_DIR_VERBS "/" + file);
}

/*
** create()
**
** When this daemon is loaded, get each of the verb objects loaded.
** Each verb object will define its rules.
*/
void create()
{
    string * files;

    files = get_dir(CMD_DIR_VERBS "/*.c");
    map_array(files, (: reload_verb :));
}
