Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
coin.h
Go to the documentation of this file.
1
32#pragma once
33
34// IWYU pragma: always_keep
35
36#include <ogdf/basic/Logger.h>
37
39#include <coin/OsiSolverInterface.hpp> // IWYU pragma: export
40// not used here but always necessary when using COIN
41#include <coin/CoinPackedVector.hpp> // IWYU pragma: export
42
43namespace ogdf {
44
47public:
49
53
55 static OsiSolverInterface* createCorrectOsiSolverInterface() {
56#ifdef COIN_OSI_CPX
57 OsiCpxSolverInterface* ret = new OsiCpxSolverInterface(); // CPLEX
58#elif defined(COIN_OSI_GRB)
59 OsiGrbSolverInterface* ret = new OsiGrbSolverInterface(); // Gurobi
60#elif defined(COIN_OSI_SYM)
61 OsiSymSolverInterface* ret = new OsiSymSolverInterface(); // Symphony
62 ret->setSymParam(OsiSymVerbosity, -2);
63#else // COIN_OSI_CLP
64 OsiClpSolverInterface* ret = new OsiClpSolverInterface(); // Coin-OR LP
65#endif
66 updateLogging(ret);
67 return ret;
68 }
69
71 static void updateLogging(OsiSolverInterface* osi) {
72 if (CoinLog.effectiveStatisticMode()) {
73 osi->messageHandler()->setLogLevel(0);
74 } else {
75 switch (CoinLog.effectiveLogLevel()) {
76 //- 0 - none
77 //- 1 - minimal
78 //- 2 - normal low
79 //- 3 - normal high
80 //- 4 - verbose
81 case Logger::Level::Minor:
82 osi->messageHandler()->setLogLevel(4);
83 break;
84 case Logger::Level::Medium:
85 osi->messageHandler()->setLogLevel(3);
86 break;
87 case Logger::Level::Default:
88 osi->messageHandler()->setLogLevel(2);
89 break;
90 case Logger::Level::High:
91 osi->messageHandler()->setLogLevel(1);
92 break;
93 case Logger::Level::Alarm:
94 osi->messageHandler()->setLogLevel(0);
95 break;
96 case Logger::Level::Force:
97 osi->messageHandler()->setLogLevel(0);
98 break;
99 }
100 }
101 }
102};
103
104}
Contains logging functionality.
If you use COIN-OR, you should use this class.
Definition coin.h:46
static void updateLogging(OsiSolverInterface *osi)
Update the log level of the CoinMessageHandler associated with osi to match the log level of the ogdf...
Definition coin.h:71
static Logger CoinLog
The OGDF Logger which will determine the log level for a new instance returned by createCorrectOsiSol...
Definition coin.h:52
static OsiSolverInterface * createCorrectOsiSolverInterface()
Get a new solver and set its initial log level according to the level of CoinLog.
Definition coin.h:55
Centralized global and local logging facility working on streams like std::cout.
Definition Logger.h:102
Level effectiveLogLevel() const
obtain the effective log-level for the Logger-object (i.e., resolve the dependencies on the global se...
Definition Logger.h:290
bool effectiveStatisticMode() const
returns true if the Logger-object is effectively in statistic-mode (as this might be depending on the...
Definition Logger.h:299
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
The namespace for all OGDF objects.