Uil(3X)Uil(3X)NAMEUil - Invokes the UIL compiler from within an application
SYNOPSIS
#include <uil/UilDef.h>
Uil_status_type Uil (command_desc, compile_desc, message_cb, mes‐
sage_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). Speci‐
fies the uil command line. Returns the results of the compilation.
Specifies a callback function that is called when the compiler encoun‐
ters errors in the UIL source. Specifies user data that is passed to
the message callback function (message_cb). Note that this argument is
not interpreted by UIL, and is used exclusively by the calling applica‐
tion. Specifies a callback function that is called to allow X applica‐
tions to service X events such as updating the screen. This function
is called at various check points, which have been hard coded into the
UIL compiler. The status_update_delay argument in command_desc speci‐
fies the number of check points to be passed before the status_cb func‐
tion is invoked. Specifies user data that is passed to the status
callback function (status_cb). Note that this argument is not inter‐
preted by the UIL compiler, and is used exclusively by the calling
application.
The data structures Uil_command_type and Uil_compile_desc_type are
detailed below.
typedef struct Uil_command_type { char *source_file;
/* single source to compile */ char *resource_file; /* name of out‐
put 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 message_cb:
Uil_continue_type (*message_cb) (message_data, message_number, sever‐
ity, 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: Tells UIL to terminate
processing of the source file. Tells UIL to continue processing the
source file.
Following are the arguments: Data supplied by the application as the
message_data argument to the Uil function. UIL does not interpret this
data in any way; it just passes it to the callback. An index into a
table of error messages and severities, for internal use by UIL. An
integer that indicates the severity of the error. The possible values
are the status constants returned by the Uil function. See the RETURN
VALUE section below. A string that describes the error. A string con‐
sisting of the source line where the error occurred. This is not
always available; the argument is then NULL. A string consisting of
whitespace and a printing character in the character position corre‐
sponding 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. 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. 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
status_cb:
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: Tells UIL to terminate processing of the
source file. Tells UIL to continue processing the source file.
Following are the arguments: Data supplied by the application as the
status_data argument to the Uil function. UIL does not interpret this
data in any way; it just passes it to the callback. An integer indi‐
cating what percentage of the current source file has been processed so
far. An integer indicating how many lines of the current source file
have been read so far. A string containing the pathname of the current
source file. 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: The opera‐
tion succeeded. The operation succeeded, and an informational message
is returned. The operation succeeded, and a warning message is
returned. The operation failed due to an error. The operation failed
due to an error.
SEE ALSOUilDumpSymbolTable(3X), uil(1X)Uil(3X)