SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_CREATE_LWOBJECT, value)

        <value> being:

          void <name>    (...)
          void <closure> ()
          void <closure> (lwobject obj_to_init, ...)

DESCRIPTION
        Optional hooks to initialize a lightweight object after creation.
        Hook setting can be any closure, or the name of the function
        (static or public) to call in the object.

        If the hook is an unbound lambda closure expecting arguments,
        it is bound to the current object and called with the created
        object as the first argument and any further arguments from the
        new_lwobject() call. If the hook is an unbound lambda closure
        without arguments, it is bound to the object to be initalized and
        called. If the hook is any other type of closure, it is called
        with the created object as the first argument and any further
        arguments from the new_lwobject() call.

        If the hook is defined as the name of an lfun in the lightweight
        object, it is called in the new lwobject with any further arguments
        from the new_lwobject() call.

HISTORY
        LDMud 3.6.5 introduced lightweight objects.

SEE ALSO
        hooks(C), create_lwobject_copy(H), create_lwobject_restore(H),
        create_ob(H), create_super(H), create_clone(H)
