packages feed

highs-lp-0.0: src/Numeric/HiGHS/LP/Enumeration.hsc

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