module Numeric.HiGHS.LP.Enumeration where import qualified Numeric.HiGHS.LP.FFI as Highs #include "interfaces/highs_c_api.h" data ModelStatus = ModelStatusNotset | ModelStatusLoadError | ModelStatusModelError | ModelStatusPresolveError | ModelStatusSolveError | ModelStatusPostsolveError | ModelStatusModelEmpty | ModelStatusOptimal | ModelStatusInfeasible | ModelStatusUnboundedOrInfeasible | ModelStatusUnbounded | ModelStatusObjectiveBound | ModelStatusObjectiveTarget | ModelStatusTimeLimit | ModelStatusIterationLimit | ModelStatusUnknown | ModelStatusSolutionLimit | ModelStatusInterrupt deriving (Eq, Show) modelStatusFromC :: Highs.ModelStatus -> ModelStatus modelStatusFromC (Highs.ModelStatus status) = case status of (#const kHighsModelStatusNotset) -> ModelStatusNotset (#const kHighsModelStatusLoadError) -> ModelStatusLoadError (#const kHighsModelStatusModelError) -> ModelStatusModelError (#const kHighsModelStatusPresolveError) -> ModelStatusPresolveError (#const kHighsModelStatusSolveError) -> ModelStatusSolveError (#const kHighsModelStatusPostsolveError) -> ModelStatusPostsolveError (#const kHighsModelStatusModelEmpty) -> ModelStatusModelEmpty (#const kHighsModelStatusOptimal) -> ModelStatusOptimal (#const kHighsModelStatusInfeasible) -> ModelStatusInfeasible (#const kHighsModelStatusUnboundedOrInfeasible) -> ModelStatusUnboundedOrInfeasible (#const kHighsModelStatusUnbounded) -> ModelStatusUnbounded (#const kHighsModelStatusObjectiveBound) -> ModelStatusObjectiveBound (#const kHighsModelStatusObjectiveTarget) -> ModelStatusObjectiveTarget (#const kHighsModelStatusTimeLimit) -> ModelStatusTimeLimit (#const kHighsModelStatusIterationLimit) -> ModelStatusIterationLimit (#const kHighsModelStatusUnknown) -> ModelStatusUnknown (#const kHighsModelStatusSolutionLimit) -> ModelStatusSolutionLimit (#const kHighsModelStatusInterrupt) -> ModelStatusInterrupt _ -> error $ "unknown model status " ++ show status