XSLPsetcbmessage
XSLPsetcbmessage |
Purpose
Set a user callback to be called whenever Xpress NonLinear outputs a line of text
Synopsis
int XPRS_CC XSLPsetcbmessage(XSLPprob Prob, void (XPRS_CC *UserFunc) (XSLPprob myProb, void *myObject, char *msg, int len, int msgtype), void *Object);
Arguments
|
Prob
|
The current SLP problem.
|
||||||
|
UserFunc
|
The function to be called whenever Xpress NonLinear outputs a line of text.
UserFunc does not return a value.
|
||||||
|
myProb
|
The problem passed to the callback function.
|
||||||
|
myObject
|
The user-defined object passed as
Object to
XSLPsetcbmessage.
|
||||||
|
msg
|
Character buffer holding the string to be output.
|
||||||
|
len
|
Length in characters of
msg excluding the null terminator.
|
||||||
|
msgtype
|
Type of message. The following are system-defined:
A negative value indicates that the Optimizer is about to finish and any buffers should be flushed at this time. |
||||||
|
Object
|
Address of a user-defined object, which can be used for any purpose by the function.
Object is passed to
UserFunc as
myObject.
|
Example
The following example creates a log file into which all messages are placed. System messages are also printed on standard output:
FILE *logfile;
logfile = fopen("myLog","w");
XSLPsetcbmessage(Prob, CBMessage, logfile);
A suitable callback function could resemble the following:
void XPRS_CC CBMessage(XSLPprob Prob, void *Obj,
char *msg, int len, int msgtype) {
FILE *logfile;
logfile = (FILE *) Obj;
if (msgtype < 0) {
fflush(stdout);
if (logfile) fflush(logfile);
return;
}
switch (msgtype) {
case 1: /* information */
case 3: /* warning */
case 4: /* error */
printf("%s\n",msg);
default: /* user */
if (logfile)
fprintf(logfile,"%s\n",msg);
break;
}
return;
}
Further information
If a user message callback is defined then screen output is automatically disabled.
Output can be directed into a log file by using XSLPsetlogfile.
Related topics
