SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_CREATE_OB, value)

        <value> being:

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

DESCRIPTION
        Optional hooks to initialize an explicitly loaded
        object/blueprint 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 initalized 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 0 as argument and any result
        is ignored.

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

SEE ALSO
        hooks(C), create_super(H), create_clone(H)
