1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2021 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15
16 /**@file message_default.c
17 * @ingroup PUBLICMETHODS
18 * @brief default message handler
19 * @author Stefan Heinz
20 */
21
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23
24 #include "scip/pub_message.h"
25 #include "scip/message_default.h"
26 #include "scip/struct_message.h"
27
28 /*
29 * Local methods
30 */
31
32 /** prints a message to the given file stream and writes the same messate to the log file */
33 static
logMessage(FILE * file,const char * msg)34 void logMessage(
35 FILE* file, /**< file stream to print message into */
36 const char* msg /**< message to print (or NULL to flush) */
37 )
38 {
39 if ( msg != NULL )
40 fputs(msg, file);
41 fflush(file);
42 }
43
44 /*
45 * Callback methods of message handler
46 */
47
48 /** warning message print method of message handler */
49 static
SCIP_DECL_MESSAGEWARNING(messageWarningDefault)50 SCIP_DECL_MESSAGEWARNING(messageWarningDefault)
51 { /*lint --e{715}*/
52 if ( msg != NULL && msg[0] != '\0' && msg[0] != '\n' )
53 fputs("WARNING: ", file);
54
55 logMessage(file, msg);
56 }
57
58 /** dialog message print method of message handler */
59 static
SCIP_DECL_MESSAGEDIALOG(messageDialogDefault)60 SCIP_DECL_MESSAGEDIALOG(messageDialogDefault)
61 { /*lint --e{715}*/
62 logMessage(file, msg);
63 }
64
65 /** info message print method of message handler */
66 static
SCIP_DECL_MESSAGEINFO(messageInfoDefault)67 SCIP_DECL_MESSAGEINFO(messageInfoDefault)
68 { /*lint --e{715}*/
69 logMessage(file, msg);
70 }
71
72 /** Create default message handler. To free the message handler use SCIPmessagehdlrRelease(). */
SCIPcreateMessagehdlrDefault(SCIP_MESSAGEHDLR ** messagehdlr,SCIP_Bool bufferedoutput,const char * filename,SCIP_Bool quiet)73 SCIP_RETCODE SCIPcreateMessagehdlrDefault(
74 SCIP_MESSAGEHDLR** messagehdlr, /**< pointer to store message handler */
75 SCIP_Bool bufferedoutput, /**< should the output be buffered up to the next newline? */
76 const char* filename, /**< name of log file, or NULL (stdout) */
77 SCIP_Bool quiet /**< should screen messages be suppressed? */
78 )
79 {
80 /* create message handler */
81 SCIP_CALL( SCIPmessagehdlrCreate(messagehdlr, bufferedoutput, filename, quiet,
82 messageWarningDefault, messageDialogDefault, messageInfoDefault,
83 NULL, NULL) );
84
85 return SCIP_OKAY;
86 }
87