21 #include "absl/status/statusor.h"
24 #include "scip/pub_message.h"
25 #include "scip/type_message.h"
46 SCIP_RETCODE SCIPMessageHandlerFree(SCIP_MESSAGEHDLR*
const handler) {
49 CHECK_EQ(SCIPmessagehdlrSetData(handler,
nullptr), SCIP_OKAY);
55 SCIP_MESSAGEHDLR*
const handler,
89 void SCIPMessageHandlerInfo(SCIP_MESSAGEHDLR*
const handler, FILE*,
95 void SCIPMessageHandlerDialog(SCIP_MESSAGEHDLR*
const handler, FILE*,
101 void SCIPMessageHandlerWarning(SCIP_MESSAGEHDLR*
const handler, FILE*,
113 void ReleaseSCIPMessageHandler(SCIP_MESSAGEHDLR* handler) {
114 if (handler !=
nullptr) {
115 CHECK_EQ(SCIPmessagehdlrRelease(&handler), SCIP_OKAY);
122 if (handler !=
nullptr) {
123 SCIPmessagehdlrCapture(handler);
125 return {handler, ReleaseSCIPMessageHandler};
132 auto data = std::make_unique<SCIP_MessagehdlrData>(gscip_message_handler);
133 SCIP_MESSAGEHDLR* message_handler =
nullptr;
135 SCIPmessagehdlrCreate(&message_handler,
139 SCIPMessageHandlerWarning,
140 SCIPMessageHandlerDialog,
141 SCIPMessageHandlerInfo,
142 SCIPMessageHandlerFree,
157 if (handler_ !=
nullptr) {
#define CHECK_EQ(val1, val2)
ScopedSCIPMessageHandlerDisabler(const MessageHandlerPtr &handler)
~ScopedSCIPMessageHandlerDisabler()
absl::StatusOr< MessageHandlerPtr > MakeSCIPMessageHandler(const GScipMessageHandler gscip_message_handler)
MessageHandlerPtr CaptureMessageHandlerPtr(SCIP_MESSAGEHDLR *const handler)
std::unique_ptr< SCIP_MESSAGEHDLR, void(*)(SCIP_MESSAGEHDLR *)> MessageHandlerPtr
Collection of objects used to extend the Constraint Solver library.
std::function< void(GScipMessageType type, absl::string_view message)> GScipMessageHandler
#define RETURN_IF_SCIP_ERROR(x)
std::atomic< bool > disabled
SCIP_MessagehdlrData(const operations_research::GScipMessageHandler gscip_message_handler)
const operations_research::GScipMessageHandler gscip_message_handler