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. User-defined values are also possible for msgtype which can be passed using XSLPprintmsg | ||||||
| 
     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
 
  
