packages feed

casadi-bindings-1.8.0.0: Casadi/Wrappers/Enums.hs

{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module Casadi.Wrappers.Enums
       (
         Alias(..),
         Category(..),
         Causality(..),
         CollocationPoints(..),
         ControlSimulatorInput(..),
         ControlledDAEInput(..),
         DAEInput(..),
         DAEOutput(..),
         DPLEInput(..),
         DPLEOutput(..),
         Dynamics(..),
         GradFInput(..),
         GradFOutput(..),
         HessLagInput(..),
         HessLagOutput(..),
         InputOutputScheme(..),
         IntegratorInput(..),
         IntegratorOutput(..),
         JacGInput(..),
         JacGOutput(..),
         LPSolverInput(..),
         LPSolverOutput(..),
         LPStruct(..),
         LinsolInput(..),
         LinsolOutput(..),
         MayerInput(..),
         NLPInput(..),
         NLPOutput(..),
         NLPSolverInput(..),
         NLPSolverOutput(..),
         OCPInput(..),
         OCPOutput(..),
         Operation(..),
         Opt_type(..),
         QCQPSolverInput(..),
         QCQPSolverOutput(..),
         QCQPStruct(..),
         QPSolverInput(..),
         QPSolverOutput(..),
         QPStruct(..),
         RDAEInput(..),
         RDAEOutput(..),
         SDPInput(..),
         SDPOutput(..),
         SDPStruct(..),
         SDQPInput(..),
         SDQPOutput(..),
         SDQPStruct(..),
         SOCPInput(..),
         SOCPOutput(..),
         SOCPStruct(..),
         Sparsity(..),
         StabilizedQPSolverInput(..),
         SymbolicOCPVariables(..),
         Type(..),
         Variability(..),
       ) where


import Foreign.C.Types ( CInt(..) )
import Casadi.Marshal ( Marshal(..) )
import Casadi.WrapReturn ( WrapReturn(..) )

-- EnumDecl: IntegratorOutput
data IntegratorOutput = INTEGRATOR_ZF
                      | INTEGRATOR_XF
                      | INTEGRATOR_RQF
                      | INTEGRATOR_RXF
                      | INTEGRATOR_QF
                      | INTEGRATOR_RZF
                      | INTEGRATOR_NUM_OUT
                      deriving (Show, Eq)
instance Enum IntegratorOutput where
        fromEnum (INTEGRATOR_ZF) = 2
        fromEnum (INTEGRATOR_XF) = 0
        fromEnum (INTEGRATOR_RQF) = 4
        fromEnum (INTEGRATOR_RXF) = 3
        fromEnum (INTEGRATOR_QF) = 1
        fromEnum (INTEGRATOR_RZF) = 5
        fromEnum (INTEGRATOR_NUM_OUT) = 6
        toEnum (2) = INTEGRATOR_ZF
        toEnum (0) = INTEGRATOR_XF
        toEnum (4) = INTEGRATOR_RQF
        toEnum (3) = INTEGRATOR_RXF
        toEnum (1) = INTEGRATOR_QF
        toEnum (5) = INTEGRATOR_RZF
        toEnum (6) = INTEGRATOR_NUM_OUT
        toEnum k
          = error $ "IntegratorOutput: toEnum: got unhandled number: " ++
              show k
instance Marshal IntegratorOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt IntegratorOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Category
data Category = CAT_ALGEBRAIC
              | CAT_UNKNOWN
              | CAT_INDEPENDENT_PARAMETER
              | CAT_DERIVATIVE
              | CAT_DEPENDENT_CONSTANT
              | CAT_INDEPENDENT_CONSTANT
              | CAT_DEPENDENT_PARAMETER
              | CAT_STATE
              deriving (Show, Eq)
instance Enum Category where
        fromEnum (CAT_ALGEBRAIC) = 7
        fromEnum (CAT_UNKNOWN) = 0
        fromEnum (CAT_INDEPENDENT_PARAMETER) = 6
        fromEnum (CAT_DERIVATIVE) = 1
        fromEnum (CAT_DEPENDENT_CONSTANT) = 3
        fromEnum (CAT_INDEPENDENT_CONSTANT) = 4
        fromEnum (CAT_DEPENDENT_PARAMETER) = 5
        fromEnum (CAT_STATE) = 2
        toEnum (7) = CAT_ALGEBRAIC
        toEnum (0) = CAT_UNKNOWN
        toEnum (6) = CAT_INDEPENDENT_PARAMETER
        toEnum (1) = CAT_DERIVATIVE
        toEnum (3) = CAT_DEPENDENT_CONSTANT
        toEnum (4) = CAT_INDEPENDENT_CONSTANT
        toEnum (5) = CAT_DEPENDENT_PARAMETER
        toEnum (2) = CAT_STATE
        toEnum k
          = error $ "Category: toEnum: got unhandled number: " ++ show k
instance Marshal Category CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Category where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Causality
data Causality = INPUT
               | INTERNAL
               | OUTPUT
               deriving (Show, Eq)
instance Enum Causality where
        fromEnum (INPUT) = 0
        fromEnum (INTERNAL) = 2
        fromEnum (OUTPUT) = 1
        toEnum (0) = INPUT
        toEnum (2) = INTERNAL
        toEnum (1) = OUTPUT
        toEnum k
          = error $ "Causality: toEnum: got unhandled number: " ++ show k
instance Marshal Causality CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Causality where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SDPOutput
data SDPOutput = SDP_SOLVER_LAM_A
               | SDP_SOLVER_DUAL_COST
               | SDP_SOLVER_P
               | SDP_SOLVER_X
               | SDP_SOLVER_NUM_OUT
               | SDP_SOLVER_LAM_X
               | SDP_SOLVER_COST
               | SDP_SOLVER_DUAL
               deriving (Show, Eq)
instance Enum SDPOutput where
        fromEnum (SDP_SOLVER_LAM_A) = 5
        fromEnum (SDP_SOLVER_DUAL_COST) = 4
        fromEnum (SDP_SOLVER_P) = 1
        fromEnum (SDP_SOLVER_X) = 0
        fromEnum (SDP_SOLVER_NUM_OUT) = 7
        fromEnum (SDP_SOLVER_LAM_X) = 6
        fromEnum (SDP_SOLVER_COST) = 3
        fromEnum (SDP_SOLVER_DUAL) = 2
        toEnum (5) = SDP_SOLVER_LAM_A
        toEnum (4) = SDP_SOLVER_DUAL_COST
        toEnum (1) = SDP_SOLVER_P
        toEnum (0) = SDP_SOLVER_X
        toEnum (7) = SDP_SOLVER_NUM_OUT
        toEnum (6) = SDP_SOLVER_LAM_X
        toEnum (3) = SDP_SOLVER_COST
        toEnum (2) = SDP_SOLVER_DUAL
        toEnum k
          = error $ "SDPOutput: toEnum: got unhandled number: " ++ show k
instance Marshal SDPOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SDPOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: HessLagOutput
data HessLagOutput = HESSLAG_G
                   | HESSLAG_F
                   | HESSLAG_HESS
                   | HESSLAG_NUM_OUT
                   | HESSLAG_GRAD_P
                   | HESSLAG_GRAD_X
                   deriving (Show, Eq)
instance Enum HessLagOutput where
        fromEnum (HESSLAG_G) = 2
        fromEnum (HESSLAG_F) = 1
        fromEnum (HESSLAG_HESS) = 0
        fromEnum (HESSLAG_NUM_OUT) = 5
        fromEnum (HESSLAG_GRAD_P) = 4
        fromEnum (HESSLAG_GRAD_X) = 3
        toEnum (2) = HESSLAG_G
        toEnum (1) = HESSLAG_F
        toEnum (0) = HESSLAG_HESS
        toEnum (5) = HESSLAG_NUM_OUT
        toEnum (4) = HESSLAG_GRAD_P
        toEnum (3) = HESSLAG_GRAD_X
        toEnum k
          = error $ "HessLagOutput: toEnum: got unhandled number: " ++ show k
instance Marshal HessLagOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt HessLagOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: LinsolInput
data LinsolInput = LINSOL_NUM_IN
                 | LINSOL_A
                 | LINSOL_B
                 deriving (Show, Eq)
instance Enum LinsolInput where
        fromEnum (LINSOL_NUM_IN) = 2
        fromEnum (LINSOL_A) = 0
        fromEnum (LINSOL_B) = 1
        toEnum (2) = LINSOL_NUM_IN
        toEnum (0) = LINSOL_A
        toEnum (1) = LINSOL_B
        toEnum k
          = error $ "LinsolInput: toEnum: got unhandled number: " ++ show k
instance Marshal LinsolInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt LinsolInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SOCPOutput
data SOCPOutput = SOCP_SOLVER_NUM_OUT
                | SOCP_SOLVER_X
                | SOCP_SOLVER_LAM_X
                | SOCP_SOLVER_COST
                | SOCP_SOLVER_LAM_A
                deriving (Show, Eq)
instance Enum SOCPOutput where
        fromEnum (SOCP_SOLVER_NUM_OUT) = 4
        fromEnum (SOCP_SOLVER_X) = 0
        fromEnum (SOCP_SOLVER_LAM_X) = 3
        fromEnum (SOCP_SOLVER_COST) = 1
        fromEnum (SOCP_SOLVER_LAM_A) = 2
        toEnum (4) = SOCP_SOLVER_NUM_OUT
        toEnum (0) = SOCP_SOLVER_X
        toEnum (3) = SOCP_SOLVER_LAM_X
        toEnum (1) = SOCP_SOLVER_COST
        toEnum (2) = SOCP_SOLVER_LAM_A
        toEnum k
          = error $ "SOCPOutput: toEnum: got unhandled number: " ++ show k
instance Marshal SOCPOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SOCPOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: LPStruct
data LPStruct = LP_STRUCT_NUM
              | LP_STRUCT_A
              deriving (Show, Eq)
instance Enum LPStruct where
        fromEnum (LP_STRUCT_NUM) = 1
        fromEnum (LP_STRUCT_A) = 0
        toEnum (1) = LP_STRUCT_NUM
        toEnum (0) = LP_STRUCT_A
        toEnum k
          = error $ "LPStruct: toEnum: got unhandled number: " ++ show k
instance Marshal LPStruct CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt LPStruct where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Opt_type
data Opt_type = OT_CALLBACK
              | OT_VOIDPTR
              | OT_BOOLEAN
              | OT_FX
              | OT_INTEGERVECTOR
              | OT_REALVECTOR
              | OT_LINEARSOLVER
              | OT_BOOLVECTOR
              | OT_STABILIZEDQPSOLVER
              | OT_REAL
              | OT_DERIVATIVEGENERATOR
              | OT_STRING
              | OT_NLPSOLVER
              | OT_LPSOLVER
              | OT_IMPLICITFUNCTION
              | OT_SDQPSOLVER
              | OT_QCQPSOLVER
              | OT_SOCPSOLVER
              | OT_SDPSOLVER
              | OT_INTEGRATOR
              | OT_UNKNOWN
              | OT_STRINGVECTOR
              | OT_INTEGER
              | OT_QPSOLVER
              | OT_DICTIONARY
              deriving (Show, Eq)
instance Enum Opt_type where
        fromEnum (OT_CALLBACK) = 22
        fromEnum (OT_VOIDPTR) = 23
        fromEnum (OT_BOOLEAN) = 0
        fromEnum (OT_FX) = 21
        fromEnum (OT_INTEGERVECTOR) = 4
        fromEnum (OT_REALVECTOR) = 6
        fromEnum (OT_LINEARSOLVER) = 11
        fromEnum (OT_BOOLVECTOR) = 5
        fromEnum (OT_STABILIZEDQPSOLVER) = 14
        fromEnum (OT_REAL) = 2
        fromEnum (OT_DERIVATIVEGENERATOR) = 20
        fromEnum (OT_STRING) = 3
        fromEnum (OT_NLPSOLVER) = 9
        fromEnum (OT_LPSOLVER) = 10
        fromEnum (OT_IMPLICITFUNCTION) = 19
        fromEnum (OT_SDQPSOLVER) = 18
        fromEnum (OT_QCQPSOLVER) = 16
        fromEnum (OT_SOCPSOLVER) = 15
        fromEnum (OT_SDPSOLVER) = 17
        fromEnum (OT_INTEGRATOR) = 12
        fromEnum (OT_UNKNOWN) = 24
        fromEnum (OT_STRINGVECTOR) = 7
        fromEnum (OT_INTEGER) = 1
        fromEnum (OT_QPSOLVER) = 13
        fromEnum (OT_DICTIONARY) = 8
        toEnum (22) = OT_CALLBACK
        toEnum (23) = OT_VOIDPTR
        toEnum (0) = OT_BOOLEAN
        toEnum (21) = OT_FX
        toEnum (4) = OT_INTEGERVECTOR
        toEnum (6) = OT_REALVECTOR
        toEnum (11) = OT_LINEARSOLVER
        toEnum (5) = OT_BOOLVECTOR
        toEnum (14) = OT_STABILIZEDQPSOLVER
        toEnum (2) = OT_REAL
        toEnum (20) = OT_DERIVATIVEGENERATOR
        toEnum (3) = OT_STRING
        toEnum (9) = OT_NLPSOLVER
        toEnum (10) = OT_LPSOLVER
        toEnum (19) = OT_IMPLICITFUNCTION
        toEnum (18) = OT_SDQPSOLVER
        toEnum (16) = OT_QCQPSOLVER
        toEnum (15) = OT_SOCPSOLVER
        toEnum (17) = OT_SDPSOLVER
        toEnum (12) = OT_INTEGRATOR
        toEnum (24) = OT_UNKNOWN
        toEnum (7) = OT_STRINGVECTOR
        toEnum (1) = OT_INTEGER
        toEnum (13) = OT_QPSOLVER
        toEnum (8) = OT_DICTIONARY
        toEnum k
          = error $ "Opt_type: toEnum: got unhandled number: " ++ show k
instance Marshal Opt_type CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Opt_type where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SDPInput
data SDPInput = SDP_SOLVER_UBX
              | SDP_SOLVER_NUM_IN
              | SDP_SOLVER_F
              | SDP_SOLVER_G
              | SDP_SOLVER_C
              | SDP_SOLVER_LBX
              | SDP_SOLVER_A
              | SDP_SOLVER_LBA
              | SDP_SOLVER_UBA
              deriving (Show, Eq)
instance Enum SDPInput where
        fromEnum (SDP_SOLVER_UBX) = 7
        fromEnum (SDP_SOLVER_NUM_IN) = 8
        fromEnum (SDP_SOLVER_F) = 0
        fromEnum (SDP_SOLVER_G) = 2
        fromEnum (SDP_SOLVER_C) = 1
        fromEnum (SDP_SOLVER_LBX) = 6
        fromEnum (SDP_SOLVER_A) = 3
        fromEnum (SDP_SOLVER_LBA) = 4
        fromEnum (SDP_SOLVER_UBA) = 5
        toEnum (7) = SDP_SOLVER_UBX
        toEnum (8) = SDP_SOLVER_NUM_IN
        toEnum (0) = SDP_SOLVER_F
        toEnum (2) = SDP_SOLVER_G
        toEnum (1) = SDP_SOLVER_C
        toEnum (6) = SDP_SOLVER_LBX
        toEnum (3) = SDP_SOLVER_A
        toEnum (4) = SDP_SOLVER_LBA
        toEnum (5) = SDP_SOLVER_UBA
        toEnum k
          = error $ "SDPInput: toEnum: got unhandled number: " ++ show k
instance Marshal SDPInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SDPInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: LPSolverInput
data LPSolverInput = LP_SOLVER_UBX
                   | LP_SOLVER_LBX
                   | LP_SOLVER_NUM_IN
                   | LP_SOLVER_A
                   | LP_SOLVER_C
                   | LP_SOLVER_UBA
                   | LP_SOLVER_LBA
                   deriving (Show, Eq)
instance Enum LPSolverInput where
        fromEnum (LP_SOLVER_UBX) = 5
        fromEnum (LP_SOLVER_LBX) = 4
        fromEnum (LP_SOLVER_NUM_IN) = 6
        fromEnum (LP_SOLVER_A) = 1
        fromEnum (LP_SOLVER_C) = 0
        fromEnum (LP_SOLVER_UBA) = 3
        fromEnum (LP_SOLVER_LBA) = 2
        toEnum (5) = LP_SOLVER_UBX
        toEnum (4) = LP_SOLVER_LBX
        toEnum (6) = LP_SOLVER_NUM_IN
        toEnum (1) = LP_SOLVER_A
        toEnum (0) = LP_SOLVER_C
        toEnum (3) = LP_SOLVER_UBA
        toEnum (2) = LP_SOLVER_LBA
        toEnum k
          = error $ "LPSolverInput: toEnum: got unhandled number: " ++ show k
instance Marshal LPSolverInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt LPSolverInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: RDAEInput
data RDAEInput = RDAE_Z
               | RDAE_X
               | RDAE_NUM_IN
               | RDAE_P
               | RDAE_T
               | RDAE_RZ
               | RDAE_RX
               | RDAE_RP
               deriving (Show, Eq)
instance Enum RDAEInput where
        fromEnum (RDAE_Z) = 4
        fromEnum (RDAE_X) = 3
        fromEnum (RDAE_NUM_IN) = 7
        fromEnum (RDAE_P) = 5
        fromEnum (RDAE_T) = 6
        fromEnum (RDAE_RZ) = 1
        fromEnum (RDAE_RX) = 0
        fromEnum (RDAE_RP) = 2
        toEnum (4) = RDAE_Z
        toEnum (3) = RDAE_X
        toEnum (7) = RDAE_NUM_IN
        toEnum (5) = RDAE_P
        toEnum (6) = RDAE_T
        toEnum (1) = RDAE_RZ
        toEnum (0) = RDAE_RX
        toEnum (2) = RDAE_RP
        toEnum k
          = error $ "RDAEInput: toEnum: got unhandled number: " ++ show k
instance Marshal RDAEInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt RDAEInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: NLPSolverOutput
data NLPSolverOutput = NLP_SOLVER_LAM_X
                     | NLP_SOLVER_X
                     | NLP_SOLVER_LAM_P
                     | NLP_SOLVER_G
                     | NLP_SOLVER_F
                     | NLP_SOLVER_NUM_OUT
                     | NLP_SOLVER_LAM_G
                     deriving (Show, Eq)
instance Enum NLPSolverOutput where
        fromEnum (NLP_SOLVER_LAM_X) = 3
        fromEnum (NLP_SOLVER_X) = 0
        fromEnum (NLP_SOLVER_LAM_P) = 5
        fromEnum (NLP_SOLVER_G) = 2
        fromEnum (NLP_SOLVER_F) = 1
        fromEnum (NLP_SOLVER_NUM_OUT) = 6
        fromEnum (NLP_SOLVER_LAM_G) = 4
        toEnum (3) = NLP_SOLVER_LAM_X
        toEnum (0) = NLP_SOLVER_X
        toEnum (5) = NLP_SOLVER_LAM_P
        toEnum (2) = NLP_SOLVER_G
        toEnum (1) = NLP_SOLVER_F
        toEnum (6) = NLP_SOLVER_NUM_OUT
        toEnum (4) = NLP_SOLVER_LAM_G
        toEnum k
          = error $ "NLPSolverOutput: toEnum: got unhandled number: " ++
              show k
instance Marshal NLPSolverOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt NLPSolverOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SymbolicOCPVariables
data SymbolicOCPVariables = VAR_PI
                          | NUM_VAR
                          | VAR_PD
                          | VAR_PF
                          | VAR_CI
                          | VAR_Z
                          | VAR_Y
                          | VAR_X
                          | VAR_CD
                          | VAR_U
                          | VAR_Q
                          deriving (Show, Eq)
instance Enum SymbolicOCPVariables where
        fromEnum (VAR_PI) = 5
        fromEnum (NUM_VAR) = 10
        fromEnum (VAR_PD) = 6
        fromEnum (VAR_PF) = 7
        fromEnum (VAR_CI) = 3
        fromEnum (VAR_Z) = 1
        fromEnum (VAR_Y) = 8
        fromEnum (VAR_X) = 0
        fromEnum (VAR_CD) = 4
        fromEnum (VAR_U) = 9
        fromEnum (VAR_Q) = 2
        toEnum (5) = VAR_PI
        toEnum (10) = NUM_VAR
        toEnum (6) = VAR_PD
        toEnum (7) = VAR_PF
        toEnum (3) = VAR_CI
        toEnum (1) = VAR_Z
        toEnum (8) = VAR_Y
        toEnum (0) = VAR_X
        toEnum (4) = VAR_CD
        toEnum (9) = VAR_U
        toEnum (2) = VAR_Q
        toEnum k
          = error $ "SymbolicOCPVariables: toEnum: got unhandled number: " ++
              show k
instance Marshal SymbolicOCPVariables CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SymbolicOCPVariables where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: DAEOutput
data DAEOutput = DAE_NUM_OUT
               | DAE_ODE
               | DAE_QUAD
               | DAE_ALG
               deriving (Show, Eq)
instance Enum DAEOutput where
        fromEnum (DAE_NUM_OUT) = 3
        fromEnum (DAE_ODE) = 0
        fromEnum (DAE_QUAD) = 2
        fromEnum (DAE_ALG) = 1
        toEnum (3) = DAE_NUM_OUT
        toEnum (0) = DAE_ODE
        toEnum (2) = DAE_QUAD
        toEnum (1) = DAE_ALG
        toEnum k
          = error $ "DAEOutput: toEnum: got unhandled number: " ++ show k
instance Marshal DAEOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt DAEOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Dynamics
data Dynamics = ALGEBRAIC
              | DIFFERENTIAL
              deriving (Show, Eq)
instance Enum Dynamics where
        fromEnum (ALGEBRAIC) = 0
        fromEnum (DIFFERENTIAL) = 1
        toEnum (0) = ALGEBRAIC
        toEnum (1) = DIFFERENTIAL
        toEnum k
          = error $ "Dynamics: toEnum: got unhandled number: " ++ show k
instance Marshal Dynamics CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Dynamics where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SOCPInput
data SOCPInput = SOCP_SOLVER_NUM_IN
               | SOCP_SOLVER_H
               | SOCP_SOLVER_UBX
               | SOCP_SOLVER_C
               | SOCP_SOLVER_A
               | SOCP_SOLVER_G
               | SOCP_SOLVER_F
               | SOCP_SOLVER_E
               | SOCP_SOLVER_LBX
               | SOCP_SOLVER_LBA
               | SOCP_SOLVER_UBA
               deriving (Show, Eq)
instance Enum SOCPInput where
        fromEnum (SOCP_SOLVER_NUM_IN) = 10
        fromEnum (SOCP_SOLVER_H) = 1
        fromEnum (SOCP_SOLVER_UBX) = 9
        fromEnum (SOCP_SOLVER_C) = 4
        fromEnum (SOCP_SOLVER_A) = 5
        fromEnum (SOCP_SOLVER_G) = 0
        fromEnum (SOCP_SOLVER_F) = 3
        fromEnum (SOCP_SOLVER_E) = 2
        fromEnum (SOCP_SOLVER_LBX) = 8
        fromEnum (SOCP_SOLVER_LBA) = 6
        fromEnum (SOCP_SOLVER_UBA) = 7
        toEnum (10) = SOCP_SOLVER_NUM_IN
        toEnum (1) = SOCP_SOLVER_H
        toEnum (9) = SOCP_SOLVER_UBX
        toEnum (4) = SOCP_SOLVER_C
        toEnum (5) = SOCP_SOLVER_A
        toEnum (0) = SOCP_SOLVER_G
        toEnum (3) = SOCP_SOLVER_F
        toEnum (2) = SOCP_SOLVER_E
        toEnum (8) = SOCP_SOLVER_LBX
        toEnum (6) = SOCP_SOLVER_LBA
        toEnum (7) = SOCP_SOLVER_UBA
        toEnum k
          = error $ "SOCPInput: toEnum: got unhandled number: " ++ show k
instance Marshal SOCPInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SOCPInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: QCQPSolverInput
data QCQPSolverInput = QCQP_SOLVER_NUM_IN
                     | QCQP_SOLVER_H
                     | QCQP_SOLVER_X0
                     | QCQP_SOLVER_UBX
                     | QCQP_SOLVER_A
                     | QCQP_SOLVER_G
                     | QCQP_SOLVER_LAM_X0
                     | QCQP_SOLVER_LBX
                     | QCQP_SOLVER_R
                     | QCQP_SOLVER_Q
                     | QCQP_SOLVER_P
                     | QCQP_SOLVER_LBA
                     | QCQP_SOLVER_UBA
                     deriving (Show, Eq)
instance Enum QCQPSolverInput where
        fromEnum (QCQP_SOLVER_NUM_IN) = 12
        fromEnum (QCQP_SOLVER_H) = 0
        fromEnum (QCQP_SOLVER_X0) = 10
        fromEnum (QCQP_SOLVER_UBX) = 9
        fromEnum (QCQP_SOLVER_A) = 5
        fromEnum (QCQP_SOLVER_G) = 1
        fromEnum (QCQP_SOLVER_LAM_X0) = 11
        fromEnum (QCQP_SOLVER_LBX) = 8
        fromEnum (QCQP_SOLVER_R) = 4
        fromEnum (QCQP_SOLVER_Q) = 3
        fromEnum (QCQP_SOLVER_P) = 2
        fromEnum (QCQP_SOLVER_LBA) = 6
        fromEnum (QCQP_SOLVER_UBA) = 7
        toEnum (12) = QCQP_SOLVER_NUM_IN
        toEnum (0) = QCQP_SOLVER_H
        toEnum (10) = QCQP_SOLVER_X0
        toEnum (9) = QCQP_SOLVER_UBX
        toEnum (5) = QCQP_SOLVER_A
        toEnum (1) = QCQP_SOLVER_G
        toEnum (11) = QCQP_SOLVER_LAM_X0
        toEnum (8) = QCQP_SOLVER_LBX
        toEnum (4) = QCQP_SOLVER_R
        toEnum (3) = QCQP_SOLVER_Q
        toEnum (2) = QCQP_SOLVER_P
        toEnum (6) = QCQP_SOLVER_LBA
        toEnum (7) = QCQP_SOLVER_UBA
        toEnum k
          = error $ "QCQPSolverInput: toEnum: got unhandled number: " ++
              show k
instance Marshal QCQPSolverInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt QCQPSolverInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Variability
data Variability = PARAMETER
                 | CONTINUOUS
                 | CONSTANT
                 | DISCRETE
                 deriving (Show, Eq)
instance Enum Variability where
        fromEnum (PARAMETER) = 1
        fromEnum (CONTINUOUS) = 3
        fromEnum (CONSTANT) = 0
        fromEnum (DISCRETE) = 2
        toEnum (1) = PARAMETER
        toEnum (3) = CONTINUOUS
        toEnum (0) = CONSTANT
        toEnum (2) = DISCRETE
        toEnum k
          = error $ "Variability: toEnum: got unhandled number: " ++ show k
instance Marshal Variability CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Variability where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: NLPSolverInput
data NLPSolverInput = NLP_SOLVER_LBX
                    | NLP_SOLVER_LAM_X0
                    | NLP_SOLVER_UBX
                    | NLP_SOLVER_P
                    | NLP_SOLVER_NUM_IN
                    | NLP_SOLVER_X0
                    | NLP_SOLVER_LAM_G0
                    | NLP_SOLVER_UBG
                    | NLP_SOLVER_LBG
                    deriving (Show, Eq)
instance Enum NLPSolverInput where
        fromEnum (NLP_SOLVER_LBX) = 2
        fromEnum (NLP_SOLVER_LAM_X0) = 6
        fromEnum (NLP_SOLVER_UBX) = 3
        fromEnum (NLP_SOLVER_P) = 1
        fromEnum (NLP_SOLVER_NUM_IN) = 8
        fromEnum (NLP_SOLVER_X0) = 0
        fromEnum (NLP_SOLVER_LAM_G0) = 7
        fromEnum (NLP_SOLVER_UBG) = 5
        fromEnum (NLP_SOLVER_LBG) = 4
        toEnum (2) = NLP_SOLVER_LBX
        toEnum (6) = NLP_SOLVER_LAM_X0
        toEnum (3) = NLP_SOLVER_UBX
        toEnum (1) = NLP_SOLVER_P
        toEnum (8) = NLP_SOLVER_NUM_IN
        toEnum (0) = NLP_SOLVER_X0
        toEnum (7) = NLP_SOLVER_LAM_G0
        toEnum (5) = NLP_SOLVER_UBG
        toEnum (4) = NLP_SOLVER_LBG
        toEnum k
          = error $ "NLPSolverInput: toEnum: got unhandled number: " ++
              show k
instance Marshal NLPSolverInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt NLPSolverInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: DAEInput
data DAEInput = DAE_T
              | DAE_Z
              | DAE_P
              | DAE_X
              | DAE_NUM_IN
              deriving (Show, Eq)
instance Enum DAEInput where
        fromEnum (DAE_T) = 3
        fromEnum (DAE_Z) = 1
        fromEnum (DAE_P) = 2
        fromEnum (DAE_X) = 0
        fromEnum (DAE_NUM_IN) = 4
        toEnum (3) = DAE_T
        toEnum (1) = DAE_Z
        toEnum (2) = DAE_P
        toEnum (0) = DAE_X
        toEnum (4) = DAE_NUM_IN
        toEnum k
          = error $ "DAEInput: toEnum: got unhandled number: " ++ show k
instance Marshal DAEInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt DAEInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: NLPOutput
data NLPOutput = NL_NUM_OUT
               | NL_G
               | NL_F
               deriving (Show, Eq)
instance Enum NLPOutput where
        fromEnum (NL_NUM_OUT) = 2
        fromEnum (NL_G) = 1
        fromEnum (NL_F) = 0
        toEnum (2) = NL_NUM_OUT
        toEnum (1) = NL_G
        toEnum (0) = NL_F
        toEnum k
          = error $ "NLPOutput: toEnum: got unhandled number: " ++ show k
instance Marshal NLPOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt NLPOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: InputOutputScheme
data InputOutputScheme = SCHEME_SDPOutput
                       | SCHEME_OCPOutput
                       | SCHEME_DAEOutput
                       | SCHEME_HessLagInput
                       | SCHEME_SDQPInput
                       | SCHEME_LinsolInput
                       | SCHEME_DAEInput
                       | SCHEME_IntegratorOutput
                       | SCHEME_IntegratorInput
                       | SCHEME_HessLagOutput
                       | SCHEME_LPSolverInput
                       | SCHEME_JacGOutput
                       | SCHEME_SOCPStruct
                       | SCHEME_ControlledDAEInput
                       | SCHEME_QPStruct
                       | SCHEME_QCQPSolverInput
                       | SCHEME_ControlSimulatorInput
                       | SCHEME_QCQPSolverOutput
                       | SCHEME_MayerInput
                       | SCHEME_OCPInput
                       | SCHEME_QPSolverOutput
                       | SCHEME_RDAEOutput
                       | SCHEME_NLPOutput
                       | SCHEME_SDPInput
                       | SCHEME_SOCPOutput
                       | SCHEME_SDQPStruct
                       | SCHEME_GradFInput
                       | SCHEME_NLPInput
                       | SCHEME_LPSolverOutput
                       | SCHEME_NLPSolverInput
                       | SCHEME_RDAEInput
                       | SCHEME_QPSolverInput
                       | SCHEME_SDPStruct
                       | SCHEME_LinsolOutput
                       | SCHEME_StabilizedQPSolverInput
                       | SCHEME_SOCPInput
                       | SCHEME_DPLEInput
                       | SCHEME_GradFOutput
                       | SCHEME_NLPSolverOutput
                       | SCHEME_DPLEOutput
                       | SCHEME_LPStruct
                       | SCHEME_SDQPOutput
                       | SCHEME_QCQPStruct
                       | SCHEME_JacGInput
                       deriving (Show, Eq)
instance Enum InputOutputScheme where
        fromEnum (SCHEME_SDPOutput) = 35
        fromEnum (SCHEME_OCPOutput) = 27
        fromEnum (SCHEME_DAEOutput) = 5
        fromEnum (SCHEME_HessLagInput) = 21
        fromEnum (SCHEME_SDQPInput) = 37
        fromEnum (SCHEME_LinsolInput) = 10
        fromEnum (SCHEME_DAEInput) = 4
        fromEnum (SCHEME_IntegratorOutput) = 9
        fromEnum (SCHEME_IntegratorInput) = 8
        fromEnum (SCHEME_HessLagOutput) = 22
        fromEnum (SCHEME_LPSolverInput) = 12
        fromEnum (SCHEME_JacGOutput) = 20
        fromEnum (SCHEME_SOCPStruct) = 42
        fromEnum (SCHEME_ControlledDAEInput) = 2
        fromEnum (SCHEME_QPStruct) = 33
        fromEnum (SCHEME_QCQPSolverInput) = 28
        fromEnum (SCHEME_ControlSimulatorInput) = 3
        fromEnum (SCHEME_QCQPSolverOutput) = 29
        fromEnum (SCHEME_MayerInput) = 25
        fromEnum (SCHEME_OCPInput) = 26
        fromEnum (SCHEME_QPSolverOutput) = 32
        fromEnum (SCHEME_RDAEOutput) = 7
        fromEnum (SCHEME_NLPOutput) = 16
        fromEnum (SCHEME_SDPInput) = 34
        fromEnum (SCHEME_SOCPOutput) = 41
        fromEnum (SCHEME_SDQPStruct) = 39
        fromEnum (SCHEME_GradFInput) = 17
        fromEnum (SCHEME_NLPInput) = 15
        fromEnum (SCHEME_LPSolverOutput) = 13
        fromEnum (SCHEME_NLPSolverInput) = 23
        fromEnum (SCHEME_RDAEInput) = 6
        fromEnum (SCHEME_QPSolverInput) = 31
        fromEnum (SCHEME_SDPStruct) = 36
        fromEnum (SCHEME_LinsolOutput) = 11
        fromEnum (SCHEME_StabilizedQPSolverInput) = 43
        fromEnum (SCHEME_SOCPInput) = 40
        fromEnum (SCHEME_DPLEInput) = 0
        fromEnum (SCHEME_GradFOutput) = 18
        fromEnum (SCHEME_NLPSolverOutput) = 24
        fromEnum (SCHEME_DPLEOutput) = 1
        fromEnum (SCHEME_LPStruct) = 14
        fromEnum (SCHEME_SDQPOutput) = 38
        fromEnum (SCHEME_QCQPStruct) = 30
        fromEnum (SCHEME_JacGInput) = 19
        toEnum (35) = SCHEME_SDPOutput
        toEnum (27) = SCHEME_OCPOutput
        toEnum (5) = SCHEME_DAEOutput
        toEnum (21) = SCHEME_HessLagInput
        toEnum (37) = SCHEME_SDQPInput
        toEnum (10) = SCHEME_LinsolInput
        toEnum (4) = SCHEME_DAEInput
        toEnum (9) = SCHEME_IntegratorOutput
        toEnum (8) = SCHEME_IntegratorInput
        toEnum (22) = SCHEME_HessLagOutput
        toEnum (12) = SCHEME_LPSolverInput
        toEnum (20) = SCHEME_JacGOutput
        toEnum (42) = SCHEME_SOCPStruct
        toEnum (2) = SCHEME_ControlledDAEInput
        toEnum (33) = SCHEME_QPStruct
        toEnum (28) = SCHEME_QCQPSolverInput
        toEnum (3) = SCHEME_ControlSimulatorInput
        toEnum (29) = SCHEME_QCQPSolverOutput
        toEnum (25) = SCHEME_MayerInput
        toEnum (26) = SCHEME_OCPInput
        toEnum (32) = SCHEME_QPSolverOutput
        toEnum (7) = SCHEME_RDAEOutput
        toEnum (16) = SCHEME_NLPOutput
        toEnum (34) = SCHEME_SDPInput
        toEnum (41) = SCHEME_SOCPOutput
        toEnum (39) = SCHEME_SDQPStruct
        toEnum (17) = SCHEME_GradFInput
        toEnum (15) = SCHEME_NLPInput
        toEnum (13) = SCHEME_LPSolverOutput
        toEnum (23) = SCHEME_NLPSolverInput
        toEnum (6) = SCHEME_RDAEInput
        toEnum (31) = SCHEME_QPSolverInput
        toEnum (36) = SCHEME_SDPStruct
        toEnum (11) = SCHEME_LinsolOutput
        toEnum (43) = SCHEME_StabilizedQPSolverInput
        toEnum (40) = SCHEME_SOCPInput
        toEnum (0) = SCHEME_DPLEInput
        toEnum (18) = SCHEME_GradFOutput
        toEnum (24) = SCHEME_NLPSolverOutput
        toEnum (1) = SCHEME_DPLEOutput
        toEnum (14) = SCHEME_LPStruct
        toEnum (38) = SCHEME_SDQPOutput
        toEnum (30) = SCHEME_QCQPStruct
        toEnum (19) = SCHEME_JacGInput
        toEnum k
          = error $ "InputOutputScheme: toEnum: got unhandled number: " ++
              show k
instance Marshal InputOutputScheme CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt InputOutputScheme where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: StabilizedQPSolverInput
data StabilizedQPSolverInput = STABILIZED_QP_SOLVER_LBA
                             | STABILIZED_QP_SOLVER_MUR
                             | STABILIZED_QP_SOLVER_NUM_IN
                             | STABILIZED_QP_SOLVER_X0
                             | STABILIZED_QP_SOLVER_UBA
                             | STABILIZED_QP_SOLVER_MU
                             | STABILIZED_QP_SOLVER_LAM_X0
                             | STABILIZED_QP_SOLVER_G
                             | STABILIZED_QP_SOLVER_A
                             | STABILIZED_QP_SOLVER_LBX
                             | STABILIZED_QP_SOLVER_MUE
                             | STABILIZED_QP_SOLVER_H
                             | STABILIZED_QP_SOLVER_UBX
                             deriving (Show, Eq)
instance Enum StabilizedQPSolverInput where
        fromEnum (STABILIZED_QP_SOLVER_LBA) = 3
        fromEnum (STABILIZED_QP_SOLVER_MUR) = 9
        fromEnum (STABILIZED_QP_SOLVER_NUM_IN) = 12
        fromEnum (STABILIZED_QP_SOLVER_X0) = 7
        fromEnum (STABILIZED_QP_SOLVER_UBA) = 4
        fromEnum (STABILIZED_QP_SOLVER_MU) = 11
        fromEnum (STABILIZED_QP_SOLVER_LAM_X0) = 8
        fromEnum (STABILIZED_QP_SOLVER_G) = 1
        fromEnum (STABILIZED_QP_SOLVER_A) = 2
        fromEnum (STABILIZED_QP_SOLVER_LBX) = 5
        fromEnum (STABILIZED_QP_SOLVER_MUE) = 10
        fromEnum (STABILIZED_QP_SOLVER_H) = 0
        fromEnum (STABILIZED_QP_SOLVER_UBX) = 6
        toEnum (3) = STABILIZED_QP_SOLVER_LBA
        toEnum (9) = STABILIZED_QP_SOLVER_MUR
        toEnum (12) = STABILIZED_QP_SOLVER_NUM_IN
        toEnum (7) = STABILIZED_QP_SOLVER_X0
        toEnum (4) = STABILIZED_QP_SOLVER_UBA
        toEnum (11) = STABILIZED_QP_SOLVER_MU
        toEnum (8) = STABILIZED_QP_SOLVER_LAM_X0
        toEnum (1) = STABILIZED_QP_SOLVER_G
        toEnum (2) = STABILIZED_QP_SOLVER_A
        toEnum (5) = STABILIZED_QP_SOLVER_LBX
        toEnum (10) = STABILIZED_QP_SOLVER_MUE
        toEnum (0) = STABILIZED_QP_SOLVER_H
        toEnum (6) = STABILIZED_QP_SOLVER_UBX
        toEnum k
          = error $ "StabilizedQPSolverInput: toEnum: got unhandled number: "
              ++ show k
instance Marshal StabilizedQPSolverInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt StabilizedQPSolverInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: GradFInput
data GradFInput = GRADF_X
                | GRADF_P
                | GRADF_NUM_IN
                deriving (Show, Eq)
instance Enum GradFInput where
        fromEnum (GRADF_X) = 0
        fromEnum (GRADF_P) = 1
        fromEnum (GRADF_NUM_IN) = 2
        toEnum (0) = GRADF_X
        toEnum (1) = GRADF_P
        toEnum (2) = GRADF_NUM_IN
        toEnum k
          = error $ "GradFInput: toEnum: got unhandled number: " ++ show k
instance Marshal GradFInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt GradFInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: LPSolverOutput
data LPSolverOutput = LP_SOLVER_COST
                    | LP_SOLVER_NUM_OUT
                    | LP_SOLVER_X
                    | LP_SOLVER_LAM_A
                    | LP_SOLVER_LAM_X
                    deriving (Show, Eq)
instance Enum LPSolverOutput where
        fromEnum (LP_SOLVER_COST) = 1
        fromEnum (LP_SOLVER_NUM_OUT) = 4
        fromEnum (LP_SOLVER_X) = 0
        fromEnum (LP_SOLVER_LAM_A) = 2
        fromEnum (LP_SOLVER_LAM_X) = 3
        toEnum (1) = LP_SOLVER_COST
        toEnum (4) = LP_SOLVER_NUM_OUT
        toEnum (0) = LP_SOLVER_X
        toEnum (2) = LP_SOLVER_LAM_A
        toEnum (3) = LP_SOLVER_LAM_X
        toEnum k
          = error $ "LPSolverOutput: toEnum: got unhandled number: " ++
              show k
instance Marshal LPSolverOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt LPSolverOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: GradFOutput
data GradFOutput = GRADF_NUM_OUT
                 | GRADF_GRAD
                 | GRADF_F
                 | GRADF_G
                 deriving (Show, Eq)
instance Enum GradFOutput where
        fromEnum (GRADF_NUM_OUT) = 3
        fromEnum (GRADF_GRAD) = 0
        fromEnum (GRADF_F) = 1
        fromEnum (GRADF_G) = 2
        toEnum (3) = GRADF_NUM_OUT
        toEnum (0) = GRADF_GRAD
        toEnum (1) = GRADF_F
        toEnum (2) = GRADF_G
        toEnum k
          = error $ "GradFOutput: toEnum: got unhandled number: " ++ show k
instance Marshal GradFOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt GradFOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SDQPInput
data SDQPInput = SDQP_SOLVER_LBX
               | SDQP_SOLVER_UBX
               | SDQP_SOLVER_UBA
               | SDQP_SOLVER_NUM_IN
               | SDQP_SOLVER_F
               | SDQP_SOLVER_G
               | SDQP_SOLVER_A
               | SDQP_SOLVER_C
               | SDQP_SOLVER_LBA
               | SDQP_SOLVER_H
               deriving (Show, Eq)
instance Enum SDQPInput where
        fromEnum (SDQP_SOLVER_LBX) = 7
        fromEnum (SDQP_SOLVER_UBX) = 8
        fromEnum (SDQP_SOLVER_UBA) = 6
        fromEnum (SDQP_SOLVER_NUM_IN) = 9
        fromEnum (SDQP_SOLVER_F) = 2
        fromEnum (SDQP_SOLVER_G) = 3
        fromEnum (SDQP_SOLVER_A) = 4
        fromEnum (SDQP_SOLVER_C) = 1
        fromEnum (SDQP_SOLVER_LBA) = 5
        fromEnum (SDQP_SOLVER_H) = 0
        toEnum (7) = SDQP_SOLVER_LBX
        toEnum (8) = SDQP_SOLVER_UBX
        toEnum (6) = SDQP_SOLVER_UBA
        toEnum (9) = SDQP_SOLVER_NUM_IN
        toEnum (2) = SDQP_SOLVER_F
        toEnum (3) = SDQP_SOLVER_G
        toEnum (4) = SDQP_SOLVER_A
        toEnum (1) = SDQP_SOLVER_C
        toEnum (5) = SDQP_SOLVER_LBA
        toEnum (0) = SDQP_SOLVER_H
        toEnum k
          = error $ "SDQPInput: toEnum: got unhandled number: " ++ show k
instance Marshal SDQPInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SDQPInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: OCPInput
data OCPInput = OCP_LBX
              | OCP_LBH
              | OCP_UBP
              | OCP_LBP
              | OCP_UBU
              | OCP_LBU
              | OCP_UBG
              | OCP_U_INIT
              | OCP_P_INIT
              | OCP_NUM_IN
              | OCP_X_INIT
              | OCP_UBX
              | OCP_LBG
              | OCP_UBH
              deriving (Show, Eq)
instance Enum OCPInput where
        fromEnum (OCP_LBX) = 0
        fromEnum (OCP_LBH) = 9
        fromEnum (OCP_UBP) = 7
        fromEnum (OCP_LBP) = 6
        fromEnum (OCP_UBU) = 4
        fromEnum (OCP_LBU) = 3
        fromEnum (OCP_UBG) = 12
        fromEnum (OCP_U_INIT) = 5
        fromEnum (OCP_P_INIT) = 8
        fromEnum (OCP_NUM_IN) = 13
        fromEnum (OCP_X_INIT) = 2
        fromEnum (OCP_UBX) = 1
        fromEnum (OCP_LBG) = 11
        fromEnum (OCP_UBH) = 10
        toEnum (0) = OCP_LBX
        toEnum (9) = OCP_LBH
        toEnum (7) = OCP_UBP
        toEnum (6) = OCP_LBP
        toEnum (4) = OCP_UBU
        toEnum (3) = OCP_LBU
        toEnum (12) = OCP_UBG
        toEnum (5) = OCP_U_INIT
        toEnum (8) = OCP_P_INIT
        toEnum (13) = OCP_NUM_IN
        toEnum (2) = OCP_X_INIT
        toEnum (1) = OCP_UBX
        toEnum (11) = OCP_LBG
        toEnum (10) = OCP_UBH
        toEnum k
          = error $ "OCPInput: toEnum: got unhandled number: " ++ show k
instance Marshal OCPInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt OCPInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: CollocationPoints
data CollocationPoints = LEGENDRE
                       | RADAU
                       deriving (Show, Eq)
instance Enum CollocationPoints where
        fromEnum (LEGENDRE) = 0
        fromEnum (RADAU) = 1
        toEnum (0) = LEGENDRE
        toEnum (1) = RADAU
        toEnum k
          = error $ "CollocationPoints: toEnum: got unhandled number: " ++
              show k
instance Marshal CollocationPoints CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt CollocationPoints where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: QCQPSolverOutput
data QCQPSolverOutput = QCQP_SOLVER_NUM_OUT
                      | QCQP_SOLVER_X
                      | QCQP_SOLVER_LAM_X
                      | QCQP_SOLVER_COST
                      | QCQP_SOLVER_LAM_A
                      deriving (Show, Eq)
instance Enum QCQPSolverOutput where
        fromEnum (QCQP_SOLVER_NUM_OUT) = 4
        fromEnum (QCQP_SOLVER_X) = 0
        fromEnum (QCQP_SOLVER_LAM_X) = 3
        fromEnum (QCQP_SOLVER_COST) = 1
        fromEnum (QCQP_SOLVER_LAM_A) = 2
        toEnum (4) = QCQP_SOLVER_NUM_OUT
        toEnum (0) = QCQP_SOLVER_X
        toEnum (3) = QCQP_SOLVER_LAM_X
        toEnum (1) = QCQP_SOLVER_COST
        toEnum (2) = QCQP_SOLVER_LAM_A
        toEnum k
          = error $ "QCQPSolverOutput: toEnum: got unhandled number: " ++
              show k
instance Marshal QCQPSolverOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt QCQPSolverOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: QPStruct
data QPStruct = QP_STRUCT_A
              | QP_STRUCT_H
              | QP_STRUCT_NUM
              deriving (Show, Eq)
instance Enum QPStruct where
        fromEnum (QP_STRUCT_A) = 1
        fromEnum (QP_STRUCT_H) = 0
        fromEnum (QP_STRUCT_NUM) = 2
        toEnum (1) = QP_STRUCT_A
        toEnum (0) = QP_STRUCT_H
        toEnum (2) = QP_STRUCT_NUM
        toEnum k
          = error $ "QPStruct: toEnum: got unhandled number: " ++ show k
instance Marshal QPStruct CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt QPStruct where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: MayerInput
data MayerInput = MAYER_X
                | MAYER_P
                | MAYER_NUM_IN
                deriving (Show, Eq)
instance Enum MayerInput where
        fromEnum (MAYER_X) = 0
        fromEnum (MAYER_P) = 1
        fromEnum (MAYER_NUM_IN) = 2
        toEnum (0) = MAYER_X
        toEnum (1) = MAYER_P
        toEnum (2) = MAYER_NUM_IN
        toEnum k
          = error $ "MayerInput: toEnum: got unhandled number: " ++ show k
instance Marshal MayerInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt MayerInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: ControlledDAEInput
data ControlledDAEInput = CONTROL_DAE_X
                        | CONTROL_DAE_Z
                        | CONTROL_DAE_NUM_IN
                        | CONTROL_DAE_P
                        | CONTROL_DAE_X_MAJOR
                        | CONTROL_DAE_TF
                        | CONTROL_DAE_T
                        | CONTROL_DAE_U
                        | CONTROL_DAE_U_INTERP
                        | CONTROL_DAE_T0
                        deriving (Show, Eq)
instance Enum ControlledDAEInput where
        fromEnum (CONTROL_DAE_X) = 1
        fromEnum (CONTROL_DAE_Z) = 2
        fromEnum (CONTROL_DAE_NUM_IN) = 9
        fromEnum (CONTROL_DAE_P) = 3
        fromEnum (CONTROL_DAE_X_MAJOR) = 6
        fromEnum (CONTROL_DAE_TF) = 8
        fromEnum (CONTROL_DAE_T) = 0
        fromEnum (CONTROL_DAE_U) = 4
        fromEnum (CONTROL_DAE_U_INTERP) = 5
        fromEnum (CONTROL_DAE_T0) = 7
        toEnum (1) = CONTROL_DAE_X
        toEnum (2) = CONTROL_DAE_Z
        toEnum (9) = CONTROL_DAE_NUM_IN
        toEnum (3) = CONTROL_DAE_P
        toEnum (6) = CONTROL_DAE_X_MAJOR
        toEnum (8) = CONTROL_DAE_TF
        toEnum (0) = CONTROL_DAE_T
        toEnum (4) = CONTROL_DAE_U
        toEnum (5) = CONTROL_DAE_U_INTERP
        toEnum (7) = CONTROL_DAE_T0
        toEnum k
          = error $ "ControlledDAEInput: toEnum: got unhandled number: " ++
              show k
instance Marshal ControlledDAEInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt ControlledDAEInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SDQPStruct
data SDQPStruct = SDQP_STRUCT_NUM
                | SDQP_STRUCT_H
                | SDQP_STRUCT_A
                | SDQP_STRUCT_F
                | SDQP_STRUCT_G
                deriving (Show, Eq)
instance Enum SDQPStruct where
        fromEnum (SDQP_STRUCT_NUM) = 4
        fromEnum (SDQP_STRUCT_H) = 0
        fromEnum (SDQP_STRUCT_A) = 3
        fromEnum (SDQP_STRUCT_F) = 1
        fromEnum (SDQP_STRUCT_G) = 2
        toEnum (4) = SDQP_STRUCT_NUM
        toEnum (0) = SDQP_STRUCT_H
        toEnum (3) = SDQP_STRUCT_A
        toEnum (1) = SDQP_STRUCT_F
        toEnum (2) = SDQP_STRUCT_G
        toEnum k
          = error $ "SDQPStruct: toEnum: got unhandled number: " ++ show k
instance Marshal SDQPStruct CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SDQPStruct where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: NLPInput
data NLPInput = NL_P
              | NL_NUM_IN
              | NL_X
              deriving (Show, Eq)
instance Enum NLPInput where
        fromEnum (NL_P) = 1
        fromEnum (NL_NUM_IN) = 2
        fromEnum (NL_X) = 0
        toEnum (1) = NL_P
        toEnum (2) = NL_NUM_IN
        toEnum (0) = NL_X
        toEnum k
          = error $ "NLPInput: toEnum: got unhandled number: " ++ show k
instance Marshal NLPInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt NLPInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SOCPStruct
data SOCPStruct = SOCP_STRUCT_G
                | SOCP_STRUCT_A
                | SOCP_STRUCT_NUM
                deriving (Show, Eq)
instance Enum SOCPStruct where
        fromEnum (SOCP_STRUCT_G) = 0
        fromEnum (SOCP_STRUCT_A) = 1
        fromEnum (SOCP_STRUCT_NUM) = 2
        toEnum (0) = SOCP_STRUCT_G
        toEnum (1) = SOCP_STRUCT_A
        toEnum (2) = SOCP_STRUCT_NUM
        toEnum k
          = error $ "SOCPStruct: toEnum: got unhandled number: " ++ show k
instance Marshal SOCPStruct CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SOCPStruct where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: IntegratorInput
data IntegratorInput = INTEGRATOR_RZ0
                     | INTEGRATOR_RX0
                     | INTEGRATOR_RP
                     | INTEGRATOR_NUM_IN
                     | INTEGRATOR_X0
                     | INTEGRATOR_Z0
                     | INTEGRATOR_P
                     deriving (Show, Eq)
instance Enum IntegratorInput where
        fromEnum (INTEGRATOR_RZ0) = 5
        fromEnum (INTEGRATOR_RX0) = 3
        fromEnum (INTEGRATOR_RP) = 4
        fromEnum (INTEGRATOR_NUM_IN) = 6
        fromEnum (INTEGRATOR_X0) = 0
        fromEnum (INTEGRATOR_Z0) = 2
        fromEnum (INTEGRATOR_P) = 1
        toEnum (5) = INTEGRATOR_RZ0
        toEnum (3) = INTEGRATOR_RX0
        toEnum (4) = INTEGRATOR_RP
        toEnum (6) = INTEGRATOR_NUM_IN
        toEnum (0) = INTEGRATOR_X0
        toEnum (2) = INTEGRATOR_Z0
        toEnum (1) = INTEGRATOR_P
        toEnum k
          = error $ "IntegratorInput: toEnum: got unhandled number: " ++
              show k
instance Marshal IntegratorInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt IntegratorInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: QPSolverInput
data QPSolverInput = QP_SOLVER_LBA
                   | QP_SOLVER_UBA
                   | QP_SOLVER_LAM_X0
                   | QP_SOLVER_NUM_IN
                   | QP_SOLVER_LBX
                   | QP_SOLVER_UBX
                   | QP_SOLVER_H
                   | QP_SOLVER_X0
                   | QP_SOLVER_G
                   | QP_SOLVER_A
                   deriving (Show, Eq)
instance Enum QPSolverInput where
        fromEnum (QP_SOLVER_LBA) = 3
        fromEnum (QP_SOLVER_UBA) = 4
        fromEnum (QP_SOLVER_LAM_X0) = 8
        fromEnum (QP_SOLVER_NUM_IN) = 9
        fromEnum (QP_SOLVER_LBX) = 5
        fromEnum (QP_SOLVER_UBX) = 6
        fromEnum (QP_SOLVER_H) = 0
        fromEnum (QP_SOLVER_X0) = 7
        fromEnum (QP_SOLVER_G) = 1
        fromEnum (QP_SOLVER_A) = 2
        toEnum (3) = QP_SOLVER_LBA
        toEnum (4) = QP_SOLVER_UBA
        toEnum (8) = QP_SOLVER_LAM_X0
        toEnum (9) = QP_SOLVER_NUM_IN
        toEnum (5) = QP_SOLVER_LBX
        toEnum (6) = QP_SOLVER_UBX
        toEnum (0) = QP_SOLVER_H
        toEnum (7) = QP_SOLVER_X0
        toEnum (1) = QP_SOLVER_G
        toEnum (2) = QP_SOLVER_A
        toEnum k
          = error $ "QPSolverInput: toEnum: got unhandled number: " ++ show k
instance Marshal QPSolverInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt QPSolverInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Sparsity
data Sparsity = DENSE
              | SPARSESYM
              | DENSESYM
              | SPARSE
              deriving (Show, Eq)
instance Enum Sparsity where
        fromEnum (DENSE) = 2
        fromEnum (SPARSESYM) = 1
        fromEnum (DENSESYM) = 3
        fromEnum (SPARSE) = 0
        toEnum (2) = DENSE
        toEnum (1) = SPARSESYM
        toEnum (3) = DENSESYM
        toEnum (0) = SPARSE
        toEnum k
          = error $ "Sparsity: toEnum: got unhandled number: " ++ show k
instance Marshal Sparsity CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Sparsity where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: OCPOutput
data OCPOutput = OCP_X_OPT
               | OCP_P_OPT
               | OCP_U_OPT
               | OCP_COST
               | OCP_NUM_OUT
               deriving (Show, Eq)
instance Enum OCPOutput where
        fromEnum (OCP_X_OPT) = 0
        fromEnum (OCP_P_OPT) = 2
        fromEnum (OCP_U_OPT) = 1
        fromEnum (OCP_COST) = 3
        fromEnum (OCP_NUM_OUT) = 4
        toEnum (0) = OCP_X_OPT
        toEnum (2) = OCP_P_OPT
        toEnum (1) = OCP_U_OPT
        toEnum (3) = OCP_COST
        toEnum (4) = OCP_NUM_OUT
        toEnum k
          = error $ "OCPOutput: toEnum: got unhandled number: " ++ show k
instance Marshal OCPOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt OCPOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: RDAEOutput
data RDAEOutput = RDAE_ODE
                | RDAE_NUM_OUT
                | RDAE_QUAD
                | RDAE_ALG
                deriving (Show, Eq)
instance Enum RDAEOutput where
        fromEnum (RDAE_ODE) = 0
        fromEnum (RDAE_NUM_OUT) = 3
        fromEnum (RDAE_QUAD) = 2
        fromEnum (RDAE_ALG) = 1
        toEnum (0) = RDAE_ODE
        toEnum (3) = RDAE_NUM_OUT
        toEnum (2) = RDAE_QUAD
        toEnum (1) = RDAE_ALG
        toEnum k
          = error $ "RDAEOutput: toEnum: got unhandled number: " ++ show k
instance Marshal RDAEOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt RDAEOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: DPLEInput
data DPLEInput = DPLE_V
               | DPLE_NUM_IN
               | DPLE_A
               deriving (Show, Eq)
instance Enum DPLEInput where
        fromEnum (DPLE_V) = 1
        fromEnum (DPLE_NUM_IN) = 2
        fromEnum (DPLE_A) = 0
        toEnum (1) = DPLE_V
        toEnum (2) = DPLE_NUM_IN
        toEnum (0) = DPLE_A
        toEnum k
          = error $ "DPLEInput: toEnum: got unhandled number: " ++ show k
instance Marshal DPLEInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt DPLEInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: JacGOutput
data JacGOutput = JACG_F
                | JACG_G
                | JACG_JAC
                | JACG_NUM_OUT
                deriving (Show, Eq)
instance Enum JacGOutput where
        fromEnum (JACG_F) = 1
        fromEnum (JACG_G) = 2
        fromEnum (JACG_JAC) = 0
        fromEnum (JACG_NUM_OUT) = 3
        toEnum (1) = JACG_F
        toEnum (2) = JACG_G
        toEnum (0) = JACG_JAC
        toEnum (3) = JACG_NUM_OUT
        toEnum k
          = error $ "JacGOutput: toEnum: got unhandled number: " ++ show k
instance Marshal JacGOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt JacGOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: QCQPStruct
data QCQPStruct = QCQP_STRUCT_NUM
                | QCQP_STRUCT_A
                | QCQP_STRUCT_H
                | QCQP_STRUCT_P
                deriving (Show, Eq)
instance Enum QCQPStruct where
        fromEnum (QCQP_STRUCT_NUM) = 3
        fromEnum (QCQP_STRUCT_A) = 2
        fromEnum (QCQP_STRUCT_H) = 0
        fromEnum (QCQP_STRUCT_P) = 1
        toEnum (3) = QCQP_STRUCT_NUM
        toEnum (2) = QCQP_STRUCT_A
        toEnum (0) = QCQP_STRUCT_H
        toEnum (1) = QCQP_STRUCT_P
        toEnum k
          = error $ "QCQPStruct: toEnum: got unhandled number: " ++ show k
instance Marshal QCQPStruct CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt QCQPStruct where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: LinsolOutput
data LinsolOutput = LINSOL_X
                  | LINSOL_NUM_OUT
                  deriving (Show, Eq)
instance Enum LinsolOutput where
        fromEnum (LINSOL_X) = 0
        fromEnum (LINSOL_NUM_OUT) = 1
        toEnum (0) = LINSOL_X
        toEnum (1) = LINSOL_NUM_OUT
        toEnum k
          = error $ "LinsolOutput: toEnum: got unhandled number: " ++ show k
instance Marshal LinsolOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt LinsolOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SDQPOutput
data SDQPOutput = SDQP_SOLVER_P
                | SDQP_SOLVER_LAM_X
                | SDQP_SOLVER_DUAL
                | SDQP_SOLVER_X
                | SDQP_SOLVER_DUAL_COST
                | SDQP_SOLVER_COST
                | SDQP_SOLVER_NUM_OUT
                | SDQP_SOLVER_LAM_A
                deriving (Show, Eq)
instance Enum SDQPOutput where
        fromEnum (SDQP_SOLVER_P) = 1
        fromEnum (SDQP_SOLVER_LAM_X) = 6
        fromEnum (SDQP_SOLVER_DUAL) = 2
        fromEnum (SDQP_SOLVER_X) = 0
        fromEnum (SDQP_SOLVER_DUAL_COST) = 4
        fromEnum (SDQP_SOLVER_COST) = 3
        fromEnum (SDQP_SOLVER_NUM_OUT) = 7
        fromEnum (SDQP_SOLVER_LAM_A) = 5
        toEnum (1) = SDQP_SOLVER_P
        toEnum (6) = SDQP_SOLVER_LAM_X
        toEnum (2) = SDQP_SOLVER_DUAL
        toEnum (0) = SDQP_SOLVER_X
        toEnum (4) = SDQP_SOLVER_DUAL_COST
        toEnum (3) = SDQP_SOLVER_COST
        toEnum (7) = SDQP_SOLVER_NUM_OUT
        toEnum (5) = SDQP_SOLVER_LAM_A
        toEnum k
          = error $ "SDQPOutput: toEnum: got unhandled number: " ++ show k
instance Marshal SDQPOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SDQPOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Type
data Type = INT
          | SLICE
          | IVECTOR
          | NILL
          deriving (Show, Eq)
instance Enum Type where
        fromEnum (INT) = 1
        fromEnum (SLICE) = 2
        fromEnum (IVECTOR) = 3
        fromEnum (NILL) = 0
        toEnum (1) = INT
        toEnum (2) = SLICE
        toEnum (3) = IVECTOR
        toEnum (0) = NILL
        toEnum k = error $ "Type: toEnum: got unhandled number: " ++ show k
instance Marshal Type CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Type where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: ControlSimulatorInput
data ControlSimulatorInput = CONTROLSIMULATOR_X0
                           | CONTROLSIMULATOR_NUM_IN
                           | CONTROLSIMULATOR_P
                           | CONTROLSIMULATOR_U
                           deriving (Show, Eq)
instance Enum ControlSimulatorInput where
        fromEnum (CONTROLSIMULATOR_X0) = 0
        fromEnum (CONTROLSIMULATOR_NUM_IN) = 3
        fromEnum (CONTROLSIMULATOR_P) = 1
        fromEnum (CONTROLSIMULATOR_U) = 2
        toEnum (0) = CONTROLSIMULATOR_X0
        toEnum (3) = CONTROLSIMULATOR_NUM_IN
        toEnum (1) = CONTROLSIMULATOR_P
        toEnum (2) = CONTROLSIMULATOR_U
        toEnum k
          = error $ "ControlSimulatorInput: toEnum: got unhandled number: "
              ++ show k
instance Marshal ControlSimulatorInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt ControlSimulatorInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Alias
data Alias = ALIAS
           | NO_ALIAS
           | NEGATED_ALIAS
           deriving (Show, Eq)
instance Enum Alias where
        fromEnum (ALIAS) = 1
        fromEnum (NO_ALIAS) = 0
        fromEnum (NEGATED_ALIAS) = 2
        toEnum (1) = ALIAS
        toEnum (0) = NO_ALIAS
        toEnum (2) = NEGATED_ALIAS
        toEnum k
          = error $ "Alias: toEnum: got unhandled number: " ++ show k
instance Marshal Alias CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Alias where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: SDPStruct
data SDPStruct = SDP_STRUCT_A
               | SDP_STRUCT_NUM
               | SDP_STRUCT_F
               | SDP_STRUCT_G
               deriving (Show, Eq)
instance Enum SDPStruct where
        fromEnum (SDP_STRUCT_A) = 2
        fromEnum (SDP_STRUCT_NUM) = 3
        fromEnum (SDP_STRUCT_F) = 0
        fromEnum (SDP_STRUCT_G) = 1
        toEnum (2) = SDP_STRUCT_A
        toEnum (3) = SDP_STRUCT_NUM
        toEnum (0) = SDP_STRUCT_F
        toEnum (1) = SDP_STRUCT_G
        toEnum k
          = error $ "SDPStruct: toEnum: got unhandled number: " ++ show k
instance Marshal SDPStruct CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt SDPStruct where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: JacGInput
data JacGInput = JACG_NUM_IN
               | JACG_P
               | JACG_X
               deriving (Show, Eq)
instance Enum JacGInput where
        fromEnum (JACG_NUM_IN) = 2
        fromEnum (JACG_P) = 1
        fromEnum (JACG_X) = 0
        toEnum (2) = JACG_NUM_IN
        toEnum (1) = JACG_P
        toEnum (0) = JACG_X
        toEnum k
          = error $ "JacGInput: toEnum: got unhandled number: " ++ show k
instance Marshal JacGInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt JacGInput 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
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt DPLEOutput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: HessLagInput
data HessLagInput = HESSLAG_NUM_IN
                  | HESSLAG_LAM_G
                  | HESSLAG_LAM_F
                  | HESSLAG_X
                  | HESSLAG_P
                  deriving (Show, Eq)
instance Enum HessLagInput where
        fromEnum (HESSLAG_NUM_IN) = 4
        fromEnum (HESSLAG_LAM_G) = 3
        fromEnum (HESSLAG_LAM_F) = 2
        fromEnum (HESSLAG_X) = 0
        fromEnum (HESSLAG_P) = 1
        toEnum (4) = HESSLAG_NUM_IN
        toEnum (3) = HESSLAG_LAM_G
        toEnum (2) = HESSLAG_LAM_F
        toEnum (0) = HESSLAG_X
        toEnum (1) = HESSLAG_P
        toEnum k
          = error $ "HessLagInput: toEnum: got unhandled number: " ++ show k
instance Marshal HessLagInput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt HessLagInput where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: Operation
data Operation = OP_SETNONZEROS
               | OP_FLOOR
               | OP_TAN
               | OP_NORMINF
               | OP_ERFINV
               | OP_FABS
               | OP_LT
               | OP_LIFT
               | OP_DETERMINANT
               | OP_SIN
               | OP_PARAMETER
               | OP_TANH
               | OP_MUL
               | OP_NOT
               | OP_IF_ELSE_ZERO
               | OP_PRINTME
               | OP_ERF
               | OP_LE
               | OP_CALL
               | OP_SOLVE
               | OP_NE
               | OP_NORM1
               | OP_CONSTPOW
               | OP_DIV
               | OP_RESHAPE
               | OP_INV
               | OP_NORM2
               | OP_AND
               | OP_COS
               | OP_GETNONZEROS
               | OP_FMAX
               | OP_CEIL
               | OP_POW
               | OP_INVERSE
               | OP_CONST
               | OP_LOG
               | OP_NEG
               | OP_SUBASSIGN
               | OP_ATAN
               | OP_SQRT
               | OP_ASSERTION
               | OP_VERTSPLIT
               | OP_ASINH
               | OP_COSH
               | OP_ASSIGN
               | OP_FMIN
               | OP_ADD
               | OP_SINH
               | OP_SUB
               | OP_SIGN
               | OP_SQ
               | OP_NORMF
               | OP_ACOSH
               | OP_EXP
               | OP_INPUT
               | OP_OUTPUT
               | OP_VERTCAT
               | OP_EQ
               | OP_INNER_PROD
               | OP_MATMUL
               | OP_TRANSPOSE
               | OP_ASIN
               | OP_COPYSIGN
               | OP_ATANH
               | NUM_BUILT_IN_OPS
               | OP_ACOS
               | OP_OR
               | OP_TWICE
               | OP_SUBREF
               | OP_ATAN2
               | OP_SET_SPARSE
               | OP_ADDNONZEROS
               deriving (Show, Eq)
instance Enum Operation where
        fromEnum (OP_SETNONZEROS) = 61
        fromEnum (OP_FLOOR) = 26
        fromEnum (OP_TAN) = 15
        fromEnum (OP_NORMINF) = 66
        fromEnum (OP_ERFINV) = 68
        fromEnum (OP_FABS) = 28
        fromEnum (OP_LT) = 19
        fromEnum (OP_LIFT) = 70
        fromEnum (OP_DETERMINANT) = 51
        fromEnum (OP_SIN) = 13
        fromEnum (OP_PARAMETER) = 46
        fromEnum (OP_TANH) = 38
        fromEnum (OP_MUL) = 3
        fromEnum (OP_NOT) = 23
        fromEnum (OP_IF_ELSE_ZERO) = 31
        fromEnum (OP_PRINTME) = 69
        fromEnum (OP_ERF) = 32
        fromEnum (OP_LE) = 20
        fromEnum (OP_CALL) = 47
        fromEnum (OP_SOLVE) = 49
        fromEnum (OP_NE) = 22
        fromEnum (OP_NORM1) = 65
        fromEnum (OP_CONSTPOW) = 9
        fromEnum (OP_DIV) = 4
        fromEnum (OP_RESHAPE) = 56
        fromEnum (OP_INV) = 35
        fromEnum (OP_NORM2) = 64
        fromEnum (OP_AND) = 24
        fromEnum (OP_COS) = 14
        fromEnum (OP_GETNONZEROS) = 59
        fromEnum (OP_FMAX) = 34
        fromEnum (OP_CEIL) = 27
        fromEnum (OP_POW) = 8
        fromEnum (OP_INVERSE) = 52
        fromEnum (OP_CONST) = 43
        fromEnum (OP_LOG) = 7
        fromEnum (OP_NEG) = 5
        fromEnum (OP_SUBASSIGN) = 58
        fromEnum (OP_ATAN) = 18
        fromEnum (OP_SQRT) = 10
        fromEnum (OP_ASSERTION) = 63
        fromEnum (OP_VERTSPLIT) = 55
        fromEnum (OP_ASINH) = 39
        fromEnum (OP_COSH) = 37
        fromEnum (OP_ASSIGN) = 0
        fromEnum (OP_FMIN) = 33
        fromEnum (OP_ADD) = 1
        fromEnum (OP_SINH) = 36
        fromEnum (OP_SUB) = 2
        fromEnum (OP_SIGN) = 29
        fromEnum (OP_SQ) = 11
        fromEnum (OP_NORMF) = 67
        fromEnum (OP_ACOSH) = 40
        fromEnum (OP_EXP) = 6
        fromEnum (OP_INPUT) = 44
        fromEnum (OP_OUTPUT) = 45
        fromEnum (OP_VERTCAT) = 54
        fromEnum (OP_EQ) = 21
        fromEnum (OP_INNER_PROD) = 53
        fromEnum (OP_MATMUL) = 48
        fromEnum (OP_TRANSPOSE) = 50
        fromEnum (OP_ASIN) = 16
        fromEnum (OP_COPYSIGN) = 30
        fromEnum (OP_ATANH) = 41
        fromEnum (NUM_BUILT_IN_OPS) = 71
        fromEnum (OP_ACOS) = 17
        fromEnum (OP_OR) = 25
        fromEnum (OP_TWICE) = 12
        fromEnum (OP_SUBREF) = 57
        fromEnum (OP_ATAN2) = 42
        fromEnum (OP_SET_SPARSE) = 62
        fromEnum (OP_ADDNONZEROS) = 60
        toEnum (61) = OP_SETNONZEROS
        toEnum (26) = OP_FLOOR
        toEnum (15) = OP_TAN
        toEnum (66) = OP_NORMINF
        toEnum (68) = OP_ERFINV
        toEnum (28) = OP_FABS
        toEnum (19) = OP_LT
        toEnum (70) = OP_LIFT
        toEnum (51) = OP_DETERMINANT
        toEnum (13) = OP_SIN
        toEnum (46) = OP_PARAMETER
        toEnum (38) = OP_TANH
        toEnum (3) = OP_MUL
        toEnum (23) = OP_NOT
        toEnum (31) = OP_IF_ELSE_ZERO
        toEnum (69) = OP_PRINTME
        toEnum (32) = OP_ERF
        toEnum (20) = OP_LE
        toEnum (47) = OP_CALL
        toEnum (49) = OP_SOLVE
        toEnum (22) = OP_NE
        toEnum (65) = OP_NORM1
        toEnum (9) = OP_CONSTPOW
        toEnum (4) = OP_DIV
        toEnum (56) = OP_RESHAPE
        toEnum (35) = OP_INV
        toEnum (64) = OP_NORM2
        toEnum (24) = OP_AND
        toEnum (14) = OP_COS
        toEnum (59) = OP_GETNONZEROS
        toEnum (34) = OP_FMAX
        toEnum (27) = OP_CEIL
        toEnum (8) = OP_POW
        toEnum (52) = OP_INVERSE
        toEnum (43) = OP_CONST
        toEnum (7) = OP_LOG
        toEnum (5) = OP_NEG
        toEnum (58) = OP_SUBASSIGN
        toEnum (18) = OP_ATAN
        toEnum (10) = OP_SQRT
        toEnum (63) = OP_ASSERTION
        toEnum (55) = OP_VERTSPLIT
        toEnum (39) = OP_ASINH
        toEnum (37) = OP_COSH
        toEnum (0) = OP_ASSIGN
        toEnum (33) = OP_FMIN
        toEnum (1) = OP_ADD
        toEnum (36) = OP_SINH
        toEnum (2) = OP_SUB
        toEnum (29) = OP_SIGN
        toEnum (11) = OP_SQ
        toEnum (67) = OP_NORMF
        toEnum (40) = OP_ACOSH
        toEnum (6) = OP_EXP
        toEnum (44) = OP_INPUT
        toEnum (45) = OP_OUTPUT
        toEnum (54) = OP_VERTCAT
        toEnum (21) = OP_EQ
        toEnum (53) = OP_INNER_PROD
        toEnum (48) = OP_MATMUL
        toEnum (50) = OP_TRANSPOSE
        toEnum (16) = OP_ASIN
        toEnum (30) = OP_COPYSIGN
        toEnum (41) = OP_ATANH
        toEnum (71) = NUM_BUILT_IN_OPS
        toEnum (17) = OP_ACOS
        toEnum (25) = OP_OR
        toEnum (12) = OP_TWICE
        toEnum (57) = OP_SUBREF
        toEnum (42) = OP_ATAN2
        toEnum (62) = OP_SET_SPARSE
        toEnum (60) = OP_ADDNONZEROS
        toEnum k
          = error $ "Operation: toEnum: got unhandled number: " ++ show k
instance Marshal Operation CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt Operation where
        wrapReturn = return . toEnum . fromIntegral

-- EnumDecl: QPSolverOutput
data QPSolverOutput = QP_SOLVER_LAM_X
                    | QP_SOLVER_COST
                    | QP_SOLVER_LAM_A
                    | QP_SOLVER_X
                    | QP_SOLVER_NUM_OUT
                    deriving (Show, Eq)
instance Enum QPSolverOutput where
        fromEnum (QP_SOLVER_LAM_X) = 3
        fromEnum (QP_SOLVER_COST) = 1
        fromEnum (QP_SOLVER_LAM_A) = 2
        fromEnum (QP_SOLVER_X) = 0
        fromEnum (QP_SOLVER_NUM_OUT) = 4
        toEnum (3) = QP_SOLVER_LAM_X
        toEnum (1) = QP_SOLVER_COST
        toEnum (2) = QP_SOLVER_LAM_A
        toEnum (0) = QP_SOLVER_X
        toEnum (4) = QP_SOLVER_NUM_OUT
        toEnum k
          = error $ "QPSolverOutput: toEnum: got unhandled number: " ++
              show k
instance Marshal QPSolverOutput CInt where
        withMarshal x f = f (fromIntegral (fromEnum x))
instance WrapReturn CInt QPSolverOutput where
        wrapReturn = return . toEnum . fromIntegral