XtErrorMsgHandler() XtErrorMsgHandler()
Name
XtErrorMsgHandler - interface definition for high-level error and warning handler procedures.
Synopsis
typedef void (*XtErrorMsgHandler)(String, String, String, String, String *, Cardinal *);
String name;
String type;
String class;
String defaultp;
String *params;
Cardinal *num_params;
Inputs
name Specifies the name that is concatenated with the specified type to form the resource name of the error message.
type Specifies the type that is concatenated with the name to form the resource name of the error message.
class Specifies the resource class of the error message.
defaultp Specifies the default message to use if no error database entry is found.
params Specifies a pointer to a list of values to be substituted in the message.
num_params
Specifies the number of values in the parameter list.
Description
An XtErrorMsgHandler is registered as a high-level error or warning handler with XtAppSetErrorMsgHandler() or XtAppSetWarningMsgHandler().
It is invoked by XtAppErrorMsg() or XtAppWarningMsg().
An XtErrorMsgHandler should look up an error message of the specified name, type, and class in an error database of some sort, and display
the message it finds, or use the supplied default defaultp. Whether a message is found in a database or the default message is used, the
specified params should be substituted into the message using standard printf() substitutions before it is displayed.
Usage
A custom high-level error or warning handler may find it useful to use XtAppGetErrorDatabase() or XtAppGetErrorDatabaseText(). This latter
function looks up an error message in a standard X resource database by concatenating the name and type arguments into the resource name of
the message and using class as the resource class of the message. See XtAppGetErrorDatabaseText(1) for more details.
A high-level error or warning handler should generally display the message it builds by calling the corresponding low-level handler with
XtAppError() or XtAppWarning(). This allows customization at two independent levels of abstraction.
Usually, the name argument will describe the general kind of error, such as invalidParameters or invalidWindow, and the type argument pro-
vides extra information about the error, such as the name of the function in which the error was detected.
Note that application-context-specific error handling is not implemented in MIT release, though the XtApp version of all the error handling
routines are present. Most implementation will support only a single set of error handlers for all application contexts, and if a new han-
dler is registered in one app context, it will take effect in all contexts.
Example
The example below shows the Intrinsics default error message handler:
void _XtDefaultErrorMsg (name,type,class,defaultp,params,num_params)
String name,type,class,defaultp;
String* params;
Cardinal* num_params;
{
char buffer[1000], message[1000];
XtGetErrorDatabaseText(name,type,class,defaultp, buffer, 1000);
/*need better solution here, perhaps use lower level printf primitives? */
if (params == NULL num_params == NULL *num_params == 0)
XtError(buffer);
else {
int i = *num_params;
String par[10];
if (i > 10) i = 10;
bcopy( (char*)params, (char*)par, i * sizeof(String) );
bzero( &par[i], (10-i) * sizeof(String) );
(void) sprintf(message, buffer, par[0], par[1], par[2], par[3],
par[4], par[5], par[6], par[7], par[8], par[9]);
XtError(message);
if (i != *num_params)
XtWarning( "some arguments in previous message were lost" );
}
}
See Also
XtAppErrorMsg(1), XtAppSetErrorMsgHandler(1), XtAppSetWarningMsgHandler(1), XtAppWarningMsg(1),
XtErrorHandler(2).
Xt - Error Handling XtErrorMsgHandler()