Google OR-Tools v9.15
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
xpress_solver.cc File Reference
#include "ortools/math_opt/solvers/xpress_solver.h"
#include <algorithm>
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>
#include "absl/log/check.h"
#include "absl/memory/memory.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
#include "absl/time/clock.h"
#include "absl/time/time.h"
#include "absl/types/span.h"
#include "ortools/base/map_util.h"
#include "ortools/base/protoutil.h"
#include "ortools/base/status_macros.h"
#include "ortools/math_opt/core/inverted_bounds.h"
#include "ortools/math_opt/core/math_opt_proto_utils.h"
#include "ortools/math_opt/core/solver_interface.h"
#include "ortools/math_opt/core/sparse_vector_view.h"
#include "ortools/math_opt/cpp/math_opt.h"
#include "ortools/math_opt/cpp/streamable_solver_init_arguments.h"
#include "ortools/math_opt/solvers/xpress/g_xpress.h"
#include "ortools/math_opt/validators/callback_validator.h"
#include "ortools/port/proto_utils.h"
#include "ortools/third_party_solvers/xpress_environment.h"
#include "ortools/util/solve_interrupter.h"

Go to the source code of this file.

Namespaces

namespace  operations_research
 OR-Tools root namespace.
namespace  operations_research::math_opt

Macros

#define DEFINE_SCOPED_CB(CB_NAME, ORTOOLS_CB, CB_RET_TYPE, ARGS)

Variables

constexpr SupportedProblemStructures operations_research::math_opt::kXpressSupportedStructures

Macro Definition Documentation

◆ DEFINE_SCOPED_CB

#define DEFINE_SCOPED_CB ( CB_NAME,
ORTOOLS_CB,
CB_RET_TYPE,
ARGS )
Value:
CB_RET_TYPE CB_NAME##GlueFn ARGS; \
struct CB_NAME##Traits { \
using proto_type = CB_RET_TYPE(XPRS_CC*) ARGS; \
static constexpr proto_type glueFn = CB_NAME##GlueFn; \
static absl::Status Add(Xpress* xpress, proto_type fn, void* data) { \
return xpress->AddCb##CB_NAME(fn, data, 0); \
} \
static void Remove(Xpress* xpress, proto_type fn, void* data) { \
CHECK_OK(xpress->RemoveCb##CB_NAME(fn, data)); \
} \
}; \
using CB_NAME##ScopedCb = ScopedCallback<CB_NAME##Traits, ORTOOLS_CB>; \
CB_RET_TYPE CB_NAME##GlueFn ARGS
#define XPRS_CC

Define everything required for supporting a callback of type name. Use like so DEFINE_SCOPED_CB(CB_NAME, ORTOOLS_CB, CB_RET_TYPE, (...ARGS)) { } where CB_NAME is the name of the callback (Message, Checktime, ...) ORTOOLS_CB the Or-Tools callbacks (function object) that get provided to the low-level static callback as user data, and then invoked. CB_RET_TYPE return type of the low-level Xpress callback. (...ARGS) arguments to the Xpress low-level callback. code for the low-level Xpress callback The effect of the macro is an alias CB_NAME####ScopedCb = ScopedCallback<...>.

Definition at line 151 of file xpress_solver.cc.