SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_CREATE_SUPER, value)

        <value> being:

          void <name>   ( void )
          int <closure> ( void )
          int <closure> (object obj_to_init)

DESCRIPTION
        Optional hooks to initialize a blueprint which is loaded by
        inheritance after creation.

        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 expecting an argument, it is bound
        to the current object and called with the created object as
        argument. If the hook is a closure without arguments, it is bound to
        the object to be initialized and called.

        If the result of the closure call is a non-zero number, it is used
        as the interval to wait before the first reset(), else the default
        interval computed from TIME_TO_RESET is used.

        If the hook is defined as the name of an lfun in the object,
        it is called in the object with no argument and any result
        is ignored.

HISTORY
        LDMud 3.2.10 allowed static functions to be given by name.
        LDMud 3.6.5 removed the argument given for the lfun call.

SEE ALSO
        hooks(C), create_ob(H), create_clone(H), create_lwobject(H)
