[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]
Motif 2.1 Programmer's Reference
Uil
Invokes the UIL compiler from within an application
Format
#include
<uil/UilDef.h>
Uil_status_type Uil
Uil_command_type
*command_descUil_compile_desc_type
**compile_descUil_continue_type (*message_cb)
()char *message_dataUil_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).
command_descSpecifies the uil
command line.
compile_descReturns the results of the compilation.
message_cbSpecifies a callback function that is called when the compiler encounters
errors in the UIL source.
message_dataSpecifies 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.
status_cbSpecifies 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.
status_dataSpecifies 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.
Following are the data structures Uil_command_type and
Uil_compile_desc_type:
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[];
This function 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 the following values:
Uil_k_terminateTerminate processing of the source file
Uil_k_continueContinue processing the source file
The arguments are
message_dataData 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.
message_numberAn index into a table of error messages and severities for internal use by
UIL.
severityAn integer that indicates the severity of the error. The possible values
are the status constants returned by the Uil function. See Return
Value
for more information.
msg_bufferA string that describes the error.
src_bufferA string consisting of the source line where the error occurred. This
string is not always available. In this case, the argument is NULL.
ptr_bufferA 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 string is not
always available. In this case, the argument is NULL.
loc_bufferA 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.
message_countAn 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[];
This function 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 the following values:
Uil_k_terminateTerminate processing of the source file
Uil_k_continueContinue processing the source file
The arguments are
status_dataData 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.
percent_completeAn integer indicating what percentage of the current source file has been
processed so far.
lines_processedAn integer indicating how many lines of the current source file have been
read so far.
current_fileA string containing the pathname of the current source file.
message_countAn 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 Return Value
for more information.
RETURN
This function returns one of the following status return constants:
Uil_k_success_statusThe operation succeeded.
Uil_k_info_statusThe operation succeeded. An informational message is returned.
Uil_k_warning_statusThe operation succeeded. A warning message is returned.
Uil_k_error_statusThe operation failed due to an error.
Uil_k_severe_statusThe operation failed due to an error.
RELATED
UilDumpSymbolTable
(3) and uil
(1).
[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]