Uil - Invokes the UIL compiler from within an application
#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;
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). Specifies
the uil command line. Returns the results of the
compilation. Specifies a callback function that is called
when the compiler encounters 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
application. Specifies a callback function that is called
to allow X applications 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 specifies
the number of check points to be passed before the status_cb
function is invoked. Specifies user data that is
passed to the status callback function (status_cb). Note
that this argument is not interpreted 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 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 message_cb:
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: 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 consisting 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
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. 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 indicating 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.
This function returns one of these status return constants:
The operation 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.
UilDumpSymbolTable(3X), uil(1X)
Uil(3X)
[ Back ] |