{-# OPTIONS_GHC -Wall #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# LANGUAGE MultiParamTypeClasses #-} module Casadi.Control.Enums ( DPLEInput(..), DPLEOutput(..), ) where import Foreign.C.Types ( CInt(..) ) import Casadi.Internal.Marshal ( Marshal(..) ) import Casadi.Internal.WrapReturn ( WrapReturn(..) ) -- EnumDecl: DPLEInput data DPLEInput = DPLE_A | DPLE_NUM_IN | DPLE_V deriving (Show, Eq) instance Enum DPLEInput where fromEnum (DPLE_A) = 0 fromEnum (DPLE_NUM_IN) = 2 fromEnum (DPLE_V) = 1 toEnum (0) = DPLE_A toEnum (2) = DPLE_NUM_IN toEnum (1) = DPLE_V toEnum k = error $ "DPLEInput: toEnum: got unhandled number: " ++ show k instance Marshal DPLEInput CInt where marshal = return . fromIntegral . fromEnum instance WrapReturn CInt DPLEInput where wrapReturn = return . toEnum . fromIntegral -- EnumDecl: DPLEOutput data DPLEOutput = DPLE_NUM_OUT | DPLE_P deriving (Show, Eq) instance Enum DPLEOutput where fromEnum (DPLE_NUM_OUT) = 1 fromEnum (DPLE_P) = 0 toEnum (1) = DPLE_NUM_OUT toEnum (0) = DPLE_P toEnum k = error $ "DPLEOutput: toEnum: got unhandled number: " ++ show k instance Marshal DPLEOutput CInt where marshal = return . fromIntegral . fromEnum instance WrapReturn CInt DPLEOutput where wrapReturn = return . toEnum . fromIntegral