Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ Uil(Xm) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought


 Uil(Xm)                        6 January 1993                        Uil(Xm)


 Name

    Uil - invokes the UIL compiler from within an application

 Syntax


    #include <uil/UilDef.h>

    Uil_status_type Uil (command_desc, compile_desc, message_cb,
                         message_data, status_cb, status_data)
    Uil_command_type *command_desc;
    Uil_compile_desc_type *compile_desc;
    Uil_continue_type (*message_cb) ();
    char *message_data;
    Uil_continue_type (*status_cb) ();
    char *status_data;


 Description

    The Uil function provides a callable entry point for the UIL compiler.
    The Uil callable interface can be used to process a UIL source file and
    to generate UID files, as well as return a detailed description of the
    UIL source module in the form of a symbol table (parse tree).

    commanddesc
            Specifies the uil command line.

    compiledesc
            Returns the results of the compilation.

    messagecb
            Specifies a callback function that is called when the compiler
            encounters errors in the UIL source.

    messagedata
            Specifies user data that is passed to the message callback func-
            tion (messagecb). Note that this argument is not interpreted by
            UIL, and is used exclusively by the calling application.

    statuscb
            Specifies a callback function that is called to allow X applica-
            tions to service X events such as updating the screen. This func-
            tion is called at various check points, which have been hard
            coded into the UIL compiler.  The status_update_delay argument in
            command_desc specifies the number of check points to be passed
            before the statuscb function is invoked.

    statusdata
            Specifies user data that is passed to the status callback func-
            tion (status_cb). Note that this argument is not interpreted by
            the UIL compiler, and is used exclusively by the calling applica-
            tion.

    The data structures Uilcommandtype and Uilcompiledesctype are
    detailed below.

       typedef struct Uil_command_type {
       char *source_file;
           /* single source to compile */
       char *resource_file; /* name of output file */
       char *listing_file; /* name of listing file */
       unsigned int *include_dir_count;
           /* number of dirs. in include_dir */
       char *((*include_dir) []);
           /* dir. to search for include files */
       unsigned listing_file_flag: 1;
           /* produce a listing */
       unsigned resource_file_flag: 1;
           /* generate UID output */
       unsigned machine_code_flag: 1;
           /* generate machine code */
       unsigned report_info_msg_flag: 1;
           /* report info messages */
       unsigned report_warn_msg_flag: 1;
           /* report warnings */
       unsigned parse_tree_flag: 1;
           /* generate parse tree */
       unsigned int status_update_delay;
           /* number of times a status point is */
           /* passed before calling status_cb */
           /* function 0 means called every time */
       char *database;
           /* name of database file */
       unsigned database_flag: 1;
           /* read a new database file */
       unsigned use_setlocale_flag: 1;
           /* enable calls to setlocale */
       };

       typedef struct Uil_compile_desc_type {
       unsigned int compiler_version;
           /* version number of compiler */
       unsigned int data_version;
           /* version number of structures */
       char *parse_tree_root; /* parse tree output */
       unsigned int message_count [Uil_k_max_status+1];
       /* array of severity counts */
       };

    Following is a description of the message callback function specified by
    messagecb:

       Uil_continue_type (*message_cb) (message_data, message_number,
                                        severity, msg_buffer, src_buffer,
                                        ptr_buffer, loc_buffer, message_count)
       char    *message_data;
       int     message_number;
       int     severity;
       char    *msg_buffer, *src_buffer;
       char    *ptr_buffer, *loc_buffer;
       int     message_count[];

    Specifies a callback function that UIL invokes instead of printing an
    error message when the compiler encounters an error in the UIL source.
    The callback should return one of these values:

    Uilkterminate
            Tells UIL to terminate processing of the source file.

    Uilkcontinue
            Tells UIL to continue processing the source file.

    Following are the arguments:

    messagedata
            Data supplied by the application as the messagedata argument to
            the Uil function.  UIL does not interpret this data in any way;
            it just passes it to the callback.

    messagenumber
            An index into a table of error messages and severities, for
            internal use by UIL.

    severity
            An integer that indicates the severity of the error.  The possi-
            ble values are the status constants returned by the Uil function.
            See the ``Return value'' section below.

    msgbuffer
            A string that describes the error.

    srcbuffer
            A string consisting of the source line where the error occurred.
            This is not always available; the argument is then NULL.

    ptrbuffer
            A string consisting of whitespace and a printing character in the
            character position corresponding to the column of the source line
            where the error occurred.  This string may be printed beneath the
            source line to provide a visual indication of the column where
            the error occurred.  This is not always available; the argument
            is then NULL.

    locbuffer
            A string identifying the line number and file of the source line
            where the error occurred.  This is not always available; the
            argument is then NULL.

    messagecount
            An array of integers containing the number of diagnostic messages
            issued thus far for each severity level.  To find the number of
            messages issued for the current severity level, use the severity
            argument as the index into this array.

    Following is a description of the status callback function specified by
    statuscb:

    Uil_continue_type (*status_cb) (status_data, percent_complete,
                       lines_processed, current_file, message_count)
    char    *status_data;
    int     percent_complete;
    int     lines_processed;
    char    *current_file;
    int     message_count[];

    Specifies a callback function that is invoked to allow X applications to
    service X events such as updating the screen.  The callback should return
    one of these values:

    Uilkterminate
            Tells UIL to terminate processing of the source file.

    Uilkcontinue
            Tells UIL to continue processing the source file.

    Following are the arguments:

    statusdata
            Data supplied by the application as the statusdata argument to
            the Uil function.  UIL does not interpret this data in any way;
            it just passes it to the callback.

    percentcomplete
            An integer indicating what percentage of the current source file
            has been processed so far.

    linesprocessed
            An integer indicating how many lines of the current source file
            have been read so far.

    currentfile
            A string containing the pathname of the current source file.

    messagecount
            An array of integers containing the number of diagnostic messages
            issued thus far for each severity level.  To find the number of
            messages issued for a given severity level, use the severity
            level as the index into this array.  The possible severity levels
            are the status constants returned by the Uil function.  See the
            ``Return value'' section below.

 Return value

    This function returns one of these status return constants:

    Uilksuccessstatus
            The operation succeeded.

    Uilkinfostatus
            The operation succeeded, and an informational message is
            returned.

    Uilkwarningstatus
            The operation succeeded, and a warning message is returned.

    Uilkerrorstatus
            The operation failed due to an error.

    Uilkseverestatus
            The operation failed due to an error.

 See also

    UilDumpSymbolTable(Xm) and uil(Xm).


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026