ferrox-highs-sys 0.4.1

FFI bindings to the HiGHS MIP/LP solver
Documentation
#pragma once
#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum {
    HIGHS_kOk      = 0,
    HIGHS_kWarning = 1,
    HIGHS_kError   = 2,
} HighsReturnStatus;

typedef enum {
    HIGHS_MODEL_STATUS_NOT_SET         = 0,
    HIGHS_MODEL_STATUS_LOAD_ERROR      = 1,
    HIGHS_MODEL_STATUS_MODEL_ERROR     = 2,
    HIGHS_MODEL_STATUS_INFEASIBLE      = 8,
    HIGHS_MODEL_STATUS_OPTIMAL         = 7,
    HIGHS_MODEL_STATUS_UNBOUNDED       = 9,
    HIGHS_MODEL_STATUS_SOLUTION_LIMIT  = 11,
    HIGHS_MODEL_STATUS_TIME_LIMIT      = 12,
} HighsModelStatus;

typedef struct HighsHandle HighsHandle;

HighsHandle*       highs_create(void);
void               highs_destroy(HighsHandle* h);
HighsReturnStatus  highs_add_col(HighsHandle* h, double cost, double lb, double ub);
HighsReturnStatus  highs_add_row(HighsHandle* h, double lb, double ub,
                                  int num_nz, const int* idx, const double* val);
HighsReturnStatus  highs_change_col_integer_type(HighsHandle* h, int col, int is_integer);
HighsReturnStatus  highs_set_time_limit(HighsHandle* h, double seconds);
HighsReturnStatus  highs_set_mip_rel_gap(HighsHandle* h, double gap);
HighsReturnStatus  highs_run(HighsHandle* h);
HighsModelStatus   highs_get_model_status(HighsHandle* h);
double             highs_get_objective_value(HighsHandle* h);
double             highs_get_col_value(HighsHandle* h, int col);
double             highs_get_mip_gap(HighsHandle* h);

#ifdef __cplusplus
}
#endif