MCPcopy Create free account
hub / github.com/cvanaret/Uno / CUserCallbacks

Class CUserCallbacks

interfaces/C/Uno_C_API.cpp:347–382  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

345};
346
347class CUserCallbacks: public UserCallbacks {
348public:
349 CUserCallbacks(uno_notify_acceptable_iterate_callback notify_acceptable_iterate_callback,
350 uno_termination_callback termination_callback, void* user_data): UserCallbacks(),
351 notify_acceptable_iterate_callback(notify_acceptable_iterate_callback),
352 termination_callback(termination_callback),
353 user_data(user_data) { };
354
355 void notify_acceptable_iterate(const Vector<double>& primals, const Multipliers& multipliers, double objective_multiplier,
356 double primal_feasibility_residual, double stationarity_residual, double complementarity_residual) override {
357 if (this->notify_acceptable_iterate_callback != nullptr) {
358 this->notify_acceptable_iterate_callback(static_cast<uno_int>(primals.size()),
359 static_cast<uno_int>(multipliers.constraints.size()), primals.data(), multipliers.lower_bounds.data(),
360 multipliers.upper_bounds.data(), multipliers.constraints.data(), objective_multiplier, primal_feasibility_residual,
361 stationarity_residual, complementarity_residual, this->user_data);
362 }
363 }
364
365 bool termination(const Vector<double>& primals, const Multipliers& multipliers, double objective_multiplier,
366 double primal_feasibility_residual, double stationarity_residual, double complementarity_residual) override {
367 if (this->termination_callback) {
368 return this->termination_callback(static_cast<uno_int>(primals.size()),
369 static_cast<uno_int>(multipliers.constraints.size()), primals.data(), multipliers.lower_bounds.data(),
370 multipliers.upper_bounds.data(), multipliers.constraints.data(), objective_multiplier, primal_feasibility_residual,
371 stationarity_residual, complementarity_residual, this->user_data) == 0;
372 }
373 else {
374 return false; // no user termination
375 }
376 }
377
378private:
379 uno_notify_acceptable_iterate_callback notify_acceptable_iterate_callback;
380 uno_termination_callback termination_callback;
381 void* user_data;
382};
383
384// std::streambuf wrapper around uno_logger_stream_callback
385class CStreamBuffer : public std::streambuf {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected