SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_AUTO_INCLUDE, value)

        <value> being:

          string <text>
          string <closure>(string base_file, string current_file
                          , int sys_include)

DESCRIPTION
        Optional hook specifying a string to be included before
        the source of every compiled LPC object.
        Hook setting can be a string or a closure.

        If the setting is a string, it will be automatically included before
        the source of every compiled LPC object.

        If the setting is a closure, it is called for every file
        opened by the compiler. <base_file> will be the filename of
        the compiled object, <current_file> the name of a file
        included directly or indirectly by the <base_file>. When the
        <base_file> itself is opened, <current_file> will be 0. For an
        included file, <sys_include> will be TRUE if it is a <>-type
        include.

        If the result from the call is a string, it will be included
        before the actual text of the file.

        In both cases, the string will be included as-is; in
        particular no terminating '\n' will be added.

HISTORY

SEE ALSO
        hooks(C), include_dirs(H)
