packages feed

casadi-bindings-core-2.3.0.0: Casadi/Core/Data.hs

{-# OPTIONS_GHC -Wall #-}
{-# Language FlexibleInstances #-}
{-# Language MultiParamTypeClasses #-}

module Casadi.Core.Data where

import Prelude hiding ( Functor )

import Foreign.Ptr ( Ptr, FunPtr )
import Foreign.ForeignPtr ( ForeignPtr, castForeignPtr, newForeignPtr, touchForeignPtr )
import Foreign.ForeignPtr.Unsafe ( unsafeForeignPtrToPtr )

import Casadi.Internal.Marshal (  Marshal(..) )
import Casadi.Internal.WrapReturn ( WrapReturn(..) )
-- raw decl
data Callback'
-- data decl
{-|
-}
newtype Callback = Callback (ForeignPtr Callback')
-- typeclass decl
class CallbackClass a where
  castCallback :: a -> Callback
instance CallbackClass Callback where
  castCallback = id

-- baseclass instances
instance FunctorClass Callback where
  castFunctor (Callback x) = Functor (castForeignPtr x)

instance SharedObjectClass Callback where
  castSharedObject (Callback x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal Callback (Ptr Callback') where
  marshal (Callback x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Callback x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Callback" 
  c_delete_casadi__Callback :: FunPtr (Ptr Callback' -> IO ())
instance WrapReturn (Ptr Callback') Callback where
  wrapReturn = (fmap Callback) . (newForeignPtr c_delete_casadi__Callback)


-- raw decl
data CasadiMeta'
-- data decl
{-|
-}
newtype CasadiMeta = CasadiMeta (ForeignPtr CasadiMeta')
-- typeclass decl
class CasadiMetaClass a where
  castCasadiMeta :: a -> CasadiMeta
instance CasadiMetaClass CasadiMeta where
  castCasadiMeta = id

-- baseclass instances

-- helper instances
instance Marshal CasadiMeta (Ptr CasadiMeta') where
  marshal (CasadiMeta x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CasadiMeta x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__CasadiMeta" 
  c_delete_casadi__CasadiMeta :: FunPtr (Ptr CasadiMeta' -> IO ())
instance WrapReturn (Ptr CasadiMeta') CasadiMeta where
  wrapReturn = (fmap CasadiMeta) . (newForeignPtr c_delete_casadi__CasadiMeta)


-- raw decl
data CasadiOptions'
-- data decl
{-|
-}
newtype CasadiOptions = CasadiOptions (ForeignPtr CasadiOptions')
-- typeclass decl
class CasadiOptionsClass a where
  castCasadiOptions :: a -> CasadiOptions
instance CasadiOptionsClass CasadiOptions where
  castCasadiOptions = id

-- baseclass instances

-- helper instances
instance Marshal CasadiOptions (Ptr CasadiOptions') where
  marshal (CasadiOptions x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CasadiOptions x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__CasadiOptions" 
  c_delete_casadi__CasadiOptions :: FunPtr (Ptr CasadiOptions' -> IO ())
instance WrapReturn (Ptr CasadiOptions') CasadiOptions where
  wrapReturn = (fmap CasadiOptions) . (newForeignPtr c_delete_casadi__CasadiOptions)


-- raw decl
data CleSolver'
-- data decl
{-|
-}
newtype CleSolver = CleSolver (ForeignPtr CleSolver')
-- typeclass decl
class CleSolverClass a where
  castCleSolver :: a -> CleSolver
instance CleSolverClass CleSolver where
  castCleSolver = id

-- baseclass instances
instance FunctionClass CleSolver where
  castFunction (CleSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass CleSolver where
  castOptionsFunctionality (CleSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass CleSolver where
  castSharedObject (CleSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass CleSolver where
  castIOInterfaceFunction (CleSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal CleSolver (Ptr CleSolver') where
  marshal (CleSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CleSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__CleSolver" 
  c_delete_casadi__CleSolver :: FunPtr (Ptr CleSolver' -> IO ())
instance WrapReturn (Ptr CleSolver') CleSolver where
  wrapReturn = (fmap CleSolver) . (newForeignPtr c_delete_casadi__CleSolver)


-- raw decl
data ControlSimulator'
-- data decl
{-|
-}
newtype ControlSimulator = ControlSimulator (ForeignPtr ControlSimulator')
-- typeclass decl
class ControlSimulatorClass a where
  castControlSimulator :: a -> ControlSimulator
instance ControlSimulatorClass ControlSimulator where
  castControlSimulator = id

-- baseclass instances
instance FunctionClass ControlSimulator where
  castFunction (ControlSimulator x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass ControlSimulator where
  castOptionsFunctionality (ControlSimulator x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass ControlSimulator where
  castSharedObject (ControlSimulator x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass ControlSimulator where
  castIOInterfaceFunction (ControlSimulator x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal ControlSimulator (Ptr ControlSimulator') where
  marshal (ControlSimulator x) = return (unsafeForeignPtrToPtr x)
  marshalFree (ControlSimulator x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__ControlSimulator" 
  c_delete_casadi__ControlSimulator :: FunPtr (Ptr ControlSimulator' -> IO ())
instance WrapReturn (Ptr ControlSimulator') ControlSimulator where
  wrapReturn = (fmap ControlSimulator) . (newForeignPtr c_delete_casadi__ControlSimulator)


-- raw decl
data CustomEvaluate'
-- data decl
{-|
-}
newtype CustomEvaluate = CustomEvaluate (ForeignPtr CustomEvaluate')
-- typeclass decl
class CustomEvaluateClass a where
  castCustomEvaluate :: a -> CustomEvaluate
instance CustomEvaluateClass CustomEvaluate where
  castCustomEvaluate = id

-- baseclass instances
instance FunctorClass CustomEvaluate where
  castFunctor (CustomEvaluate x) = Functor (castForeignPtr x)

instance SharedObjectClass CustomEvaluate where
  castSharedObject (CustomEvaluate x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal CustomEvaluate (Ptr CustomEvaluate') where
  marshal (CustomEvaluate x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CustomEvaluate x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__CustomEvaluate" 
  c_delete_casadi__CustomEvaluate :: FunPtr (Ptr CustomEvaluate' -> IO ())
instance WrapReturn (Ptr CustomEvaluate') CustomEvaluate where
  wrapReturn = (fmap CustomEvaluate) . (newForeignPtr c_delete_casadi__CustomEvaluate)


-- raw decl
data CustomFunction'
-- data decl
{-|
-}
newtype CustomFunction = CustomFunction (ForeignPtr CustomFunction')
-- typeclass decl
class CustomFunctionClass a where
  castCustomFunction :: a -> CustomFunction
instance CustomFunctionClass CustomFunction where
  castCustomFunction = id

-- baseclass instances
instance FunctionClass CustomFunction where
  castFunction (CustomFunction x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass CustomFunction where
  castOptionsFunctionality (CustomFunction x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass CustomFunction where
  castSharedObject (CustomFunction x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass CustomFunction where
  castIOInterfaceFunction (CustomFunction x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal CustomFunction (Ptr CustomFunction') where
  marshal (CustomFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CustomFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__CustomFunction" 
  c_delete_casadi__CustomFunction :: FunPtr (Ptr CustomFunction' -> IO ())
instance WrapReturn (Ptr CustomFunction') CustomFunction where
  wrapReturn = (fmap CustomFunction) . (newForeignPtr c_delete_casadi__CustomFunction)


-- raw decl
data DMatrix'
-- data decl
{-|
-}
newtype DMatrix = DMatrix (ForeignPtr DMatrix')
-- typeclass decl
class DMatrixClass a where
  castDMatrix :: a -> DMatrix
instance DMatrixClass DMatrix where
  castDMatrix = id

-- baseclass instances

-- helper instances
instance Marshal DMatrix (Ptr DMatrix') where
  marshal (DMatrix x) = return (unsafeForeignPtrToPtr x)
  marshalFree (DMatrix x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__DMatrix" 
  c_delete_casadi__DMatrix :: FunPtr (Ptr DMatrix' -> IO ())
instance WrapReturn (Ptr DMatrix') DMatrix where
  wrapReturn = (fmap DMatrix) . (newForeignPtr c_delete_casadi__DMatrix)


-- raw decl
data DerivativeGenerator'
-- data decl
{-|
-}
newtype DerivativeGenerator = DerivativeGenerator (ForeignPtr DerivativeGenerator')
-- typeclass decl
class DerivativeGeneratorClass a where
  castDerivativeGenerator :: a -> DerivativeGenerator
instance DerivativeGeneratorClass DerivativeGenerator where
  castDerivativeGenerator = id

-- baseclass instances
instance FunctorClass DerivativeGenerator where
  castFunctor (DerivativeGenerator x) = Functor (castForeignPtr x)

instance SharedObjectClass DerivativeGenerator where
  castSharedObject (DerivativeGenerator x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal DerivativeGenerator (Ptr DerivativeGenerator') where
  marshal (DerivativeGenerator x) = return (unsafeForeignPtrToPtr x)
  marshalFree (DerivativeGenerator x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__DerivativeGenerator" 
  c_delete_casadi__DerivativeGenerator :: FunPtr (Ptr DerivativeGenerator' -> IO ())
instance WrapReturn (Ptr DerivativeGenerator') DerivativeGenerator where
  wrapReturn = (fmap DerivativeGenerator) . (newForeignPtr c_delete_casadi__DerivativeGenerator)


-- raw decl
data DleSolver'
-- data decl
{-|
-}
newtype DleSolver = DleSolver (ForeignPtr DleSolver')
-- typeclass decl
class DleSolverClass a where
  castDleSolver :: a -> DleSolver
instance DleSolverClass DleSolver where
  castDleSolver = id

-- baseclass instances
instance FunctionClass DleSolver where
  castFunction (DleSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass DleSolver where
  castOptionsFunctionality (DleSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass DleSolver where
  castSharedObject (DleSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass DleSolver where
  castIOInterfaceFunction (DleSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal DleSolver (Ptr DleSolver') where
  marshal (DleSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (DleSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__DleSolver" 
  c_delete_casadi__DleSolver :: FunPtr (Ptr DleSolver' -> IO ())
instance WrapReturn (Ptr DleSolver') DleSolver where
  wrapReturn = (fmap DleSolver) . (newForeignPtr c_delete_casadi__DleSolver)


-- raw decl
data DpleSolver'
-- data decl
{-|
-}
newtype DpleSolver = DpleSolver (ForeignPtr DpleSolver')
-- typeclass decl
class DpleSolverClass a where
  castDpleSolver :: a -> DpleSolver
instance DpleSolverClass DpleSolver where
  castDpleSolver = id

-- baseclass instances
instance FunctionClass DpleSolver where
  castFunction (DpleSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass DpleSolver where
  castOptionsFunctionality (DpleSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass DpleSolver where
  castSharedObject (DpleSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass DpleSolver where
  castIOInterfaceFunction (DpleSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal DpleSolver (Ptr DpleSolver') where
  marshal (DpleSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (DpleSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__DpleSolver" 
  c_delete_casadi__DpleSolver :: FunPtr (Ptr DpleSolver' -> IO ())
instance WrapReturn (Ptr DpleSolver') DpleSolver where
  wrapReturn = (fmap DpleSolver) . (newForeignPtr c_delete_casadi__DpleSolver)


-- raw decl
data ExternalFunction'
-- data decl
{-|
-}
newtype ExternalFunction = ExternalFunction (ForeignPtr ExternalFunction')
-- typeclass decl
class ExternalFunctionClass a where
  castExternalFunction :: a -> ExternalFunction
instance ExternalFunctionClass ExternalFunction where
  castExternalFunction = id

-- baseclass instances
instance FunctionClass ExternalFunction where
  castFunction (ExternalFunction x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass ExternalFunction where
  castOptionsFunctionality (ExternalFunction x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass ExternalFunction where
  castSharedObject (ExternalFunction x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass ExternalFunction where
  castIOInterfaceFunction (ExternalFunction x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal ExternalFunction (Ptr ExternalFunction') where
  marshal (ExternalFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (ExternalFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__ExternalFunction" 
  c_delete_casadi__ExternalFunction :: FunPtr (Ptr ExternalFunction' -> IO ())
instance WrapReturn (Ptr ExternalFunction') ExternalFunction where
  wrapReturn = (fmap ExternalFunction) . (newForeignPtr c_delete_casadi__ExternalFunction)


-- raw decl
data Function'
-- data decl
{-|
-}
newtype Function = Function (ForeignPtr Function')
-- typeclass decl
class FunctionClass a where
  castFunction :: a -> Function
instance FunctionClass Function where
  castFunction = id

-- baseclass instances
instance OptionsFunctionalityClass Function where
  castOptionsFunctionality (Function x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass Function where
  castSharedObject (Function x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass Function where
  castIOInterfaceFunction (Function x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal Function (Ptr Function') where
  marshal (Function x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Function x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Function" 
  c_delete_casadi__Function :: FunPtr (Ptr Function' -> IO ())
instance WrapReturn (Ptr Function') Function where
  wrapReturn = (fmap Function) . (newForeignPtr c_delete_casadi__Function)


-- raw decl
data Functor'
-- data decl
{-|
-}
newtype Functor = Functor (ForeignPtr Functor')
-- typeclass decl
class FunctorClass a where
  castFunctor :: a -> Functor
instance FunctorClass Functor where
  castFunctor = id

-- baseclass instances
instance SharedObjectClass Functor where
  castSharedObject (Functor x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal Functor (Ptr Functor') where
  marshal (Functor x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Functor x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Functor" 
  c_delete_casadi__Functor :: FunPtr (Ptr Functor' -> IO ())
instance WrapReturn (Ptr Functor') Functor where
  wrapReturn = (fmap Functor) . (newForeignPtr c_delete_casadi__Functor)


-- raw decl
data GenericType'
-- data decl
{-|
-}
newtype GenericType = GenericType (ForeignPtr GenericType')
-- typeclass decl
class GenericTypeClass a where
  castGenericType :: a -> GenericType
instance GenericTypeClass GenericType where
  castGenericType = id

-- baseclass instances
instance SharedObjectClass GenericType where
  castSharedObject (GenericType x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal GenericType (Ptr GenericType') where
  marshal (GenericType x) = return (unsafeForeignPtrToPtr x)
  marshalFree (GenericType x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__GenericType" 
  c_delete_casadi__GenericType :: FunPtr (Ptr GenericType' -> IO ())
instance WrapReturn (Ptr GenericType') GenericType where
  wrapReturn = (fmap GenericType) . (newForeignPtr c_delete_casadi__GenericType)


-- raw decl
data HomotopyNlpSolver'
-- data decl
{-|
-}
newtype HomotopyNlpSolver = HomotopyNlpSolver (ForeignPtr HomotopyNlpSolver')
-- typeclass decl
class HomotopyNlpSolverClass a where
  castHomotopyNlpSolver :: a -> HomotopyNlpSolver
instance HomotopyNlpSolverClass HomotopyNlpSolver where
  castHomotopyNlpSolver = id

-- baseclass instances
instance FunctionClass HomotopyNlpSolver where
  castFunction (HomotopyNlpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass HomotopyNlpSolver where
  castOptionsFunctionality (HomotopyNlpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass HomotopyNlpSolver where
  castSharedObject (HomotopyNlpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass HomotopyNlpSolver where
  castIOInterfaceFunction (HomotopyNlpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal HomotopyNlpSolver (Ptr HomotopyNlpSolver') where
  marshal (HomotopyNlpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (HomotopyNlpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__HomotopyNlpSolver" 
  c_delete_casadi__HomotopyNlpSolver :: FunPtr (Ptr HomotopyNlpSolver' -> IO ())
instance WrapReturn (Ptr HomotopyNlpSolver') HomotopyNlpSolver where
  wrapReturn = (fmap HomotopyNlpSolver) . (newForeignPtr c_delete_casadi__HomotopyNlpSolver)


-- raw decl
data IMatrix'
-- data decl
{-|
-}
newtype IMatrix = IMatrix (ForeignPtr IMatrix')
-- typeclass decl
class IMatrixClass a where
  castIMatrix :: a -> IMatrix
instance IMatrixClass IMatrix where
  castIMatrix = id

-- baseclass instances

-- helper instances
instance Marshal IMatrix (Ptr IMatrix') where
  marshal (IMatrix x) = return (unsafeForeignPtrToPtr x)
  marshalFree (IMatrix x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__IMatrix" 
  c_delete_casadi__IMatrix :: FunPtr (Ptr IMatrix' -> IO ())
instance WrapReturn (Ptr IMatrix') IMatrix where
  wrapReturn = (fmap IMatrix) . (newForeignPtr c_delete_casadi__IMatrix)


-- raw decl
data IOScheme'
-- data decl
{-|
-}
newtype IOScheme = IOScheme (ForeignPtr IOScheme')
-- typeclass decl
class IOSchemeClass a where
  castIOScheme :: a -> IOScheme
instance IOSchemeClass IOScheme where
  castIOScheme = id

-- baseclass instances
instance SharedObjectClass IOScheme where
  castSharedObject (IOScheme x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal IOScheme (Ptr IOScheme') where
  marshal (IOScheme x) = return (unsafeForeignPtrToPtr x)
  marshalFree (IOScheme x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__IOScheme" 
  c_delete_casadi__IOScheme :: FunPtr (Ptr IOScheme' -> IO ())
instance WrapReturn (Ptr IOScheme') IOScheme where
  wrapReturn = (fmap IOScheme) . (newForeignPtr c_delete_casadi__IOScheme)


-- raw decl
data ImplicitFunction'
-- data decl
{-|
-}
newtype ImplicitFunction = ImplicitFunction (ForeignPtr ImplicitFunction')
-- typeclass decl
class ImplicitFunctionClass a where
  castImplicitFunction :: a -> ImplicitFunction
instance ImplicitFunctionClass ImplicitFunction where
  castImplicitFunction = id

-- baseclass instances
instance FunctionClass ImplicitFunction where
  castFunction (ImplicitFunction x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass ImplicitFunction where
  castOptionsFunctionality (ImplicitFunction x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass ImplicitFunction where
  castSharedObject (ImplicitFunction x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass ImplicitFunction where
  castIOInterfaceFunction (ImplicitFunction x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal ImplicitFunction (Ptr ImplicitFunction') where
  marshal (ImplicitFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (ImplicitFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__ImplicitFunction" 
  c_delete_casadi__ImplicitFunction :: FunPtr (Ptr ImplicitFunction' -> IO ())
instance WrapReturn (Ptr ImplicitFunction') ImplicitFunction where
  wrapReturn = (fmap ImplicitFunction) . (newForeignPtr c_delete_casadi__ImplicitFunction)


-- raw decl
data Integrator'
-- data decl
{-|
-}
newtype Integrator = Integrator (ForeignPtr Integrator')
-- typeclass decl
class IntegratorClass a where
  castIntegrator :: a -> Integrator
instance IntegratorClass Integrator where
  castIntegrator = id

-- baseclass instances
instance FunctionClass Integrator where
  castFunction (Integrator x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass Integrator where
  castOptionsFunctionality (Integrator x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass Integrator where
  castSharedObject (Integrator x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass Integrator where
  castIOInterfaceFunction (Integrator x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal Integrator (Ptr Integrator') where
  marshal (Integrator x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Integrator x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Integrator" 
  c_delete_casadi__Integrator :: FunPtr (Ptr Integrator' -> IO ())
instance WrapReturn (Ptr Integrator') Integrator where
  wrapReturn = (fmap Integrator) . (newForeignPtr c_delete_casadi__Integrator)


-- raw decl
data LinearSolver'
-- data decl
{-|
-}
newtype LinearSolver = LinearSolver (ForeignPtr LinearSolver')
-- typeclass decl
class LinearSolverClass a where
  castLinearSolver :: a -> LinearSolver
instance LinearSolverClass LinearSolver where
  castLinearSolver = id

-- baseclass instances
instance FunctionClass LinearSolver where
  castFunction (LinearSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass LinearSolver where
  castOptionsFunctionality (LinearSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass LinearSolver where
  castSharedObject (LinearSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass LinearSolver where
  castIOInterfaceFunction (LinearSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal LinearSolver (Ptr LinearSolver') where
  marshal (LinearSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (LinearSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__LinearSolver" 
  c_delete_casadi__LinearSolver :: FunPtr (Ptr LinearSolver' -> IO ())
instance WrapReturn (Ptr LinearSolver') LinearSolver where
  wrapReturn = (fmap LinearSolver) . (newForeignPtr c_delete_casadi__LinearSolver)


-- raw decl
data LpSolver'
-- data decl
{-|
-}
newtype LpSolver = LpSolver (ForeignPtr LpSolver')
-- typeclass decl
class LpSolverClass a where
  castLpSolver :: a -> LpSolver
instance LpSolverClass LpSolver where
  castLpSolver = id

-- baseclass instances
instance FunctionClass LpSolver where
  castFunction (LpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass LpSolver where
  castOptionsFunctionality (LpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass LpSolver where
  castSharedObject (LpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass LpSolver where
  castIOInterfaceFunction (LpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal LpSolver (Ptr LpSolver') where
  marshal (LpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (LpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__LpSolver" 
  c_delete_casadi__LpSolver :: FunPtr (Ptr LpSolver' -> IO ())
instance WrapReturn (Ptr LpSolver') LpSolver where
  wrapReturn = (fmap LpSolver) . (newForeignPtr c_delete_casadi__LpSolver)


-- raw decl
data LrDleSolver'
-- data decl
{-|
-}
newtype LrDleSolver = LrDleSolver (ForeignPtr LrDleSolver')
-- typeclass decl
class LrDleSolverClass a where
  castLrDleSolver :: a -> LrDleSolver
instance LrDleSolverClass LrDleSolver where
  castLrDleSolver = id

-- baseclass instances
instance FunctionClass LrDleSolver where
  castFunction (LrDleSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass LrDleSolver where
  castOptionsFunctionality (LrDleSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass LrDleSolver where
  castSharedObject (LrDleSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass LrDleSolver where
  castIOInterfaceFunction (LrDleSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal LrDleSolver (Ptr LrDleSolver') where
  marshal (LrDleSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (LrDleSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__LrDleSolver" 
  c_delete_casadi__LrDleSolver :: FunPtr (Ptr LrDleSolver' -> IO ())
instance WrapReturn (Ptr LrDleSolver') LrDleSolver where
  wrapReturn = (fmap LrDleSolver) . (newForeignPtr c_delete_casadi__LrDleSolver)


-- raw decl
data LrDpleSolver'
-- data decl
{-|
-}
newtype LrDpleSolver = LrDpleSolver (ForeignPtr LrDpleSolver')
-- typeclass decl
class LrDpleSolverClass a where
  castLrDpleSolver :: a -> LrDpleSolver
instance LrDpleSolverClass LrDpleSolver where
  castLrDpleSolver = id

-- baseclass instances
instance FunctionClass LrDpleSolver where
  castFunction (LrDpleSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass LrDpleSolver where
  castOptionsFunctionality (LrDpleSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass LrDpleSolver where
  castSharedObject (LrDpleSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass LrDpleSolver where
  castIOInterfaceFunction (LrDpleSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal LrDpleSolver (Ptr LrDpleSolver') where
  marshal (LrDpleSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (LrDpleSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__LrDpleSolver" 
  c_delete_casadi__LrDpleSolver :: FunPtr (Ptr LrDpleSolver' -> IO ())
instance WrapReturn (Ptr LrDpleSolver') LrDpleSolver where
  wrapReturn = (fmap LrDpleSolver) . (newForeignPtr c_delete_casadi__LrDpleSolver)


-- raw decl
data MX'
-- data decl
{-|
-}
newtype MX = MX (ForeignPtr MX')
-- typeclass decl
class MXClass a where
  castMX :: a -> MX
instance MXClass MX where
  castMX = id

-- baseclass instances
instance SharedObjectClass MX where
  castSharedObject (MX x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal MX (Ptr MX') where
  marshal (MX x) = return (unsafeForeignPtrToPtr x)
  marshalFree (MX x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__MX" 
  c_delete_casadi__MX :: FunPtr (Ptr MX' -> IO ())
instance WrapReturn (Ptr MX') MX where
  wrapReturn = (fmap MX) . (newForeignPtr c_delete_casadi__MX)


-- raw decl
data MXFunction'
-- data decl
{-|
-}
newtype MXFunction = MXFunction (ForeignPtr MXFunction')
-- typeclass decl
class MXFunctionClass a where
  castMXFunction :: a -> MXFunction
instance MXFunctionClass MXFunction where
  castMXFunction = id

-- baseclass instances
instance FunctionClass MXFunction where
  castFunction (MXFunction x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass MXFunction where
  castOptionsFunctionality (MXFunction x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass MXFunction where
  castSharedObject (MXFunction x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass MXFunction where
  castIOInterfaceFunction (MXFunction x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal MXFunction (Ptr MXFunction') where
  marshal (MXFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (MXFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__MXFunction" 
  c_delete_casadi__MXFunction :: FunPtr (Ptr MXFunction' -> IO ())
instance WrapReturn (Ptr MXFunction') MXFunction where
  wrapReturn = (fmap MXFunction) . (newForeignPtr c_delete_casadi__MXFunction)


-- raw decl
data NlpSolver'
-- data decl
{-|
-}
newtype NlpSolver = NlpSolver (ForeignPtr NlpSolver')
-- typeclass decl
class NlpSolverClass a where
  castNlpSolver :: a -> NlpSolver
instance NlpSolverClass NlpSolver where
  castNlpSolver = id

-- baseclass instances
instance FunctionClass NlpSolver where
  castFunction (NlpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass NlpSolver where
  castOptionsFunctionality (NlpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass NlpSolver where
  castSharedObject (NlpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass NlpSolver where
  castIOInterfaceFunction (NlpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal NlpSolver (Ptr NlpSolver') where
  marshal (NlpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (NlpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__NlpSolver" 
  c_delete_casadi__NlpSolver :: FunPtr (Ptr NlpSolver' -> IO ())
instance WrapReturn (Ptr NlpSolver') NlpSolver where
  wrapReturn = (fmap NlpSolver) . (newForeignPtr c_delete_casadi__NlpSolver)


-- raw decl
data Nullspace'
-- data decl
{-|
-}
newtype Nullspace = Nullspace (ForeignPtr Nullspace')
-- typeclass decl
class NullspaceClass a where
  castNullspace :: a -> Nullspace
instance NullspaceClass Nullspace where
  castNullspace = id

-- baseclass instances
instance FunctionClass Nullspace where
  castFunction (Nullspace x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass Nullspace where
  castOptionsFunctionality (Nullspace x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass Nullspace where
  castSharedObject (Nullspace x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass Nullspace where
  castIOInterfaceFunction (Nullspace x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal Nullspace (Ptr Nullspace') where
  marshal (Nullspace x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Nullspace x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Nullspace" 
  c_delete_casadi__Nullspace :: FunPtr (Ptr Nullspace' -> IO ())
instance WrapReturn (Ptr Nullspace') Nullspace where
  wrapReturn = (fmap Nullspace) . (newForeignPtr c_delete_casadi__Nullspace)


-- raw decl
data OptionsFunctionality'
-- data decl
{-|
-}
newtype OptionsFunctionality = OptionsFunctionality (ForeignPtr OptionsFunctionality')
-- typeclass decl
class OptionsFunctionalityClass a where
  castOptionsFunctionality :: a -> OptionsFunctionality
instance OptionsFunctionalityClass OptionsFunctionality where
  castOptionsFunctionality = id

-- baseclass instances
instance SharedObjectClass OptionsFunctionality where
  castSharedObject (OptionsFunctionality x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal OptionsFunctionality (Ptr OptionsFunctionality') where
  marshal (OptionsFunctionality x) = return (unsafeForeignPtrToPtr x)
  marshalFree (OptionsFunctionality x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__OptionsFunctionality" 
  c_delete_casadi__OptionsFunctionality :: FunPtr (Ptr OptionsFunctionality' -> IO ())
instance WrapReturn (Ptr OptionsFunctionality') OptionsFunctionality where
  wrapReturn = (fmap OptionsFunctionality) . (newForeignPtr c_delete_casadi__OptionsFunctionality)


-- raw decl
data Parallelizer'
-- data decl
{-|
-}
newtype Parallelizer = Parallelizer (ForeignPtr Parallelizer')
-- typeclass decl
class ParallelizerClass a where
  castParallelizer :: a -> Parallelizer
instance ParallelizerClass Parallelizer where
  castParallelizer = id

-- baseclass instances
instance FunctionClass Parallelizer where
  castFunction (Parallelizer x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass Parallelizer where
  castOptionsFunctionality (Parallelizer x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass Parallelizer where
  castSharedObject (Parallelizer x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass Parallelizer where
  castIOInterfaceFunction (Parallelizer x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal Parallelizer (Ptr Parallelizer') where
  marshal (Parallelizer x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Parallelizer x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Parallelizer" 
  c_delete_casadi__Parallelizer :: FunPtr (Ptr Parallelizer' -> IO ())
instance WrapReturn (Ptr Parallelizer') Parallelizer where
  wrapReturn = (fmap Parallelizer) . (newForeignPtr c_delete_casadi__Parallelizer)


-- raw decl
data QcqpSolver'
-- data decl
{-|
-}
newtype QcqpSolver = QcqpSolver (ForeignPtr QcqpSolver')
-- typeclass decl
class QcqpSolverClass a where
  castQcqpSolver :: a -> QcqpSolver
instance QcqpSolverClass QcqpSolver where
  castQcqpSolver = id

-- baseclass instances
instance FunctionClass QcqpSolver where
  castFunction (QcqpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass QcqpSolver where
  castOptionsFunctionality (QcqpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass QcqpSolver where
  castSharedObject (QcqpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass QcqpSolver where
  castIOInterfaceFunction (QcqpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal QcqpSolver (Ptr QcqpSolver') where
  marshal (QcqpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (QcqpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__QcqpSolver" 
  c_delete_casadi__QcqpSolver :: FunPtr (Ptr QcqpSolver' -> IO ())
instance WrapReturn (Ptr QcqpSolver') QcqpSolver where
  wrapReturn = (fmap QcqpSolver) . (newForeignPtr c_delete_casadi__QcqpSolver)


-- raw decl
data QpSolver'
-- data decl
{-|
-}
newtype QpSolver = QpSolver (ForeignPtr QpSolver')
-- typeclass decl
class QpSolverClass a where
  castQpSolver :: a -> QpSolver
instance QpSolverClass QpSolver where
  castQpSolver = id

-- baseclass instances
instance FunctionClass QpSolver where
  castFunction (QpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass QpSolver where
  castOptionsFunctionality (QpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass QpSolver where
  castSharedObject (QpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass QpSolver where
  castIOInterfaceFunction (QpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal QpSolver (Ptr QpSolver') where
  marshal (QpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (QpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__QpSolver" 
  c_delete_casadi__QpSolver :: FunPtr (Ptr QpSolver' -> IO ())
instance WrapReturn (Ptr QpSolver') QpSolver where
  wrapReturn = (fmap QpSolver) . (newForeignPtr c_delete_casadi__QpSolver)


-- raw decl
data SX'
-- data decl
{-|
-}
newtype SX = SX (ForeignPtr SX')
-- typeclass decl
class SXClass a where
  castSX :: a -> SX
instance SXClass SX where
  castSX = id

-- baseclass instances

-- helper instances
instance Marshal SX (Ptr SX') where
  marshal (SX x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SX x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SX" 
  c_delete_casadi__SX :: FunPtr (Ptr SX' -> IO ())
instance WrapReturn (Ptr SX') SX where
  wrapReturn = (fmap SX) . (newForeignPtr c_delete_casadi__SX)


-- raw decl
data SXFunction'
-- data decl
{-|
-}
newtype SXFunction = SXFunction (ForeignPtr SXFunction')
-- typeclass decl
class SXFunctionClass a where
  castSXFunction :: a -> SXFunction
instance SXFunctionClass SXFunction where
  castSXFunction = id

-- baseclass instances
instance FunctionClass SXFunction where
  castFunction (SXFunction x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass SXFunction where
  castOptionsFunctionality (SXFunction x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass SXFunction where
  castSharedObject (SXFunction x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass SXFunction where
  castIOInterfaceFunction (SXFunction x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal SXFunction (Ptr SXFunction') where
  marshal (SXFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SXFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SXFunction" 
  c_delete_casadi__SXFunction :: FunPtr (Ptr SXFunction' -> IO ())
instance WrapReturn (Ptr SXFunction') SXFunction where
  wrapReturn = (fmap SXFunction) . (newForeignPtr c_delete_casadi__SXFunction)


-- raw decl
data SdpSolver'
-- data decl
{-|
-}
newtype SdpSolver = SdpSolver (ForeignPtr SdpSolver')
-- typeclass decl
class SdpSolverClass a where
  castSdpSolver :: a -> SdpSolver
instance SdpSolverClass SdpSolver where
  castSdpSolver = id

-- baseclass instances
instance FunctionClass SdpSolver where
  castFunction (SdpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass SdpSolver where
  castOptionsFunctionality (SdpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass SdpSolver where
  castSharedObject (SdpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass SdpSolver where
  castIOInterfaceFunction (SdpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal SdpSolver (Ptr SdpSolver') where
  marshal (SdpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SdpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SdpSolver" 
  c_delete_casadi__SdpSolver :: FunPtr (Ptr SdpSolver' -> IO ())
instance WrapReturn (Ptr SdpSolver') SdpSolver where
  wrapReturn = (fmap SdpSolver) . (newForeignPtr c_delete_casadi__SdpSolver)


-- raw decl
data SdqpSolver'
-- data decl
{-|
-}
newtype SdqpSolver = SdqpSolver (ForeignPtr SdqpSolver')
-- typeclass decl
class SdqpSolverClass a where
  castSdqpSolver :: a -> SdqpSolver
instance SdqpSolverClass SdqpSolver where
  castSdqpSolver = id

-- baseclass instances
instance FunctionClass SdqpSolver where
  castFunction (SdqpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass SdqpSolver where
  castOptionsFunctionality (SdqpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass SdqpSolver where
  castSharedObject (SdqpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass SdqpSolver where
  castIOInterfaceFunction (SdqpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal SdqpSolver (Ptr SdqpSolver') where
  marshal (SdqpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SdqpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SdqpSolver" 
  c_delete_casadi__SdqpSolver :: FunPtr (Ptr SdqpSolver' -> IO ())
instance WrapReturn (Ptr SdqpSolver') SdqpSolver where
  wrapReturn = (fmap SdqpSolver) . (newForeignPtr c_delete_casadi__SdqpSolver)


-- raw decl
data SharedObject'
-- data decl
{-|
-}
newtype SharedObject = SharedObject (ForeignPtr SharedObject')
-- typeclass decl
class SharedObjectClass a where
  castSharedObject :: a -> SharedObject
instance SharedObjectClass SharedObject where
  castSharedObject = id

-- baseclass instances

-- helper instances
instance Marshal SharedObject (Ptr SharedObject') where
  marshal (SharedObject x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SharedObject x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SharedObject" 
  c_delete_casadi__SharedObject :: FunPtr (Ptr SharedObject' -> IO ())
instance WrapReturn (Ptr SharedObject') SharedObject where
  wrapReturn = (fmap SharedObject) . (newForeignPtr c_delete_casadi__SharedObject)


-- raw decl
data Simulator'
-- data decl
{-|
-}
newtype Simulator = Simulator (ForeignPtr Simulator')
-- typeclass decl
class SimulatorClass a where
  castSimulator :: a -> Simulator
instance SimulatorClass Simulator where
  castSimulator = id

-- baseclass instances
instance FunctionClass Simulator where
  castFunction (Simulator x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass Simulator where
  castOptionsFunctionality (Simulator x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass Simulator where
  castSharedObject (Simulator x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass Simulator where
  castIOInterfaceFunction (Simulator x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal Simulator (Ptr Simulator') where
  marshal (Simulator x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Simulator x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Simulator" 
  c_delete_casadi__Simulator :: FunPtr (Ptr Simulator' -> IO ())
instance WrapReturn (Ptr Simulator') Simulator where
  wrapReturn = (fmap Simulator) . (newForeignPtr c_delete_casadi__Simulator)


-- raw decl
data Slice'
-- data decl
{-|
-}
newtype Slice = Slice (ForeignPtr Slice')
-- typeclass decl
class SliceClass a where
  castSlice :: a -> Slice
instance SliceClass Slice where
  castSlice = id

-- baseclass instances

-- helper instances
instance Marshal Slice (Ptr Slice') where
  marshal (Slice x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Slice x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Slice" 
  c_delete_casadi__Slice :: FunPtr (Ptr Slice' -> IO ())
instance WrapReturn (Ptr Slice') Slice where
  wrapReturn = (fmap Slice) . (newForeignPtr c_delete_casadi__Slice)


-- raw decl
data SocpSolver'
-- data decl
{-|
-}
newtype SocpSolver = SocpSolver (ForeignPtr SocpSolver')
-- typeclass decl
class SocpSolverClass a where
  castSocpSolver :: a -> SocpSolver
instance SocpSolverClass SocpSolver where
  castSocpSolver = id

-- baseclass instances
instance FunctionClass SocpSolver where
  castFunction (SocpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass SocpSolver where
  castOptionsFunctionality (SocpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass SocpSolver where
  castSharedObject (SocpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass SocpSolver where
  castIOInterfaceFunction (SocpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal SocpSolver (Ptr SocpSolver') where
  marshal (SocpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SocpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SocpSolver" 
  c_delete_casadi__SocpSolver :: FunPtr (Ptr SocpSolver' -> IO ())
instance WrapReturn (Ptr SocpSolver') SocpSolver where
  wrapReturn = (fmap SocpSolver) . (newForeignPtr c_delete_casadi__SocpSolver)


-- raw decl
data Sparsity'
-- data decl
{-|
-}
newtype Sparsity = Sparsity (ForeignPtr Sparsity')
-- typeclass decl
class SparsityClass a where
  castSparsity :: a -> Sparsity
instance SparsityClass Sparsity where
  castSparsity = id

-- baseclass instances
instance SharedObjectClass Sparsity where
  castSharedObject (Sparsity x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal Sparsity (Ptr Sparsity') where
  marshal (Sparsity x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Sparsity x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Sparsity" 
  c_delete_casadi__Sparsity :: FunPtr (Ptr Sparsity' -> IO ())
instance WrapReturn (Ptr Sparsity') Sparsity where
  wrapReturn = (fmap Sparsity) . (newForeignPtr c_delete_casadi__Sparsity)


-- raw decl
data StabilizedQpSolver'
-- data decl
{-|
-}
newtype StabilizedQpSolver = StabilizedQpSolver (ForeignPtr StabilizedQpSolver')
-- typeclass decl
class StabilizedQpSolverClass a where
  castStabilizedQpSolver :: a -> StabilizedQpSolver
instance StabilizedQpSolverClass StabilizedQpSolver where
  castStabilizedQpSolver = id

-- baseclass instances
instance FunctionClass StabilizedQpSolver where
  castFunction (StabilizedQpSolver x) = Function (castForeignPtr x)

instance OptionsFunctionalityClass StabilizedQpSolver where
  castOptionsFunctionality (StabilizedQpSolver x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass StabilizedQpSolver where
  castSharedObject (StabilizedQpSolver x) = SharedObject (castForeignPtr x)

instance IOInterfaceFunctionClass StabilizedQpSolver where
  castIOInterfaceFunction (StabilizedQpSolver x) = IOInterfaceFunction (castForeignPtr x)


-- helper instances
instance Marshal StabilizedQpSolver (Ptr StabilizedQpSolver') where
  marshal (StabilizedQpSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (StabilizedQpSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__StabilizedQpSolver" 
  c_delete_casadi__StabilizedQpSolver :: FunPtr (Ptr StabilizedQpSolver' -> IO ())
instance WrapReturn (Ptr StabilizedQpSolver') StabilizedQpSolver where
  wrapReturn = (fmap StabilizedQpSolver) . (newForeignPtr c_delete_casadi__StabilizedQpSolver)


-- raw decl
data SymbolicNLP'
-- data decl
{-|
-}
newtype SymbolicNLP = SymbolicNLP (ForeignPtr SymbolicNLP')
-- typeclass decl
class SymbolicNLPClass a where
  castSymbolicNLP :: a -> SymbolicNLP
instance SymbolicNLPClass SymbolicNLP where
  castSymbolicNLP = id

-- baseclass instances

-- helper instances
instance Marshal SymbolicNLP (Ptr SymbolicNLP') where
  marshal (SymbolicNLP x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SymbolicNLP x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SymbolicNLP" 
  c_delete_casadi__SymbolicNLP :: FunPtr (Ptr SymbolicNLP' -> IO ())
instance WrapReturn (Ptr SymbolicNLP') SymbolicNLP where
  wrapReturn = (fmap SymbolicNLP) . (newForeignPtr c_delete_casadi__SymbolicNLP)


-- raw decl
data SymbolicOCP'
-- data decl
{-|
-}
newtype SymbolicOCP = SymbolicOCP (ForeignPtr SymbolicOCP')
-- typeclass decl
class SymbolicOCPClass a where
  castSymbolicOCP :: a -> SymbolicOCP
instance SymbolicOCPClass SymbolicOCP where
  castSymbolicOCP = id

-- baseclass instances

-- helper instances
instance Marshal SymbolicOCP (Ptr SymbolicOCP') where
  marshal (SymbolicOCP x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SymbolicOCP x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__SymbolicOCP" 
  c_delete_casadi__SymbolicOCP :: FunPtr (Ptr SymbolicOCP' -> IO ())
instance WrapReturn (Ptr SymbolicOCP') SymbolicOCP where
  wrapReturn = (fmap SymbolicOCP) . (newForeignPtr c_delete_casadi__SymbolicOCP)


-- raw decl
data Variable'
-- data decl
{-|
-}
newtype Variable = Variable (ForeignPtr Variable')
-- typeclass decl
class VariableClass a where
  castVariable :: a -> Variable
instance VariableClass Variable where
  castVariable = id

-- baseclass instances

-- helper instances
instance Marshal Variable (Ptr Variable') where
  marshal (Variable x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Variable x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__Variable" 
  c_delete_casadi__Variable :: FunPtr (Ptr Variable' -> IO ())
instance WrapReturn (Ptr Variable') Variable where
  wrapReturn = (fmap Variable) . (newForeignPtr c_delete_casadi__Variable)


-- raw decl
data XmlFile'
-- data decl
{-|
-}
newtype XmlFile = XmlFile (ForeignPtr XmlFile')
-- typeclass decl
class XmlFileClass a where
  castXmlFile :: a -> XmlFile
instance XmlFileClass XmlFile where
  castXmlFile = id

-- baseclass instances
instance OptionsFunctionalityClass XmlFile where
  castOptionsFunctionality (XmlFile x) = OptionsFunctionality (castForeignPtr x)

instance SharedObjectClass XmlFile where
  castSharedObject (XmlFile x) = SharedObject (castForeignPtr x)


-- helper instances
instance Marshal XmlFile (Ptr XmlFile') where
  marshal (XmlFile x) = return (unsafeForeignPtrToPtr x)
  marshalFree (XmlFile x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__XmlFile" 
  c_delete_casadi__XmlFile :: FunPtr (Ptr XmlFile' -> IO ())
instance WrapReturn (Ptr XmlFile') XmlFile where
  wrapReturn = (fmap XmlFile) . (newForeignPtr c_delete_casadi__XmlFile)


-- raw decl
data IOInterfaceFunction'
-- data decl
{-|
-}
newtype IOInterfaceFunction = IOInterfaceFunction (ForeignPtr IOInterfaceFunction')
-- typeclass decl
class IOInterfaceFunctionClass a where
  castIOInterfaceFunction :: a -> IOInterfaceFunction
instance IOInterfaceFunctionClass IOInterfaceFunction where
  castIOInterfaceFunction = id

-- baseclass instances

-- helper instances
instance Marshal IOInterfaceFunction (Ptr IOInterfaceFunction') where
  marshal (IOInterfaceFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (IOInterfaceFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_casadi__IOInterface_casadi__Function_" 
  c_delete_casadi__IOInterface_casadi__Function_ :: FunPtr (Ptr IOInterfaceFunction' -> IO ())
instance WrapReturn (Ptr IOInterfaceFunction') IOInterfaceFunction where
  wrapReturn = (fmap IOInterfaceFunction) . (newForeignPtr c_delete_casadi__IOInterface_casadi__Function_)