16 #include "absl/status/status.h"
17 #include "absl/strings/string_view.h"
22 #include "scip/scip.h"
23 #include "scip/scip_event.h"
24 #include "scip/type_event.h"
34 VLOG(3) <<
"EventExec";
39 SCIP_EVENTHDLRDATA* event_handler_data = SCIPeventhdlrGetData(eventhdlr);
40 CHECK_NE(event_handler_data,
nullptr);
43 event_handler_data->gscip, SCIPeventGetType(event)));
49 VLOG(3) <<
"EventInit";
53 SCIP_EVENTHDLRDATA* event_handler_data = SCIPeventhdlrGetData(eventhdlr);
54 CHECK_NE(event_handler_data,
nullptr);
56 for (
const SCIP_EVENTTYPE event_type :
58 SCIP_CALL(SCIPcatchEvent(scip, event_type, eventhdlr,
nullptr,
nullptr));
65 VLOG(3) <<
"EventFree";
69 SCIP_EVENTHDLRDATA* event_handler_data = SCIPeventhdlrGetData(eventhdlr);
70 CHECK_NE(event_handler_data,
nullptr);
71 delete event_handler_data;
72 SCIPeventhdlrSetData(eventhdlr,
nullptr);
80 SCIP_EVENTHDLRDATA* event_handler_data =
new SCIP_EVENTHDLRDATA;
81 event_handler_data->gscip = scip;
82 event_handler_data->handler = handler;
83 SCIP_EVENTHDLR* event_handler =
nullptr;
87 event_handler_data)));
90 SCIPsetEventhdlrInit(scip->
scip(), event_handler, EventInit)));
92 SCIPsetEventhdlrFree(scip->
scip(), event_handler, EventFree)));
#define CHECK_NE(val1, val2)
#define VLOG(verboselevel)
const GScipEventHandlerDescription & description() const
virtual void Execute(GScipEventHandlerContext context)=0
static SCIP_DECL_EVENTFREE(EventFree)
static SCIP_DECL_EVENTEXEC(EventExec)
static SCIP_DECL_EVENTINIT(EventInit)
Collection of objects used to extend the Constraint Solver library.
void RegisterGScipEventHandler(GScip *scip, GScipEventHandler *handler)
#define SCIP_TO_STATUS(x)
operations_research::GScip * gscip
operations_research::GScipEventHandler * handler
std::vector< SCIP_EVENTTYPE > events_to_catch_from_start