SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_RESET, value)

        <value> being:

          void|int <closure> ( void )
          void <name>(1)

DESCRIPTION
        Optional hook to reset an object. Hook setting can be unbound
        lambda closures, or the name of the function (static or public)
        to call in the object.

        If the hook is a closure, it is bound to the object to be
        reset and called with no argument.

        If the result of this call is a positive number, it is used as
        the interval to wait before the next reset(). If the result
        is 0, the default interval computed from TIME_TO_RESET is
        used. If the result is a negative number, the object will not
        be reset again, unless directed otherwise by set_next_reset().

        If the hook is defined as the name of an lfun in the object,
        it is called in the object with 1 as argument, and any result
        is ignored. In this call the previous_object() is the object
        initiating the reset. If the function does not exist, the
        object won't be reset again.

        Note that an object is only reset by call to this hook if it
        has been used since the last reset.

HISTORY
        LDMud 3.2.10 allowed static functions to be given by name.

SEE ALSO
        hooks(C)
