18#include "absl/log/check.h"
30 CpSatEnv() : shared_time_limit(model.GetOrCreate<ModelSharedTimeLimit>()) {}
31 void StopSearch() { shared_time_limit->Stop(); }
34 ModelSharedTimeLimit* shared_time_limit;
43 const void* cparams,
int cparams_len,
44 void** cres,
int* cres_len) {
45 operations_research::sat::CpSatEnv env;
50void*
SolveCpNewEnv() {
return new operations_research::sat::CpSatEnv(); }
53 delete static_cast<operations_research::sat::CpSatEnv*
>(cenv);
57 static_cast<operations_research::sat::CpSatEnv*
>(cenv)->StopSearch();
61 const void* cparams,
int cparams_len,
void** cres,
64 CHECK(req.ParseFromArray(creq, creq_len));
67 CHECK(params.ParseFromArray(cparams, cparams_len));
69 operations_research::sat::CpSatEnv* env =
70 static_cast<operations_research::sat::CpSatEnv*
>(cenv);
72 env->model.
Add(NewSatParameters(params));
74 SolveCpModel(req, &env->model);
77 CHECK(res.SerializeToString(&res_str));
79 *cres_len =
static_cast<int>(res_str.size());
81 CHECK(*cres !=
nullptr);
T Add(std::function< T(Model *)> f)
void SolveCpInterruptible(void *const cenv, const void *creq, int creq_len, const void *cparams, int cparams_len, void **cres, int *cres_len)
void SolveCpDestroyEnv(void *const cenv)
void SolveCpStopSearch(void *cenv)
void SolveCpModelWithParameters(const void *creq, int creq_len, const void *cparams, int cparams_len, void **cres, int *cres_len)
void StopSearch(Model *model)
Stops the current search.
char * memdup(const char *s, size_t slen)