8#include "idol/general/utils/Point.h" 
   27    static std::ostream &operator<<(std::ostream& t_os, idol::CallbackEvent t_event) {
 
   30            case IncumbentSolution: 
return t_os << 
"IncumbentSolution";
 
   31            case InvalidSolution: 
return t_os << 
"InvalidSolution";
 
   32            case NodeLoaded: 
return t_os << 
"NodeLoaded";
 
   33            case PrunedSolution: 
return t_os << 
"PrunedSolution";
 
   44    friend class ::idol::Callback;
 
   46    [[nodiscard]] 
virtual const Model& original_model() 
const = 0;
 
   48    virtual void add_user_cut(
const TempCtr& t_cut) = 0;
 
   50    virtual void add_lazy_cut(
const TempCtr& t_cut) = 0;
 
   52    virtual void submit_heuristic_solution(
PrimalPoint t_solution) = 0;
 
   54    [[nodiscard]] 
virtual PrimalPoint primal_solution() 
const = 0;
 
   56    [[nodiscard]] 
virtual const Timer& time() 
const = 0;
 
   58    [[nodiscard]] 
virtual double best_obj() 
const = 0;
 
   60    [[nodiscard]] 
virtual double best_bound() 
const = 0;
 
   62    virtual void terminate() = 0;
 
   64    void execute(
Callback& t_cb, CallbackEvent t_event);
 
 
   70    friend class ::idol::CallbackI;
 
  134    void throw_if_no_interface() 
const;
 
 
const Timer & time() const
virtual void add_lazy_cut(const TempCtr &t_cut)
virtual void operator()(CallbackEvent t_event)=0
virtual void submit_heuristic_solution(const PrimalPoint &t_solution)
virtual PrimalPoint primal_solution() const
virtual void add_user_cut(const TempCtr &t_cut)
virtual const Model & original_model() const
double best_bound() const