25 #ifndef CASADI_CLP_INTERFACE_HPP
26 #define CASADI_CLP_INTERFACE_HPP
28 #include "casadi/core/conic_impl.hpp"
29 #include <casadi/interfaces/clp/casadi_conic_clp_export.h>
31 #include "ClpSimplex.hpp"
32 #include "ClpFactorization.hpp"
33 #include "ClpNetworkMatrix.hpp"
34 #include "ClpEventHandler.hpp"
51 struct ClpMemory :
public ConicMemory {
58 std::vector<int> colind, row;
61 int secondary_return_status;
74 class ClpInterface :
public Conic {
77 static Conic* creator(
const std::string& name,
78 const std::map<std::string, Sparsity>& st) {
79 return new ClpInterface(name, st);
83 explicit ClpInterface(
const std::string& name,
84 const std::map<std::string, Sparsity>& st);
87 ~ClpInterface()
override;
90 const char* plugin_name()
const override {
return "clp";}
93 std::string class_name()
const override {
return "ClpInterface";}
97 static const Options options_;
98 const Options& get_options()
const override {
return options_;}
102 void init(
const Dict& opts)
override;
105 void* alloc_mem()
const override {
return new ClpMemory();}
108 int init_mem(
void* mem)
const override;
111 void free_mem(
void *mem)
const override {
delete static_cast<ClpMemory*
>(mem);}
114 Dict get_stats(
void* mem)
const override;
117 int solve(
const double** arg,
double** res,
118 casadi_int* iw,
double* w,
void* mem)
const override;
121 static const std::string meta_doc;
126 void serialize_body(SerializingStream &s)
const override;
129 static ProtoFunction* deserialize(DeserializingStream& s) {
return new ClpInterface(s); }
133 explicit ClpInterface(DeserializingStream& s);
137 static std::map<std::string, ClpIntParam> param_map_int;
138 static std::map<std::string, ClpDblParam> param_map_double;
139 static std::map<std::string, ClpSolve::SolveType> param_map_solvetype;
140 static std::map<std::string, ClpSolve::PresolveType> param_map_presolvetype;
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.