5#ifndef IDOL_MOSEKCALLBACKI_H 
    6#define IDOL_MOSEKCALLBACKI_H 
   11#include "idol/mixed-integer/optimizers/callbacks/Callback.h" 
   14    namespace Optimizers {
 
   20class idol::MosekCallbackI : 
public CallbackI {
 
   22    Optimizers::Mosek& m_parent;
 
   23    std::list<std::unique_ptr<Callback>> m_callbacks;
 
   26    const double *m_double_info = 
nullptr;
 
   27    const int32_t *m_int32_info = 
nullptr;
 
   28    const int64_t *m_int64_info = 
nullptr;
 
   31    explicit MosekCallbackI(Optimizers::Mosek& t_parent);
 
   33    void add_callback(Callback* t_callback);
 
   35    void callback(MSKcallbackcodee t_caller, 
const double * t_double_info, 
const int32_t* t_int32_info, 
const int64_t* t_int64_info);
 
   37    void call(CallbackEvent t_event);
 
   39    const Model &original_model() 
const override;
 
   41    void add_user_cut(
const TempCtr &t_cut) 
override;
 
   43    void add_lazy_cut(
const TempCtr &t_cut) 
override;
 
   45    void submit_heuristic_solution(PrimalPoint t_solution) 
override;
 
   47    PrimalPoint primal_solution() 
const override;
 
   49    const Timer &time() 
const override;
 
   51    double best_obj() 
const override;
 
   53    double best_bound() 
const override;
 
   55    void terminate() 
override;