47#define va_copy(dest, src) do { BMScopyMemory(&dest, &src); } while( 0 )
51#if defined(_MSC_VER) && _MSC_VER < 1900
52#define snprintf _snprintf
53#define vsnprintf _vsnprintf
84 outputfunc(messagehdlr, file1, msg);
86 outputfunc(messagehdlr, file2, msg);
96 assert( buffer[*bufferlen] ==
'\0' );
98 outputfunc(messagehdlr, file1, buffer);
100 outputfunc(messagehdlr, file2, buffer);
108 if ( ! usefile1 && ! usefile2 )
119 buffer[(*bufferlen)++] = *(s++);
120 buffer[*bufferlen] =
'\0';
123 outputfunc(messagehdlr, file1, buffer);
125 outputfunc(messagehdlr, file2, buffer);
130 buffer[(*bufferlen)++] = *(s++);
132 buffer[*bufferlen] =
'\0';
164 if( staticErrorPrinting !=
NULL )
175 if ( messagehdlr !=
NULL && messagehdlr->messagewarning !=
NULL && (! messagehdlr->
quiet || messagehdlr->
logfile !=
NULL) )
190 if ( messagehdlr !=
NULL && messagehdlr->messagedialog !=
NULL )
192 if ( (file ==
NULL || file == stdout) && ! messagehdlr->
quiet )
197 else if ( msg !=
NULL )
216 if ( messagehdlr !=
NULL && messagehdlr->messageinfo !=
NULL )
218 if ( (file ==
NULL || file == stdout) && ! messagehdlr->
quiet )
223 else if ( msg !=
NULL )
241 if( filename !=
NULL )
243 messagehdlr->
logfile = fopen(filename,
"a");
262 if( *messagehdlr !=
NULL )
269 if( (*messagehdlr)->messagehdlrfree !=
NULL )
272 SCIP_CALL( (*messagehdlr)->messagehdlrfree(*messagehdlr) );
276 if( (*messagehdlr)->logfile !=
NULL )
278 fclose((*messagehdlr)->logfile);
298 const char* filename,
308 (*messagehdlr)->messagewarning = messagewarning;
309 (*messagehdlr)->messagedialog = messagedialog;
310 (*messagehdlr)->messageinfo = messageinfo;
311 (*messagehdlr)->messagehdlrfree = messagehdlrfree;
312 (*messagehdlr)->messagehdlrdata = messagehdlrdata;
313 (*messagehdlr)->warningbuffer =
NULL;
314 (*messagehdlr)->dialogbuffer =
NULL;
315 (*messagehdlr)->infobuffer =
NULL;
316 (*messagehdlr)->warningbufferlen = 0;
317 (*messagehdlr)->dialogbufferlen = 0;
318 (*messagehdlr)->infobufferlen = 0;
319 (*messagehdlr)->nuses = 1;
321 (*messagehdlr)->quiet = quiet;
330 (*messagehdlr)->warningbuffer[0] =
'\0';
331 (*messagehdlr)->dialogbuffer[0] =
'\0';
332 (*messagehdlr)->infobuffer[0] =
'\0';
343 if( messagehdlr !=
NULL )
344 ++messagehdlr->
nuses;
354 if( *messagehdlr ==
NULL )
357 assert((*messagehdlr)->nuses >= 1);
360 --(*messagehdlr)->nuses;
363 if( (*messagehdlr)->nuses == 0 )
384 if( messagehdlr ==
NULL )
423 messagehdlr->
quiet = quiet;
429 const char* formatstr,
435 va_start(ap, formatstr);
443 const char* formatstr,
453 const char* formatstr,
459 va_start(ap, formatstr);
467 const char* formatstr,
494 m = vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
496 vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
512 const char* formatstr,
518 va_start(ap, formatstr);
526 const char* formatstr,
537 const char* formatstr,
543 va_start(ap, formatstr);
552 const char* formatstr,
579 m = vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
581 vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
596 const char* formatstr,
602 va_start(ap, formatstr);
610 const char* formatstr,
621 const char* formatstr,
627 va_start(ap, formatstr);
636 const char* formatstr,
663 m = vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
665 vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
682 const char* formatstr,
688 va_start(ap, formatstr);
698 const char* formatstr,
711 const char* formatstr,
717 va_start(ap, formatstr);
728 const char* formatstr,
736 if( msgverblevel <= verblevel )
761 m = vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
763 vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
778 const char* sourcefile,
785 (void) snprintf(msg,
SCIP_MAXSTRLEN,
"[%s:%d] ERROR: ", sourcefile, sourceline);
792 const char* formatstr,
798 va_start(ap, formatstr);
805 const char* formatstr,
832 m = vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
834 vsnprintf(bigmsg, (
size_t) n+1, formatstr, aq);
856 staticErrorPrinting = errorPrinting;
868 staticErrorPrinting = errorPrintingDefault;
882#undef SCIPmessagehdlrGetData
883#undef SCIPmessagehdlrGetLogfile
884#undef SCIPmessagehdlrIsQuiet
891 if( messagehdlr !=
NULL )
903 if( messagehdlr ==
NULL )
914 return (messagehdlr ==
NULL || messagehdlr->
quiet);
common defines and data types used in all packages of SCIP
assert(minobj< SCIPgetCutoffbound(scip))
memory allocation routines
#define BMSfreeMemory(ptr)
#define BMSallocMemoryArray(ptr, num)
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemorySize(ptr, size)
#define BMSallocMemory(ptr)
void SCIPmessagePrintError(const char *formatstr,...)
#define va_copy(dest, src)
static void messagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *msg)
void SCIPmessageVPrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr, va_list ap)
SCIP_RETCODE SCIPmessagehdlrCreate(SCIP_MESSAGEHDLR **messagehdlr, SCIP_Bool bufferedoutput, const char *filename, SCIP_Bool quiet, SCIP_DECL_MESSAGEWARNING((*messagewarning)), SCIP_DECL_MESSAGEDIALOG((*messagedialog)), SCIP_DECL_MESSAGEINFO((*messageinfo)), SCIP_DECL_MESSAGEHDLRFREE((*messagehdlrfree)), SCIP_MESSAGEHDLRDATA *messagehdlrdata)
void SCIPmessageFPrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPmessageVPrintDialog(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap)
static void handleMessage(SCIP_MESSAGEHDLR *messagehdlr, SCIP_DECL_MESSAGEOUTPUTFUNC(outputfunc), FILE *file1, SCIP_Bool usefile1, FILE *file2, SCIP_Bool usefile2, const char *msg, char *buffer, int *bufferlen)
static void messagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *msg)
SCIP_MESSAGEHDLRDATA * SCIPmessagehdlrGetData(SCIP_MESSAGEHDLR *messagehdlr)
static SCIP_RETCODE messagehdlrFree(SCIP_MESSAGEHDLR **messagehdlr)
void SCIPmessageFPrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
static void * staticErrorPrintingData
void SCIPmessageVFPrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap)
void SCIPmessageVFPrintDialog(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr, va_list ap)
void SCIPmessagehdlrSetLogfile(SCIP_MESSAGEHDLR *messagehdlr, const char *filename)
static void messagehdlrOpenLogfile(SCIP_MESSAGEHDLR *messagehdlr, const char *filename)
void SCIPmessageVFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr, va_list ap)
void SCIPmessageSetErrorPrinting(SCIP_DECL_ERRORPRINTING((*errorPrinting)), void *data)
void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPmessageVPrintError(const char *formatstr, va_list ap)
void SCIPmessagePrintDialog(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_RETCODE SCIPmessagehdlrRelease(SCIP_MESSAGEHDLR **messagehdlr)
void SCIPmessageVFPrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr, va_list ap)
void SCIPmessagehdlrSetQuiet(SCIP_MESSAGEHDLR *messagehdlr, SCIP_Bool quiet)
void SCIPmessageVPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_Bool SCIPmessagehdlrIsQuiet(SCIP_MESSAGEHDLR *messagehdlr)
static void messagePrintDialog(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *msg)
FILE * SCIPmessagehdlrGetLogfile(SCIP_MESSAGEHDLR *messagehdlr)
SCIP_RETCODE SCIPmessagehdlrSetData(SCIP_MESSAGEHDLR *messagehdlr, SCIP_MESSAGEHDLRDATA *messagehdlrdata)
void SCIPmessageVPrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap)
void SCIPmessagehdlrCapture(SCIP_MESSAGEHDLR *messagehdlr)
void SCIPmessageSetErrorPrintingDefault(void)
void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)
void SCIPmessageFPrintDialog(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
static void messagePrintError(FILE *file, const char *msg)
void SCIPmessagePrintErrorHeader(const char *sourcefile, int sourceline)
public methods for message output
public data structures and miscellaneous methods
SCIP_MESSAGEHDLRDATA * messagehdlrdata
datastructures for problem statistics
#define SCIP_DECL_MESSAGEOUTPUTFUNC(x)
#define SCIP_DECL_MESSAGEWARNING(x)
#define SCIP_DECL_MESSAGEINFO(x)
#define SCIP_DECL_MESSAGEDIALOG(x)
enum SCIP_VerbLevel SCIP_VERBLEVEL
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
#define SCIP_DECL_MESSAGEHDLRFREE(x)
#define SCIP_DECL_ERRORPRINTING(x)
struct SCIP_MessagehdlrData SCIP_MESSAGEHDLRDATA
enum SCIP_Retcode SCIP_RETCODE