diff --git a/Casadi/Callback.hs b/Casadi/Callback.hs
--- a/Casadi/Callback.hs
+++ b/Casadi/Callback.hs
@@ -1,7 +1,7 @@
 {-# OPTIONS_GHC -Wall #-}
 
 module Casadi.Callback ( makeCallback
-                       , fxSolveSafe
+                       , functionSolveSafe
                        ) where
 
 
@@ -15,32 +15,32 @@
 import Casadi.WrapReturn ( WrapReturn(..) )
 
 -- direct wrapper to a safe version of "solve"
-foreign import ccall safe "CasADi__FX__solve" c_CasADi__FX__solve_safe
-  :: Ptr FX' -> IO ()
+foreign import ccall safe "CasADi__Function__solve" c_CasADi__Function__solve_safe
+  :: Ptr Function' -> IO ()
 
-casADi__FX__solve_safe :: FX -> IO ()
-casADi__FX__solve_safe x0 =
+casADi__Function__solve_safe :: Function -> IO ()
+casADi__Function__solve_safe x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__FX__solve_safe x0' >>= wrapReturn
+  c_CasADi__Function__solve_safe x0' >>= wrapReturn
 
 -- | safe version of solve
-fxSolveSafe :: FXClass a => a -> IO ()
-fxSolveSafe x = casADi__FX__solve_safe (castFX x)
+functionSolveSafe :: FunctionClass a => a -> IO ()
+functionSolveSafe x = casADi__Function__solve_safe (castFunction x)
 
-type CasadiCallback' = Ptr FX' -> IO CInt
+type CasadiCallback' = Ptr Function' -> IO CInt
 foreign import ccall "wrapper" mkCallback :: CasadiCallback' -> IO (FunPtr CasadiCallback')
 
 foreign import ccall safe "new_callback_haskell" c_newCallbackHaskell
   :: FunPtr CasadiCallback' -> IO (Ptr Callback')
 
 -- | add a callback to an NLPSolver
-makeCallback :: (FX -> IO CInt) -> IO Callback
+makeCallback :: (Function -> IO CInt) -> IO Callback
 makeCallback callback = do
   -- safely wrap the callback into the C-friendly version
   let callback' :: CasadiCallback'
       callback' ptrFx = do
         foreignCFun <- newForeignPtr_ ptrFx
-        callback (FX foreignCFun)
+        callback (Function foreignCFun)
 
   -- turn the callback into a FunPtr
   callbackFunPtr <- mkCallback callback' :: IO (FunPtr CasadiCallback')
diff --git a/Casadi/Wrappers/Classes/CRSSparsity.hs b/Casadi/Wrappers/Classes/CRSSparsity.hs
deleted file mode 100644
--- a/Casadi/Wrappers/Classes/CRSSparsity.hs
+++ /dev/null
@@ -1,726 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# Language ForeignFunctionInterface #-}
-{-# Language FlexibleInstances #-}
-{-# Language MultiParamTypeClasses #-}
-
-module Casadi.Wrappers.Classes.CRSSparsity
-       (
-         CRSSparsity,
-         CRSSparsityClass(..),
-         crsSparsity,
-         crsSparsity',
-         crsSparsity_col,
-         crsSparsity_colRef,
-         crsSparsity_columnsSequential,
-         crsSparsity_dimString,
-         crsSparsity_empty,
-         crsSparsity_getElements,
-         crsSparsity_getNZ,
-         crsSparsity_getNZ'',
-         crsSparsity_getNZInplace,
-         crsSparsity_getRow,
-         crsSparsity_hasNZ,
-         crsSparsity_hash,
-         crsSparsity_null,
-         crsSparsity_numel,
-         crsSparsity_rowind,
-         crsSparsity_rowindRef,
-         crsSparsity_size,
-         crsSparsity_size1,
-         crsSparsity_size2,
-         crsSparsity_sizeD,
-         crsSparsity_sizeL,
-         crsSparsity_sizeU,
-         crsSparsity_spy',
-         crsSparsity_spyMatlab,
-         crsSparsity_starColoring,
-         crsSparsity_starColoring',
-         crsSparsity_starColoring'',
-         crsSparsity_starColoring2,
-         crsSparsity_starColoring2',
-         crsSparsity_starColoring2'',
-         crsSparsity_unidirectionalColoring,
-         crsSparsity_unidirectionalColoring',
-         crsSparsity_unidirectionalColoring'',
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.Classes.PrintableObject
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-instance Show CRSSparsity where
-  show = unsafePerformIO . printableObject_getDescription
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__size1" c_CasADi__CRSSparsity__size1
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__size1
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__size1 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__size1 x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of rows.
--}
-crsSparsity_size1 :: CRSSparsityClass a => a -> IO Int
-crsSparsity_size1 x = casADi__CRSSparsity__size1 (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__size2" c_CasADi__CRSSparsity__size2
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__size2
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__size2 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__size2 x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of columns.
--}
-crsSparsity_size2 :: CRSSparsityClass a => a -> IO Int
-crsSparsity_size2 x = casADi__CRSSparsity__size2 (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__numel" c_CasADi__CRSSparsity__numel
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__numel
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__numel x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__numel x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->The total number of elements, including structural zeros, i.e.
->size1()*size2()
->
->See:   size()
--}
-crsSparsity_numel :: CRSSparsityClass a => a -> IO Int
-crsSparsity_numel x = casADi__CRSSparsity__numel (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__empty" c_CasADi__CRSSparsity__empty
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__empty
-  :: CRSSparsity -> IO Bool
-casADi__CRSSparsity__empty x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__empty x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the sparsity is empty, i.e. one of its dimensions is 0.
--}
-crsSparsity_empty :: CRSSparsityClass a => a -> IO Bool
-crsSparsity_empty x = casADi__CRSSparsity__empty (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__null" c_CasADi__CRSSparsity__null
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__null
-  :: CRSSparsity -> IO Bool
-casADi__CRSSparsity__null x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__null x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the sparsity is null, i.e. dimension is 0-by-0.
--}
-crsSparsity_null :: CRSSparsityClass a => a -> IO Bool
-crsSparsity_null x = casADi__CRSSparsity__null (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__size" c_CasADi__CRSSparsity__size
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__size
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__size x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__size x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of (structural) non-zeros.
->
->See:   numel()
--}
-crsSparsity_size :: CRSSparsityClass a => a -> IO Int
-crsSparsity_size x = casADi__CRSSparsity__size (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__sizeU" c_CasADi__CRSSparsity__sizeU
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__sizeU
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__sizeU x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__sizeU x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Number of non-zeros in the upper triangular half, i.e. the number of
->elements (i,j) with j>=i.
--}
-crsSparsity_sizeU :: CRSSparsityClass a => a -> IO Int
-crsSparsity_sizeU x = casADi__CRSSparsity__sizeU (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__sizeL" c_CasADi__CRSSparsity__sizeL
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__sizeL
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__sizeL x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__sizeL x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Number of non-zeros in the lower triangular half, i.e. the number of
->elements (i,j) with j<=i.
--}
-crsSparsity_sizeL :: CRSSparsityClass a => a -> IO Int
-crsSparsity_sizeL x = casADi__CRSSparsity__sizeL (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__sizeD" c_CasADi__CRSSparsity__sizeD
-  :: Ptr CRSSparsity' -> IO CInt
-casADi__CRSSparsity__sizeD
-  :: CRSSparsity -> IO Int
-casADi__CRSSparsity__sizeD x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__sizeD x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Number of non-zeros on the diagonal, i.e. the number of elements (i,j) with
->j==i.
--}
-crsSparsity_sizeD :: CRSSparsityClass a => a -> IO Int
-crsSparsity_sizeD x = casADi__CRSSparsity__sizeD (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__col" c_CasADi__CRSSparsity__col
-  :: Ptr CRSSparsity' -> CInt -> IO CInt
-casADi__CRSSparsity__col
-  :: CRSSparsity -> Int -> IO Int
-casADi__CRSSparsity__col x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__col x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  const vector< int > & CasADi::CRSSparsity::col() const 
->------------------------------------------------------------------------
->
->Get a reference to col-vector, containing columns for all non-zero elements
->(see class description)
->
->>  int CasADi::CRSSparsity::col(int el) const 
->------------------------------------------------------------------------
->
->Get the column of a non-zero element.
--}
-crsSparsity_col :: CRSSparsityClass a => a -> Int -> IO Int
-crsSparsity_col x = casADi__CRSSparsity__col (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__rowind" c_CasADi__CRSSparsity__rowind
-  :: Ptr CRSSparsity' -> CInt -> IO CInt
-casADi__CRSSparsity__rowind
-  :: CRSSparsity -> Int -> IO Int
-casADi__CRSSparsity__rowind x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__rowind x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  const vector< int > & CasADi::CRSSparsity::rowind() const 
->------------------------------------------------------------------------
->
->Get a reference to the rowindex of all row element (see class description)
->
->>  int CasADi::CRSSparsity::rowind(int i) const 
->------------------------------------------------------------------------
->
->Get a reference to the rowindex of row i (see class description)
--}
-crsSparsity_rowind :: CRSSparsityClass a => a -> Int -> IO Int
-crsSparsity_rowind x = casADi__CRSSparsity__rowind (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__colRef" c_CasADi__CRSSparsity__colRef
-  :: Ptr CRSSparsity' -> IO (Ptr (CppVec CInt))
-casADi__CRSSparsity__colRef
-  :: CRSSparsity -> IO (Vector Int)
-casADi__CRSSparsity__colRef x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__colRef x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get a reference to the columns of all non-zero element (copy if not unique!)
--}
-crsSparsity_colRef :: CRSSparsityClass a => a -> IO (Vector Int)
-crsSparsity_colRef x = casADi__CRSSparsity__colRef (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__rowindRef" c_CasADi__CRSSparsity__rowindRef
-  :: Ptr CRSSparsity' -> IO (Ptr (CppVec CInt))
-casADi__CRSSparsity__rowindRef
-  :: CRSSparsity -> IO (Vector Int)
-casADi__CRSSparsity__rowindRef x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__rowindRef x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get a reference to the rowindex of all row element (copy if not unique!)
--}
-crsSparsity_rowindRef :: CRSSparsityClass a => a -> IO (Vector Int)
-crsSparsity_rowindRef x = casADi__CRSSparsity__rowindRef (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__getRow" c_CasADi__CRSSparsity__getRow
-  :: Ptr CRSSparsity' -> IO (Ptr (CppVec CInt))
-casADi__CRSSparsity__getRow
-  :: CRSSparsity -> IO (Vector Int)
-casADi__CRSSparsity__getRow x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__getRow x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the row for each non-zero entry Together with the col-vector, this
->vector gives the sparsity of the matrix in sparse triplet format, i.e. the
->row and column for each non-zero elements.
--}
-crsSparsity_getRow :: CRSSparsityClass a => a -> IO (Vector Int)
-crsSparsity_getRow x = casADi__CRSSparsity__getRow (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__getNZ" c_CasADi__CRSSparsity__getNZ
-  :: Ptr CRSSparsity' -> CInt -> CInt -> IO CInt
-casADi__CRSSparsity__getNZ
-  :: CRSSparsity -> Int -> Int -> IO Int
-casADi__CRSSparsity__getNZ x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__CRSSparsity__getNZ x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  int CasADi::CRSSparsity::getNZ(int i, int j)
->------------------------------------------------------------------------
->
->Get the index of a non-zero element Add the element if it does not exist and
->copy object if it's not unique.
->
->>  int CasADi::CRSSparsity::getNZ(int i, int j) const 
->------------------------------------------------------------------------
->
->Get the index of an existing non-zero element return -1 if the element does
->not exists.
->
->>  std::vector<int> CasADi::CRSSparsity::getNZ(const std::vector< int > &ii, const std::vector< int > &jj) const 
->------------------------------------------------------------------------
->
->Get a set of non-zero element return -1 if the element does not exists.
--}
-crsSparsity_getNZ :: CRSSparsityClass a => a -> Int -> Int -> IO Int
-crsSparsity_getNZ x = casADi__CRSSparsity__getNZ (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__getNZ_TIC_TIC" c_CasADi__CRSSparsity__getNZ_TIC_TIC
-  :: Ptr CRSSparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec CInt))
-casADi__CRSSparsity__getNZ''
-  :: CRSSparsity -> Vector Int -> Vector Int -> IO (Vector Int)
-casADi__CRSSparsity__getNZ'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__CRSSparsity__getNZ_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_getNZ'' :: CRSSparsityClass a => a -> Vector Int -> Vector Int -> IO (Vector Int)
-crsSparsity_getNZ'' x = casADi__CRSSparsity__getNZ'' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__hasNZ" c_CasADi__CRSSparsity__hasNZ
-  :: Ptr CRSSparsity' -> CInt -> CInt -> IO CInt
-casADi__CRSSparsity__hasNZ
-  :: CRSSparsity -> Int -> Int -> IO Bool
-casADi__CRSSparsity__hasNZ x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__CRSSparsity__hasNZ x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns true if the pattern has a non-zero at location i,j.
--}
-crsSparsity_hasNZ :: CRSSparsityClass a => a -> Int -> Int -> IO Bool
-crsSparsity_hasNZ x = casADi__CRSSparsity__hasNZ (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__getNZInplace" c_CasADi__CRSSparsity__getNZInplace
-  :: Ptr CRSSparsity' -> Ptr (CppVec CInt) -> IO ()
-casADi__CRSSparsity__getNZInplace
-  :: CRSSparsity -> Vector Int -> IO ()
-casADi__CRSSparsity__getNZInplace x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__getNZInplace x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the nonzero index for a set of elements The index vector is used both
->for input and outputs and must be sorted by increasing nonzero index, i.e.
->row-wise. Elements not found in the sparsity pattern are set to -1.
--}
-crsSparsity_getNZInplace :: CRSSparsityClass a => a -> Vector Int -> IO ()
-crsSparsity_getNZInplace x = casADi__CRSSparsity__getNZInplace (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__columnsSequential" c_CasADi__CRSSparsity__columnsSequential
-  :: Ptr CRSSparsity' -> CInt -> IO CInt
-casADi__CRSSparsity__columnsSequential
-  :: CRSSparsity -> Bool -> IO Bool
-casADi__CRSSparsity__columnsSequential x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__columnsSequential x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Does the columns appear sequentially on each row (if strictly==true, then do
->not allow multiple entries)
--}
-crsSparsity_columnsSequential :: CRSSparsityClass a => a -> Bool -> IO Bool
-crsSparsity_columnsSequential x = casADi__CRSSparsity__columnsSequential (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__getElements" c_CasADi__CRSSparsity__getElements
-  :: Ptr CRSSparsity' -> CInt -> IO (Ptr (CppVec CInt))
-casADi__CRSSparsity__getElements
-  :: CRSSparsity -> Bool -> IO (Vector Int)
-casADi__CRSSparsity__getElements x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__getElements x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  std::vector< int > CasADi::CRSSparsity::getElements(bool row_major=true) const 
->------------------------------------------------------------------------
->
->Get the location of all nonzero elements.
->
->>  void CasADi::CRSSparsity::getElements(std::vector< int > &loc, bool row_major=true) const 
->------------------------------------------------------------------------
->
->Get the location of all nonzero elements (inplace version)
--}
-crsSparsity_getElements :: CRSSparsityClass a => a -> Bool -> IO (Vector Int)
-crsSparsity_getElements x = casADi__CRSSparsity__getElements (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__unidirectionalColoring" c_CasADi__CRSSparsity__unidirectionalColoring
-  :: Ptr CRSSparsity' -> Ptr CRSSparsity' -> CInt -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__unidirectionalColoring
-  :: CRSSparsity -> CRSSparsity -> Int -> IO CRSSparsity
-casADi__CRSSparsity__unidirectionalColoring x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__CRSSparsity__unidirectionalColoring x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Perform a unidirectional coloring: A greedy distance-2 coloring algorithm
->(Algorithm 3.1 in A. H. GEBREMEDHIN, F. MANNE, A. POTHEN)
--}
-crsSparsity_unidirectionalColoring :: CRSSparsityClass a => a -> CRSSparsity -> Int -> IO CRSSparsity
-crsSparsity_unidirectionalColoring x = casADi__CRSSparsity__unidirectionalColoring (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__unidirectionalColoring_TIC" c_CasADi__CRSSparsity__unidirectionalColoring_TIC
-  :: Ptr CRSSparsity' -> Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__unidirectionalColoring'
-  :: CRSSparsity -> CRSSparsity -> IO CRSSparsity
-casADi__CRSSparsity__unidirectionalColoring' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__unidirectionalColoring_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_unidirectionalColoring' :: CRSSparsityClass a => a -> CRSSparsity -> IO CRSSparsity
-crsSparsity_unidirectionalColoring' x = casADi__CRSSparsity__unidirectionalColoring' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__unidirectionalColoring_TIC_TIC" c_CasADi__CRSSparsity__unidirectionalColoring_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__unidirectionalColoring''
-  :: CRSSparsity -> IO CRSSparsity
-casADi__CRSSparsity__unidirectionalColoring'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__unidirectionalColoring_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_unidirectionalColoring'' :: CRSSparsityClass a => a -> IO CRSSparsity
-crsSparsity_unidirectionalColoring'' x = casADi__CRSSparsity__unidirectionalColoring'' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__starColoring" c_CasADi__CRSSparsity__starColoring
-  :: Ptr CRSSparsity' -> CInt -> CInt -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__starColoring
-  :: CRSSparsity -> Int -> Int -> IO CRSSparsity
-casADi__CRSSparsity__starColoring x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__CRSSparsity__starColoring x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Perform a star coloring of a symmetric matrix: A greedy distance-2 coloring
->algorithm (Algorithm 4.1 in A. H. GEBREMEDHIN, F. MANNE, A. POTHEN) Ordering
->options: None (0), largest first (1)
--}
-crsSparsity_starColoring :: CRSSparsityClass a => a -> Int -> Int -> IO CRSSparsity
-crsSparsity_starColoring x = casADi__CRSSparsity__starColoring (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__starColoring_TIC" c_CasADi__CRSSparsity__starColoring_TIC
-  :: Ptr CRSSparsity' -> CInt -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__starColoring'
-  :: CRSSparsity -> Int -> IO CRSSparsity
-casADi__CRSSparsity__starColoring' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__starColoring_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_starColoring' :: CRSSparsityClass a => a -> Int -> IO CRSSparsity
-crsSparsity_starColoring' x = casADi__CRSSparsity__starColoring' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__starColoring_TIC_TIC" c_CasADi__CRSSparsity__starColoring_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__starColoring''
-  :: CRSSparsity -> IO CRSSparsity
-casADi__CRSSparsity__starColoring'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__starColoring_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_starColoring'' :: CRSSparsityClass a => a -> IO CRSSparsity
-crsSparsity_starColoring'' x = casADi__CRSSparsity__starColoring'' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__starColoring2" c_CasADi__CRSSparsity__starColoring2
-  :: Ptr CRSSparsity' -> CInt -> CInt -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__starColoring2
-  :: CRSSparsity -> Int -> Int -> IO CRSSparsity
-casADi__CRSSparsity__starColoring2 x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__CRSSparsity__starColoring2 x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Perform a star coloring of a symmetric matrix: A new greedy distance-2
->coloring algorithm (Algorithm 4.1 in A. H. GEBREMEDHIN, A. TARAFDAR, F.
->MANNE, A. POTHEN) Ordering options: None (0), largest first (1)
--}
-crsSparsity_starColoring2 :: CRSSparsityClass a => a -> Int -> Int -> IO CRSSparsity
-crsSparsity_starColoring2 x = casADi__CRSSparsity__starColoring2 (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__starColoring2_TIC" c_CasADi__CRSSparsity__starColoring2_TIC
-  :: Ptr CRSSparsity' -> CInt -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__starColoring2'
-  :: CRSSparsity -> Int -> IO CRSSparsity
-casADi__CRSSparsity__starColoring2' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__starColoring2_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_starColoring2' :: CRSSparsityClass a => a -> Int -> IO CRSSparsity
-crsSparsity_starColoring2' x = casADi__CRSSparsity__starColoring2' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__starColoring2_TIC_TIC" c_CasADi__CRSSparsity__starColoring2_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__starColoring2''
-  :: CRSSparsity -> IO CRSSparsity
-casADi__CRSSparsity__starColoring2'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__starColoring2_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_starColoring2'' :: CRSSparsityClass a => a -> IO CRSSparsity
-crsSparsity_starColoring2'' x = casADi__CRSSparsity__starColoring2'' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__dimString" c_CasADi__CRSSparsity__dimString
-  :: Ptr CRSSparsity' -> IO (Ptr StdString')
-casADi__CRSSparsity__dimString
-  :: CRSSparsity -> IO String
-casADi__CRSSparsity__dimString x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__dimString x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the dimension as a string.
--}
-crsSparsity_dimString :: CRSSparsityClass a => a -> IO String
-crsSparsity_dimString x = casADi__CRSSparsity__dimString (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__spy_TIC" c_CasADi__CRSSparsity__spy_TIC
-  :: Ptr CRSSparsity' -> IO ()
-casADi__CRSSparsity__spy'
-  :: CRSSparsity -> IO ()
-casADi__CRSSparsity__spy' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__spy_TIC x0' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_spy' :: CRSSparsityClass a => a -> IO ()
-crsSparsity_spy' x = casADi__CRSSparsity__spy' (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__spyMatlab" c_CasADi__CRSSparsity__spyMatlab
-  :: Ptr CRSSparsity' -> Ptr StdString' -> IO ()
-casADi__CRSSparsity__spyMatlab
-  :: CRSSparsity -> String -> IO ()
-casADi__CRSSparsity__spyMatlab x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__CRSSparsity__spyMatlab x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Generate a script for Matlab or Octave which visualizes the sparsity using
->the spy command.
--}
-crsSparsity_spyMatlab :: CRSSparsityClass a => a -> String -> IO ()
-crsSparsity_spyMatlab x = casADi__CRSSparsity__spyMatlab (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__hash" c_CasADi__CRSSparsity__hash
-  :: Ptr CRSSparsity' -> IO CSize
-casADi__CRSSparsity__hash
-  :: CRSSparsity -> IO CSize
-casADi__CRSSparsity__hash x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__CRSSparsity__hash x0' >>= wrapReturn
-
--- classy wrapper
-crsSparsity_hash :: CRSSparsityClass a => a -> IO CSize
-crsSparsity_hash x = casADi__CRSSparsity__hash (castCRSSparsity x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__CRSSparsity" c_CasADi__CRSSparsity__CRSSparsity
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr CRSSparsity')
-casADi__CRSSparsity__CRSSparsity
-  :: Int -> Int -> Vector Int -> Vector Int -> IO CRSSparsity
-casADi__CRSSparsity__CRSSparsity x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__CRSSparsity__CRSSparsity x0' x1' x2' x3' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  CasADi::CRSSparsity::CRSSparsity(int dummy=0)
->------------------------------------------------------------------------
->
->Default constructor.
->
->>  CasADi::CRSSparsity::CRSSparsity(int nrow, int ncol, bool dense=false)
->------------------------------------------------------------------------
->
->Construct a sparsity pattern (sparse/dense)
->
->>  CasADi::CRSSparsity::CRSSparsity(int nrow, int ncol, const std::vector< int > &col, const std::vector< int > &rowind)
->------------------------------------------------------------------------
->
->Construct a sparsity pattern from vectors.
--}
-crsSparsity :: Int -> Int -> Vector Int -> Vector Int -> IO CRSSparsity
-crsSparsity = casADi__CRSSparsity__CRSSparsity
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__CRSSparsity__CRSSparsity_TIC" c_CasADi__CRSSparsity__CRSSparsity_TIC
-  :: IO (Ptr CRSSparsity')
-casADi__CRSSparsity__CRSSparsity'
-  :: IO CRSSparsity
-casADi__CRSSparsity__CRSSparsity'  =
-  c_CasADi__CRSSparsity__CRSSparsity_TIC  >>= wrapReturn
-
--- classy wrapper
-crsSparsity' :: IO CRSSparsity
-crsSparsity' = casADi__CRSSparsity__CRSSparsity'
-
diff --git a/Casadi/Wrappers/Classes/CSparse.hs b/Casadi/Wrappers/Classes/CSparse.hs
--- a/Casadi/Wrappers/Classes/CSparse.hs
+++ b/Casadi/Wrappers/Classes/CSparse.hs
@@ -13,6 +13,7 @@
          csparse',
          csparse'',
          csparse_checkNode,
+         csparse_creator,
        ) where
 
 
@@ -52,6 +53,21 @@
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__CSparse__creator" c_CasADi__CSparse__creator
+  :: Ptr Sparsity' -> CInt -> IO (Ptr LinearSolver')
+casADi__CSparse__creator
+  :: Sparsity -> Int -> IO LinearSolver
+casADi__CSparse__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CSparse__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+csparse_creator :: Sparsity -> Int -> IO LinearSolver
+csparse_creator = casADi__CSparse__creator
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__CSparse__CSparse" c_CasADi__CSparse__CSparse
   :: IO (Ptr CSparse')
 casADi__CSparse__CSparse
@@ -66,7 +82,7 @@
 >
 >Default (empty) constructor.
 >
->>  CasADi::CSparse::CSparse(const CRSSparsity &sp, int nrhs=1)
+>>  CasADi::CSparse::CSparse(const Sparsity &sp, int nrhs=1)
 >------------------------------------------------------------------------
 >
 >Create a linear solver given a sparsity pattern.
@@ -77,29 +93,29 @@
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__CSparse__CSparse_TIC" c_CasADi__CSparse__CSparse_TIC
-  :: Ptr CRSSparsity' -> CInt -> IO (Ptr CSparse')
+  :: Ptr Sparsity' -> CInt -> IO (Ptr CSparse')
 casADi__CSparse__CSparse'
-  :: CRSSparsity -> Int -> IO CSparse
+  :: Sparsity -> Int -> IO CSparse
 casADi__CSparse__CSparse' x0 x1 =
   withMarshal x0 $ \x0' ->
   withMarshal x1 $ \x1' ->
   c_CasADi__CSparse__CSparse_TIC x0' x1' >>= wrapReturn
 
 -- classy wrapper
-csparse' :: CRSSparsity -> Int -> IO CSparse
+csparse' :: Sparsity -> Int -> IO CSparse
 csparse' = casADi__CSparse__CSparse'
 
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__CSparse__CSparse_TIC_TIC" c_CasADi__CSparse__CSparse_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CSparse')
+  :: Ptr Sparsity' -> IO (Ptr CSparse')
 casADi__CSparse__CSparse''
-  :: CRSSparsity -> IO CSparse
+  :: Sparsity -> IO CSparse
 casADi__CSparse__CSparse'' x0 =
   withMarshal x0 $ \x0' ->
   c_CasADi__CSparse__CSparse_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-csparse'' :: CRSSparsity -> IO CSparse
+csparse'' :: Sparsity -> IO CSparse
 csparse'' = casADi__CSparse__CSparse''
 
diff --git a/Casadi/Wrappers/Classes/CSparseCholesky.hs b/Casadi/Wrappers/Classes/CSparseCholesky.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/CSparseCholesky.hs
@@ -0,0 +1,189 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.CSparseCholesky
+       (
+         CSparseCholesky,
+         CSparseCholeskyClass(..),
+         csparseCholesky,
+         csparseCholesky',
+         csparseCholesky'',
+         csparseCholesky_checkNode,
+         csparseCholesky_creator,
+         csparseCholesky_getFactorization,
+         csparseCholesky_getFactorization',
+         csparseCholesky_getFactorizationSparsity,
+         csparseCholesky_getFactorizationSparsity',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show CSparseCholesky where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__checkNode" c_CasADi__CSparseCholesky__checkNode
+  :: Ptr CSparseCholesky' -> IO CInt
+casADi__CSparseCholesky__checkNode
+  :: CSparseCholesky -> IO Bool
+casADi__CSparseCholesky__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CSparseCholesky__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+csparseCholesky_checkNode :: CSparseCholeskyClass a => a -> IO Bool
+csparseCholesky_checkNode x = casADi__CSparseCholesky__checkNode (castCSparseCholesky x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__getFactorizationSparsity" c_CasADi__CSparseCholesky__getFactorizationSparsity
+  :: Ptr CSparseCholesky' -> CInt -> IO (Ptr Sparsity')
+casADi__CSparseCholesky__getFactorizationSparsity
+  :: CSparseCholesky -> Bool -> IO Sparsity
+casADi__CSparseCholesky__getFactorizationSparsity x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CSparseCholesky__getFactorizationSparsity x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Obtain a symbolic Cholesky factorization.
+-}
+csparseCholesky_getFactorizationSparsity :: CSparseCholeskyClass a => a -> Bool -> IO Sparsity
+csparseCholesky_getFactorizationSparsity x = casADi__CSparseCholesky__getFactorizationSparsity (castCSparseCholesky x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__getFactorizationSparsity_TIC" c_CasADi__CSparseCholesky__getFactorizationSparsity_TIC
+  :: Ptr CSparseCholesky' -> IO (Ptr Sparsity')
+casADi__CSparseCholesky__getFactorizationSparsity'
+  :: CSparseCholesky -> IO Sparsity
+casADi__CSparseCholesky__getFactorizationSparsity' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CSparseCholesky__getFactorizationSparsity_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+csparseCholesky_getFactorizationSparsity' :: CSparseCholeskyClass a => a -> IO Sparsity
+csparseCholesky_getFactorizationSparsity' x = casADi__CSparseCholesky__getFactorizationSparsity' (castCSparseCholesky x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__getFactorization" c_CasADi__CSparseCholesky__getFactorization
+  :: Ptr CSparseCholesky' -> CInt -> IO (Ptr DMatrix')
+casADi__CSparseCholesky__getFactorization
+  :: CSparseCholesky -> Bool -> IO DMatrix
+casADi__CSparseCholesky__getFactorization x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CSparseCholesky__getFactorization x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Obtain a numeric Cholesky factorization.
+-}
+csparseCholesky_getFactorization :: CSparseCholeskyClass a => a -> Bool -> IO DMatrix
+csparseCholesky_getFactorization x = casADi__CSparseCholesky__getFactorization (castCSparseCholesky x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__getFactorization_TIC" c_CasADi__CSparseCholesky__getFactorization_TIC
+  :: Ptr CSparseCholesky' -> IO (Ptr DMatrix')
+casADi__CSparseCholesky__getFactorization'
+  :: CSparseCholesky -> IO DMatrix
+casADi__CSparseCholesky__getFactorization' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CSparseCholesky__getFactorization_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+csparseCholesky_getFactorization' :: CSparseCholeskyClass a => a -> IO DMatrix
+csparseCholesky_getFactorization' x = casADi__CSparseCholesky__getFactorization' (castCSparseCholesky x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__creator" c_CasADi__CSparseCholesky__creator
+  :: Ptr Sparsity' -> CInt -> IO (Ptr LinearSolver')
+casADi__CSparseCholesky__creator
+  :: Sparsity -> Int -> IO LinearSolver
+casADi__CSparseCholesky__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CSparseCholesky__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+csparseCholesky_creator :: Sparsity -> Int -> IO LinearSolver
+csparseCholesky_creator = casADi__CSparseCholesky__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__CSparseCholesky" c_CasADi__CSparseCholesky__CSparseCholesky
+  :: IO (Ptr CSparseCholesky')
+casADi__CSparseCholesky__CSparseCholesky
+  :: IO CSparseCholesky
+casADi__CSparseCholesky__CSparseCholesky  =
+  c_CasADi__CSparseCholesky__CSparseCholesky  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::CSparseCholesky::CSparseCholesky()
+>------------------------------------------------------------------------
+>
+>Default (empty) constructor.
+>
+>>  CasADi::CSparseCholesky::CSparseCholesky(const Sparsity &sp, int nrhs=1)
+>------------------------------------------------------------------------
+>
+>Create a linear solver given a sparsity pattern.
+-}
+csparseCholesky :: IO CSparseCholesky
+csparseCholesky = casADi__CSparseCholesky__CSparseCholesky
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__CSparseCholesky_TIC" c_CasADi__CSparseCholesky__CSparseCholesky_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr CSparseCholesky')
+casADi__CSparseCholesky__CSparseCholesky'
+  :: Sparsity -> Int -> IO CSparseCholesky
+casADi__CSparseCholesky__CSparseCholesky' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CSparseCholesky__CSparseCholesky_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+csparseCholesky' :: Sparsity -> Int -> IO CSparseCholesky
+csparseCholesky' = casADi__CSparseCholesky__CSparseCholesky'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CSparseCholesky__CSparseCholesky_TIC_TIC" c_CasADi__CSparseCholesky__CSparseCholesky_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr CSparseCholesky')
+casADi__CSparseCholesky__CSparseCholesky''
+  :: Sparsity -> IO CSparseCholesky
+casADi__CSparseCholesky__CSparseCholesky'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CSparseCholesky__CSparseCholesky_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+csparseCholesky'' :: Sparsity -> IO CSparseCholesky
+csparseCholesky'' = casADi__CSparseCholesky__CSparseCholesky''
+
diff --git a/Casadi/Wrappers/Classes/CVodesIntegrator.hs b/Casadi/Wrappers/Classes/CVodesIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/CVodesIntegrator.hs
@@ -0,0 +1,185 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.CVodesIntegrator
+       (
+         CVodesIntegrator,
+         CVodesIntegratorClass(..),
+         cvodesIntegrator,
+         cvodesIntegrator',
+         cvodesIntegrator'',
+         cvodesIntegrator_checkNode,
+         cvodesIntegrator_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show CVodesIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CVodesIntegrator__checkNode" c_CasADi__CVodesIntegrator__checkNode
+  :: Ptr CVodesIntegrator' -> IO CInt
+casADi__CVodesIntegrator__checkNode
+  :: CVodesIntegrator -> IO Bool
+casADi__CVodesIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CVodesIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+cvodesIntegrator_checkNode :: CVodesIntegratorClass a => a -> IO Bool
+cvodesIntegrator_checkNode x = casADi__CVodesIntegrator__checkNode (castCVodesIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CVodesIntegrator__creator" c_CasADi__CVodesIntegrator__creator
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr Integrator')
+casADi__CVodesIntegrator__creator
+  :: Function -> Function -> IO Integrator
+casADi__CVodesIntegrator__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CVodesIntegrator__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+cvodesIntegrator_creator :: Function -> Function -> IO Integrator
+cvodesIntegrator_creator = casADi__CVodesIntegrator__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CVodesIntegrator__CVodesIntegrator" c_CasADi__CVodesIntegrator__CVodesIntegrator
+  :: IO (Ptr CVodesIntegrator')
+casADi__CVodesIntegrator__CVodesIntegrator
+  :: IO CVodesIntegrator
+casADi__CVodesIntegrator__CVodesIntegrator  =
+  c_CasADi__CVodesIntegrator__CVodesIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::CVodesIntegrator::CVodesIntegrator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::CVodesIntegrator::CVodesIntegrator(const Function &f, const Function &g=Function())
+>------------------------------------------------------------------------
+>
+>Create an integrator for explicit ODEs.
+>
+>Parameters:
+>-----------
+>
+>f:  dynamical system
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>g:  backwards system
+>
+>>Input scheme: CasADi::RDAEInput (RDAE_NUM_IN = 8) [rdaeIn]
+>+-----------+-------+-------------------------------+
+>| Full name | Short |          Description          |
+>+===========+=======+===============================+
+>| RDAE_RX   | rx    | Backward differential state . |
+>+-----------+-------+-------------------------------+
+>| RDAE_RZ   | rz    | Backward algebraic state .    |
+>+-----------+-------+-------------------------------+
+>| RDAE_RP   | rp    | Backward parameter vector .   |
+>+-----------+-------+-------------------------------+
+>| RDAE_X    | x     | Forward differential state .  |
+>+-----------+-------+-------------------------------+
+>| RDAE_Z    | z     | Forward algebraic state .     |
+>+-----------+-------+-------------------------------+
+>| RDAE_P    | p     | Parameter vector .            |
+>+-----------+-------+-------------------------------+
+>| RDAE_T    | t     | Explicit time dependence .    |
+>+-----------+-------+-------------------------------+
+>
+>>Output scheme: CasADi::RDAEOutput (RDAE_NUM_OUT = 4) [rdaeOut]
+>+-----------+-------+-------------------------------------------+
+>| Full name | Short |                Description                |
+>+===========+=======+===========================================+
+>| RDAE_ODE  | ode   | Right hand side of ODE. .                 |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_ALG  | alg   | Right hand side of algebraic equations. . |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_QUAD | quad  | Right hand side of quadratures. .         |
+>+-----------+-------+-------------------------------------------+
+-}
+cvodesIntegrator :: IO CVodesIntegrator
+cvodesIntegrator = casADi__CVodesIntegrator__CVodesIntegrator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CVodesIntegrator__CVodesIntegrator_TIC" c_CasADi__CVodesIntegrator__CVodesIntegrator_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr CVodesIntegrator')
+casADi__CVodesIntegrator__CVodesIntegrator'
+  :: Function -> Function -> IO CVodesIntegrator
+casADi__CVodesIntegrator__CVodesIntegrator' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CVodesIntegrator__CVodesIntegrator_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+cvodesIntegrator' :: Function -> Function -> IO CVodesIntegrator
+cvodesIntegrator' = casADi__CVodesIntegrator__CVodesIntegrator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CVodesIntegrator__CVodesIntegrator_TIC_TIC" c_CasADi__CVodesIntegrator__CVodesIntegrator_TIC_TIC
+  :: Ptr Function' -> IO (Ptr CVodesIntegrator')
+casADi__CVodesIntegrator__CVodesIntegrator''
+  :: Function -> IO CVodesIntegrator
+casADi__CVodesIntegrator__CVodesIntegrator'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CVodesIntegrator__CVodesIntegrator_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+cvodesIntegrator'' :: Function -> IO CVodesIntegrator
+cvodesIntegrator'' = casADi__CVodesIntegrator__CVodesIntegrator''
+
diff --git a/Casadi/Wrappers/Classes/CasadiOptions.hs b/Casadi/Wrappers/Classes/CasadiOptions.hs
--- a/Casadi/Wrappers/Classes/CasadiOptions.hs
+++ b/Casadi/Wrappers/Classes/CasadiOptions.hs
@@ -9,9 +9,15 @@
        (
          CasadiOptions,
          CasadiOptionsClass(..),
+         casadiOptions_getAllowedInternalAPI,
          casadiOptions_getCatchErrorsPython,
+         casadiOptions_getProfilingBinary,
          casadiOptions_getSimplificationOnTheFly,
+         casadiOptions_setAllowedInternalAPI,
          casadiOptions_setCatchErrorsPython,
+         casadiOptions_setProfilingBinary,
+         casadiOptions_setPurgeSeeds,
+         casadiOptions_setPurgeSeeds',
          casadiOptions_setSimplificationOnTheFly,
          casadiOptions_startProfiling,
          casadiOptions_stopProfiling,
@@ -112,4 +118,85 @@
 -- classy wrapper
 casadiOptions_stopProfiling :: IO ()
 casadiOptions_stopProfiling = casADi__CasadiOptions__stopProfiling
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CasadiOptions__setProfilingBinary" c_CasADi__CasadiOptions__setProfilingBinary
+  :: CInt -> IO ()
+casADi__CasadiOptions__setProfilingBinary
+  :: Bool -> IO ()
+casADi__CasadiOptions__setProfilingBinary x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CasadiOptions__setProfilingBinary x0' >>= wrapReturn
+
+-- classy wrapper
+casadiOptions_setProfilingBinary :: Bool -> IO ()
+casadiOptions_setProfilingBinary = casADi__CasadiOptions__setProfilingBinary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CasadiOptions__getProfilingBinary" c_CasADi__CasadiOptions__getProfilingBinary
+  :: IO CInt
+casADi__CasadiOptions__getProfilingBinary
+  :: IO Bool
+casADi__CasadiOptions__getProfilingBinary  =
+  c_CasADi__CasadiOptions__getProfilingBinary  >>= wrapReturn
+
+-- classy wrapper
+casadiOptions_getProfilingBinary :: IO Bool
+casadiOptions_getProfilingBinary = casADi__CasadiOptions__getProfilingBinary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CasadiOptions__setPurgeSeeds" c_CasADi__CasadiOptions__setPurgeSeeds
+  :: CInt -> IO ()
+casADi__CasadiOptions__setPurgeSeeds
+  :: Bool -> IO ()
+casADi__CasadiOptions__setPurgeSeeds x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CasadiOptions__setPurgeSeeds x0' >>= wrapReturn
+
+-- classy wrapper
+casadiOptions_setPurgeSeeds :: Bool -> IO ()
+casadiOptions_setPurgeSeeds = casADi__CasadiOptions__setPurgeSeeds
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CasadiOptions__setPurgeSeeds_TIC" c_CasADi__CasadiOptions__setPurgeSeeds_TIC
+  :: IO CInt
+casADi__CasadiOptions__setPurgeSeeds'
+  :: IO Bool
+casADi__CasadiOptions__setPurgeSeeds'  =
+  c_CasADi__CasadiOptions__setPurgeSeeds_TIC  >>= wrapReturn
+
+-- classy wrapper
+casadiOptions_setPurgeSeeds' :: IO Bool
+casadiOptions_setPurgeSeeds' = casADi__CasadiOptions__setPurgeSeeds'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CasadiOptions__setAllowedInternalAPI" c_CasADi__CasadiOptions__setAllowedInternalAPI
+  :: CInt -> IO ()
+casADi__CasadiOptions__setAllowedInternalAPI
+  :: Bool -> IO ()
+casADi__CasadiOptions__setAllowedInternalAPI x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CasadiOptions__setAllowedInternalAPI x0' >>= wrapReturn
+
+-- classy wrapper
+casadiOptions_setAllowedInternalAPI :: Bool -> IO ()
+casadiOptions_setAllowedInternalAPI = casADi__CasadiOptions__setAllowedInternalAPI
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CasadiOptions__getAllowedInternalAPI" c_CasADi__CasadiOptions__getAllowedInternalAPI
+  :: IO CInt
+casADi__CasadiOptions__getAllowedInternalAPI
+  :: IO Bool
+casADi__CasadiOptions__getAllowedInternalAPI  =
+  c_CasADi__CasadiOptions__getAllowedInternalAPI  >>= wrapReturn
+
+-- classy wrapper
+casadiOptions_getAllowedInternalAPI :: IO Bool
+casadiOptions_getAllowedInternalAPI = casADi__CasadiOptions__getAllowedInternalAPI
 
diff --git a/Casadi/Wrappers/Classes/CollocationIntegrator.hs b/Casadi/Wrappers/Classes/CollocationIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/CollocationIntegrator.hs
@@ -0,0 +1,185 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.CollocationIntegrator
+       (
+         CollocationIntegrator,
+         CollocationIntegratorClass(..),
+         collocationIntegrator,
+         collocationIntegrator',
+         collocationIntegrator'',
+         collocationIntegrator_checkNode,
+         collocationIntegrator_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show CollocationIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CollocationIntegrator__checkNode" c_CasADi__CollocationIntegrator__checkNode
+  :: Ptr CollocationIntegrator' -> IO CInt
+casADi__CollocationIntegrator__checkNode
+  :: CollocationIntegrator -> IO Bool
+casADi__CollocationIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CollocationIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+collocationIntegrator_checkNode :: CollocationIntegratorClass a => a -> IO Bool
+collocationIntegrator_checkNode x = casADi__CollocationIntegrator__checkNode (castCollocationIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CollocationIntegrator__creator" c_CasADi__CollocationIntegrator__creator
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr Integrator')
+casADi__CollocationIntegrator__creator
+  :: Function -> Function -> IO Integrator
+casADi__CollocationIntegrator__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CollocationIntegrator__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+collocationIntegrator_creator :: Function -> Function -> IO Integrator
+collocationIntegrator_creator = casADi__CollocationIntegrator__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CollocationIntegrator__CollocationIntegrator" c_CasADi__CollocationIntegrator__CollocationIntegrator
+  :: IO (Ptr CollocationIntegrator')
+casADi__CollocationIntegrator__CollocationIntegrator
+  :: IO CollocationIntegrator
+casADi__CollocationIntegrator__CollocationIntegrator  =
+  c_CasADi__CollocationIntegrator__CollocationIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::CollocationIntegrator::CollocationIntegrator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::CollocationIntegrator::CollocationIntegrator(const Function &f, const Function &g=Function())
+>------------------------------------------------------------------------
+>
+>Create an integrator for explicit ODEs.
+>
+>Parameters:
+>-----------
+>
+>f:  dynamical system
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>g:  backwards system
+>
+>>Input scheme: CasADi::RDAEInput (RDAE_NUM_IN = 8) [rdaeIn]
+>+-----------+-------+-------------------------------+
+>| Full name | Short |          Description          |
+>+===========+=======+===============================+
+>| RDAE_RX   | rx    | Backward differential state . |
+>+-----------+-------+-------------------------------+
+>| RDAE_RZ   | rz    | Backward algebraic state .    |
+>+-----------+-------+-------------------------------+
+>| RDAE_RP   | rp    | Backward parameter vector .   |
+>+-----------+-------+-------------------------------+
+>| RDAE_X    | x     | Forward differential state .  |
+>+-----------+-------+-------------------------------+
+>| RDAE_Z    | z     | Forward algebraic state .     |
+>+-----------+-------+-------------------------------+
+>| RDAE_P    | p     | Parameter vector .            |
+>+-----------+-------+-------------------------------+
+>| RDAE_T    | t     | Explicit time dependence .    |
+>+-----------+-------+-------------------------------+
+>
+>>Output scheme: CasADi::RDAEOutput (RDAE_NUM_OUT = 4) [rdaeOut]
+>+-----------+-------+-------------------------------------------+
+>| Full name | Short |                Description                |
+>+===========+=======+===========================================+
+>| RDAE_ODE  | ode   | Right hand side of ODE. .                 |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_ALG  | alg   | Right hand side of algebraic equations. . |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_QUAD | quad  | Right hand side of quadratures. .         |
+>+-----------+-------+-------------------------------------------+
+-}
+collocationIntegrator :: IO CollocationIntegrator
+collocationIntegrator = casADi__CollocationIntegrator__CollocationIntegrator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CollocationIntegrator__CollocationIntegrator_TIC" c_CasADi__CollocationIntegrator__CollocationIntegrator_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr CollocationIntegrator')
+casADi__CollocationIntegrator__CollocationIntegrator'
+  :: Function -> Function -> IO CollocationIntegrator
+casADi__CollocationIntegrator__CollocationIntegrator' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__CollocationIntegrator__CollocationIntegrator_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+collocationIntegrator' :: Function -> Function -> IO CollocationIntegrator
+collocationIntegrator' = casADi__CollocationIntegrator__CollocationIntegrator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__CollocationIntegrator__CollocationIntegrator_TIC_TIC" c_CasADi__CollocationIntegrator__CollocationIntegrator_TIC_TIC
+  :: Ptr Function' -> IO (Ptr CollocationIntegrator')
+casADi__CollocationIntegrator__CollocationIntegrator''
+  :: Function -> IO CollocationIntegrator
+casADi__CollocationIntegrator__CollocationIntegrator'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__CollocationIntegrator__CollocationIntegrator_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+collocationIntegrator'' :: Function -> IO CollocationIntegrator
+collocationIntegrator'' = casADi__CollocationIntegrator__CollocationIntegrator''
+
diff --git a/Casadi/Wrappers/Classes/ControlSimulator.hs b/Casadi/Wrappers/Classes/ControlSimulator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ControlSimulator.hs
@@ -0,0 +1,319 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ControlSimulator
+       (
+         ControlSimulator,
+         ControlSimulatorClass(..),
+         controlSimulator,
+         controlSimulator',
+         controlSimulator'',
+         controlSimulator''',
+         controlSimulator'''',
+         controlSimulator_checkNode,
+         controlSimulator_getMajorIndex,
+         controlSimulator_getMinorT,
+         controlSimulator_getMinorU,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show ControlSimulator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__checkNode" c_CasADi__ControlSimulator__checkNode
+  :: Ptr ControlSimulator' -> IO CInt
+casADi__ControlSimulator__checkNode
+  :: ControlSimulator -> IO Bool
+casADi__ControlSimulator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ControlSimulator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+controlSimulator_checkNode :: ControlSimulatorClass a => a -> IO Bool
+controlSimulator_checkNode x = casADi__ControlSimulator__checkNode (castControlSimulator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__getMinorT" c_CasADi__ControlSimulator__getMinorT
+  :: Ptr ControlSimulator' -> IO (Ptr (CppVec CDouble))
+casADi__ControlSimulator__getMinorT
+  :: ControlSimulator -> IO (Vector Double)
+casADi__ControlSimulator__getMinorT x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ControlSimulator__getMinorT x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the (minor) time grid The length is (ns-1)*nf + 1
+-}
+controlSimulator_getMinorT :: ControlSimulatorClass a => a -> IO (Vector Double)
+controlSimulator_getMinorT x = casADi__ControlSimulator__getMinorT (castControlSimulator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__getMinorU" c_CasADi__ControlSimulator__getMinorU
+  :: Ptr ControlSimulator' -> IO (Ptr DMatrix')
+casADi__ControlSimulator__getMinorU
+  :: ControlSimulator -> IO DMatrix
+casADi__ControlSimulator__getMinorU x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ControlSimulator__getMinorU x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the controls, sampled on the minor timescale. Number of rows is
+>(ns-1)*nf.
+-}
+controlSimulator_getMinorU :: ControlSimulatorClass a => a -> IO DMatrix
+controlSimulator_getMinorU x = casADi__ControlSimulator__getMinorU (castControlSimulator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__getMajorIndex" c_CasADi__ControlSimulator__getMajorIndex
+  :: Ptr ControlSimulator' -> IO (Ptr (CppVec CInt))
+casADi__ControlSimulator__getMajorIndex
+  :: ControlSimulator -> IO (Vector Int)
+casADi__ControlSimulator__getMajorIndex x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ControlSimulator__getMajorIndex x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the index i such that gridminor[i] == gridmajor.
+-}
+controlSimulator_getMajorIndex :: ControlSimulatorClass a => a -> IO (Vector Int)
+controlSimulator_getMajorIndex x = casADi__ControlSimulator__getMajorIndex (castControlSimulator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__ControlSimulator" c_CasADi__ControlSimulator__ControlSimulator
+  :: IO (Ptr ControlSimulator')
+casADi__ControlSimulator__ControlSimulator
+  :: IO ControlSimulator
+casADi__ControlSimulator__ControlSimulator  =
+  c_CasADi__ControlSimulator__ControlSimulator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::ControlSimulator::ControlSimulator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::ControlSimulator::ControlSimulator(const Function &dae, const Function &output_fcn, const std::vector< double > &grid)
+>------------------------------------------------------------------------
+>
+>Creates a piecewise simulator.
+>
+>Parameters:
+>-----------
+>
+>ffcn:  Continuous time dynamics, an CasADi::Function with the folowing
+>mapping:
+>
+>>Input scheme: CasADi::ControlledDAEInput (CONTROL_DAE_NUM_IN = 10) [controldaeIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| CONTROL_DAE_T          | t                      | Global physical time.  |
+>|                        |                        | (1-by-1) .             |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_X          | x                      | State vector           |
+>|                        |                        | (dimension nx-by-1).   |
+>|                        |                        | Should have same       |
+>|                        |                        | amount of non-zeros as |
+>|                        |                        | DAEOutput:DAE_RES .    |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_Z          | z                      | Algebraic state vector |
+>|                        |                        | (dimension np-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_P          | p                      | Parameter vector       |
+>|                        |                        | (dimension np-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_U          | u                      | Control vector         |
+>|                        |                        | (dimension nu-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_U_INTERP   | u_interp               | Control vector,        |
+>|                        |                        | linearly interpolated  |
+>|                        |                        | (dimension nu-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_X_MAJOR    | x_major                | State vector           |
+>|                        |                        | (dimension nx-by-1) at |
+>|                        |                        | the last major time-   |
+>|                        |                        | step .                 |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_T0         | t0                     | Time at start of       |
+>|                        |                        | control interval       |
+>|                        |                        | (1-by-1) .             |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_TF         | tf                     | Time at end of control |
+>|                        |                        | interval (1-by-1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>output_fcn:  output function which maps ControlledDAEInput or DAEInput to n
+>outputs.
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Input scheme: CasADi::ControlledDAEInput (CONTROL_DAE_NUM_IN = 10) [controldaeIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| CONTROL_DAE_T          | t                      | Global physical time.  |
+>|                        |                        | (1-by-1) .             |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_X          | x                      | State vector           |
+>|                        |                        | (dimension nx-by-1).   |
+>|                        |                        | Should have same       |
+>|                        |                        | amount of non-zeros as |
+>|                        |                        | DAEOutput:DAE_RES .    |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_Z          | z                      | Algebraic state vector |
+>|                        |                        | (dimension np-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_P          | p                      | Parameter vector       |
+>|                        |                        | (dimension np-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_U          | u                      | Control vector         |
+>|                        |                        | (dimension nu-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_U_INTERP   | u_interp               | Control vector,        |
+>|                        |                        | linearly interpolated  |
+>|                        |                        | (dimension nu-by-1). . |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_X_MAJOR    | x_major                | State vector           |
+>|                        |                        | (dimension nx-by-1) at |
+>|                        |                        | the last major time-   |
+>|                        |                        | step .                 |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_T0         | t0                     | Time at start of       |
+>|                        |                        | control interval       |
+>|                        |                        | (1-by-1) .             |
+>+------------------------+------------------------+------------------------+
+>| CONTROL_DAE_TF         | tf                     | Time at end of control |
+>|                        |                        | interval (1-by-1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>Parameters:
+>-----------
+>
+>grid:  the major time grid
+>
+>>  CasADi::ControlSimulator::ControlSimulator(const Function &dae, const std::vector< double > &grid)
+>------------------------------------------------------------------------
+>
+>Output function equal to the state.
+-}
+controlSimulator :: IO ControlSimulator
+controlSimulator = casADi__ControlSimulator__ControlSimulator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__ControlSimulator_TIC" c_CasADi__ControlSimulator__ControlSimulator_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr (CppVec CDouble) -> IO (Ptr ControlSimulator')
+casADi__ControlSimulator__ControlSimulator'
+  :: Function -> Function -> Vector Double -> IO ControlSimulator
+casADi__ControlSimulator__ControlSimulator' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__ControlSimulator__ControlSimulator_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+controlSimulator' :: Function -> Function -> Vector Double -> IO ControlSimulator
+controlSimulator' = casADi__ControlSimulator__ControlSimulator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__ControlSimulator_TIC_TIC" c_CasADi__ControlSimulator__ControlSimulator_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr DMatrix' -> IO (Ptr ControlSimulator')
+casADi__ControlSimulator__ControlSimulator''
+  :: Function -> Function -> DMatrix -> IO ControlSimulator
+casADi__ControlSimulator__ControlSimulator'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__ControlSimulator__ControlSimulator_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+controlSimulator'' :: Function -> Function -> DMatrix -> IO ControlSimulator
+controlSimulator'' = casADi__ControlSimulator__ControlSimulator''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__ControlSimulator_TIC_TIC_TIC" c_CasADi__ControlSimulator__ControlSimulator_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec CDouble) -> IO (Ptr ControlSimulator')
+casADi__ControlSimulator__ControlSimulator'''
+  :: Function -> Vector Double -> IO ControlSimulator
+casADi__ControlSimulator__ControlSimulator''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__ControlSimulator__ControlSimulator_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+controlSimulator''' :: Function -> Vector Double -> IO ControlSimulator
+controlSimulator''' = casADi__ControlSimulator__ControlSimulator'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ControlSimulator__ControlSimulator_TIC_TIC_TIC_TIC" c_CasADi__ControlSimulator__ControlSimulator_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr DMatrix' -> IO (Ptr ControlSimulator')
+casADi__ControlSimulator__ControlSimulator''''
+  :: Function -> DMatrix -> IO ControlSimulator
+casADi__ControlSimulator__ControlSimulator'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__ControlSimulator__ControlSimulator_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+controlSimulator'''' :: Function -> DMatrix -> IO ControlSimulator
+controlSimulator'''' = casADi__ControlSimulator__ControlSimulator''''
+
diff --git a/Casadi/Wrappers/Classes/CustomFunction.hs b/Casadi/Wrappers/Classes/CustomFunction.hs
--- a/Casadi/Wrappers/Classes/CustomFunction.hs
+++ b/Casadi/Wrappers/Classes/CustomFunction.hs
@@ -61,13 +61,13 @@
 
 -- classy wrapper
 {-|
->>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const std::vector< CRSSparsity > &inputscheme, const std::vector< CRSSparsity > &outputscheme)
+>>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const std::vector< Sparsity > &inputscheme, const std::vector< Sparsity > &outputscheme)
 >
->>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const IOSchemeVector< CRSSparsity > &inputscheme, const std::vector< CRSSparsity > &outputscheme)
+>>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const IOSchemeVector< Sparsity > &inputscheme, const std::vector< Sparsity > &outputscheme)
 >
->>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const std::vector< CRSSparsity > &inputscheme, const IOSchemeVector< CRSSparsity > &outputscheme)
+>>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const std::vector< Sparsity > &inputscheme, const IOSchemeVector< Sparsity > &outputscheme)
 >
->>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const IOSchemeVector< CRSSparsity > &inputscheme, const IOSchemeVector< CRSSparsity > &outputscheme)
+>>  CasADi::CustomFunction::CustomFunction(const CustomEvaluate &c_fcn, const IOSchemeVector< Sparsity > &inputscheme, const IOSchemeVector< Sparsity > &outputscheme)
 >------------------------------------------------------------------------
 >
 >Create a function with input/output schemes given.
@@ -88,9 +88,9 @@
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__CustomFunction__CustomFunction_TIC" c_CasADi__CustomFunction__CustomFunction_TIC
-  :: Ptr CustomEvaluate' -> Ptr (CppVec (Ptr CRSSparsity')) -> Ptr (CppVec (Ptr CRSSparsity')) -> IO (Ptr CustomFunction')
+  :: Ptr CustomEvaluate' -> Ptr (CppVec (Ptr Sparsity')) -> Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr CustomFunction')
 casADi__CustomFunction__CustomFunction'
-  :: CustomEvaluate -> Vector CRSSparsity -> Vector CRSSparsity -> IO CustomFunction
+  :: CustomEvaluate -> Vector Sparsity -> Vector Sparsity -> IO CustomFunction
 casADi__CustomFunction__CustomFunction' x0 x1 x2 =
   withMarshal x0 $ \x0' ->
   withMarshal x1 $ \x1' ->
@@ -98,7 +98,7 @@
   c_CasADi__CustomFunction__CustomFunction_TIC x0' x1' x2' >>= wrapReturn
 
 -- classy wrapper
-customFunction' :: CustomEvaluate -> Vector CRSSparsity -> Vector CRSSparsity -> IO CustomFunction
+customFunction' :: CustomEvaluate -> Vector Sparsity -> Vector Sparsity -> IO CustomFunction
 customFunction' = casADi__CustomFunction__CustomFunction'
 
 
diff --git a/Casadi/Wrappers/Classes/DMatrix.hs b/Casadi/Wrappers/Classes/DMatrix.hs
--- a/Casadi/Wrappers/Classes/DMatrix.hs
+++ b/Casadi/Wrappers/Classes/DMatrix.hs
@@ -21,2659 +21,3803 @@
          dmatrix''''''''',
          dmatrix'''''''''',
          dmatrix''''''''''',
-         dmatrix'''''''''''',
-         dmatrix___add__,
-         dmatrix___constpow__,
-         dmatrix___div__,
-         dmatrix___eq__,
-         dmatrix___le__,
-         dmatrix___lt__,
-         dmatrix___mpower__,
-         dmatrix___mrdivide__,
-         dmatrix___mul__,
-         dmatrix___ne__,
-         dmatrix___nonzero__,
-         dmatrix___pow__,
-         dmatrix___sub__,
-         dmatrix___truediv__,
-         dmatrix_append,
-         dmatrix_arccos,
-         dmatrix_arccosh,
-         dmatrix_arcsin,
-         dmatrix_arcsinh,
-         dmatrix_arctan,
-         dmatrix_arctan2,
-         dmatrix_arctanh,
-         dmatrix_at,
-         dmatrix_binary,
-         dmatrix_ceil,
-         dmatrix_className,
-         dmatrix_clear,
-         dmatrix_col,
-         dmatrix_cos,
-         dmatrix_cosh,
-         dmatrix_data,
-         dmatrix_elem,
-         dmatrix_elem',
-         dmatrix_enlarge,
-         dmatrix_erase,
-         dmatrix_erf,
-         dmatrix_erfinv,
-         dmatrix_exp,
-         dmatrix_eye,
-         dmatrix_fabs,
-         dmatrix_floor,
-         dmatrix_fmax,
-         dmatrix_fmin,
-         dmatrix_get,
-         dmatrix_get',
-         dmatrix_get'',
-         dmatrix_get''',
-         dmatrix_get'''',
-         dmatrix_get''''',
-         dmatrix_hasNZ,
-         dmatrix_if_else_zero,
-         dmatrix_inf,
-         dmatrix_inf',
-         dmatrix_inf'',
-         dmatrix_inf''',
-         dmatrix_isNull,
-         dmatrix_log,
-         dmatrix_log10,
-         dmatrix_logic_and,
-         dmatrix_logic_not,
-         dmatrix_logic_or,
-         dmatrix_matrix_matrix,
-         dmatrix_matrix_scalar,
-         dmatrix_mul,
-         dmatrix_mul',
-         dmatrix_mul_full,
-         dmatrix_mul_full',
-         dmatrix_mul_no_alloc_nn,
-         dmatrix_mul_no_alloc_nn',
-         dmatrix_mul_no_alloc_nt,
-         dmatrix_mul_no_alloc_tn,
-         dmatrix_mul_no_alloc_tn',
-         dmatrix_nan,
-         dmatrix_nan',
-         dmatrix_nan'',
-         dmatrix_nan''',
-         dmatrix_numel,
-         dmatrix_ones,
-         dmatrix_ones',
-         dmatrix_ones'',
-         dmatrix_operator_minus,
-         dmatrix_operator_plus,
-         dmatrix_printDense',
-         dmatrix_printMatrix',
-         dmatrix_printScalar',
-         dmatrix_printSparse',
-         dmatrix_printVector',
-         dmatrix_printme,
-         dmatrix_quad_form,
-         dmatrix_remove,
-         dmatrix_repmat,
-         dmatrix_repmat',
-         dmatrix_reserve,
-         dmatrix_reserve',
-         dmatrix_resize,
-         dmatrix_rowind,
-         dmatrix_sanityCheck,
-         dmatrix_sanityCheck',
-         dmatrix_scalar_matrix,
-         dmatrix_set,
-         dmatrix_set',
-         dmatrix_set'',
-         dmatrix_set''',
-         dmatrix_set'''',
-         dmatrix_set''''',
-         dmatrix_setPrecision,
-         dmatrix_setScientific,
-         dmatrix_setWidth,
-         dmatrix_sign,
-         dmatrix_sin,
-         dmatrix_sinh,
-         dmatrix_size,
-         dmatrix_size1,
-         dmatrix_size2,
-         dmatrix_sparse,
-         dmatrix_sparse',
-         dmatrix_sparse'',
-         dmatrix_sparse''',
-         dmatrix_sparsityRef,
-         dmatrix_sqrt,
-         dmatrix_tan,
-         dmatrix_tanh,
-         dmatrix_trans,
-         dmatrix_unary,
-         dmatrix_vector,
-         dmatrix_zeros,
-         dmatrix_zeros',
-         dmatrix_zeros'',
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.Classes.PrintableObject
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-instance Show DMatrix where
-  show = unsafePerformIO . printableObject_getDescription
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___size1" c_CasADi__Matrix_double___size1
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double___size1
-  :: DMatrix -> IO Int
-casADi__Matrix_double___size1 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___size1 x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_size1 :: DMatrixClass a => a -> IO Int
-dmatrix_size1 x = casADi__Matrix_double___size1 (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___size2" c_CasADi__Matrix_double___size2
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double___size2
-  :: DMatrix -> IO Int
-casADi__Matrix_double___size2 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___size2 x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_size2 :: DMatrixClass a => a -> IO Int
-dmatrix_size2 x = casADi__Matrix_double___size2 (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___size" c_CasADi__Matrix_double___size
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double___size
-  :: DMatrix -> IO Int
-casADi__Matrix_double___size x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___size x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_size :: DMatrixClass a => a -> IO Int
-dmatrix_size x = casADi__Matrix_double___size (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___numel" c_CasADi__Matrix_double___numel
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double___numel
-  :: DMatrix -> IO Int
-casADi__Matrix_double___numel x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___numel x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_numel :: DMatrixClass a => a -> IO Int
-dmatrix_numel x = casADi__Matrix_double___numel (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sanityCheck" c_CasADi__Matrix_double___sanityCheck
-  :: Ptr DMatrix' -> CInt -> IO ()
-casADi__Matrix_double___sanityCheck
-  :: DMatrix -> Bool -> IO ()
-casADi__Matrix_double___sanityCheck x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___sanityCheck x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the dimensions and rowind,col vectors are compatible.
->
->Parameters:
->-----------
->
->complete:  set to true to also check elementwise throws an error as possible
->result
--}
-dmatrix_sanityCheck :: DMatrixClass a => a -> Bool -> IO ()
-dmatrix_sanityCheck x = casADi__Matrix_double___sanityCheck (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sanityCheck_TIC" c_CasADi__Matrix_double___sanityCheck_TIC
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___sanityCheck'
-  :: DMatrix -> IO ()
-casADi__Matrix_double___sanityCheck' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sanityCheck_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_sanityCheck' :: DMatrixClass a => a -> IO ()
-dmatrix_sanityCheck' x = casADi__Matrix_double___sanityCheck' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___vector" c_CasADi__Matrix_double___vector
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double___vector
-  :: DMatrix -> IO Bool
-casADi__Matrix_double___vector x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___vector x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->ublas vector
->
->Check type of matrix
--}
-dmatrix_vector :: DMatrixClass a => a -> IO Bool
-dmatrix_vector x = casADi__Matrix_double___vector (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___at" c_CasADi__Matrix_double___at
-  :: Ptr DMatrix' -> CInt -> IO CDouble
-casADi__Matrix_double___at
-  :: DMatrix -> Int -> IO Double
-casADi__Matrix_double___at x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___at x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  const T& CasADi::Matrix< T >::at(int k) const 
->------------------------------------------------------------------------
->
->Get a non-zero element.
->
->>  T& CasADi::Matrix< T >::at(int k)
->------------------------------------------------------------------------
->
->Access a non-zero element.
--}
-dmatrix_at :: DMatrixClass a => a -> Int -> IO Double
-dmatrix_at x = casADi__Matrix_double___at (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___elem" c_CasADi__Matrix_double___elem
-  :: Ptr DMatrix' -> CInt -> CInt -> IO CDouble
-casADi__Matrix_double___elem
-  :: DMatrix -> Int -> Int -> IO Double
-casADi__Matrix_double___elem x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___elem x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  const T & CasADi::Matrix< T >::elem(int i, int j=0) const 
->------------------------------------------------------------------------
->
->get an element
->
->>  T & CasADi::Matrix< T >::elem(int i, int j=0)
->------------------------------------------------------------------------
->
->get a reference to an element
--}
-dmatrix_elem :: DMatrixClass a => a -> Int -> Int -> IO Double
-dmatrix_elem x = casADi__Matrix_double___elem (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___elem_TIC" c_CasADi__Matrix_double___elem_TIC
-  :: Ptr DMatrix' -> CInt -> IO CDouble
-casADi__Matrix_double___elem'
-  :: DMatrix -> Int -> IO Double
-casADi__Matrix_double___elem' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___elem_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_elem' :: DMatrixClass a => a -> Int -> IO Double
-dmatrix_elem' x = casADi__Matrix_double___elem' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___hasNZ" c_CasADi__Matrix_double___hasNZ
-  :: Ptr DMatrix' -> CInt -> CInt -> IO CInt
-casADi__Matrix_double___hasNZ
-  :: DMatrix -> Int -> Int -> IO Bool
-casADi__Matrix_double___hasNZ x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___hasNZ x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns true if the matrix has a non-zero at location i,j.
--}
-dmatrix_hasNZ :: DMatrixClass a => a -> Int -> Int -> IO Bool
-dmatrix_hasNZ x = casADi__Matrix_double___hasNZ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____nonzero__" c_CasADi__Matrix_double_____nonzero__
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double_____nonzero__
-  :: DMatrix -> IO Bool
-casADi__Matrix_double_____nonzero__ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double_____nonzero__ x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns the truth value of a Matrix.
--}
-dmatrix___nonzero__ :: DMatrixClass a => a -> IO Bool
-dmatrix___nonzero__ x = casADi__Matrix_double_____nonzero__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___append" c_CasADi__Matrix_double___append
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-casADi__Matrix_double___append
-  :: DMatrix -> DMatrix -> IO ()
-casADi__Matrix_double___append x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___append x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Append a matrix to the end.
--}
-dmatrix_append :: DMatrixClass a => a -> DMatrix -> IO ()
-dmatrix_append x = casADi__Matrix_double___append (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___operator_plus" c_CasADi__Matrix_double___operator_plus
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___operator_plus
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___operator_plus x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___operator_plus x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_operator_plus :: DMatrixClass a => a -> IO DMatrix
-dmatrix_operator_plus x = casADi__Matrix_double___operator_plus (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___operator_minus" c_CasADi__Matrix_double___operator_minus
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___operator_minus
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___operator_minus x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___operator_minus x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_operator_minus :: DMatrixClass a => a -> IO DMatrix
-dmatrix_operator_minus x = casADi__Matrix_double___operator_minus (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___binary" c_CasADi__Matrix_double___binary
-  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___binary
-  :: Int -> DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___binary x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___binary x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-dmatrix_binary :: Int -> DMatrix -> DMatrix -> IO DMatrix
-dmatrix_binary = casADi__Matrix_double___binary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___unary" c_CasADi__Matrix_double___unary
-  :: CInt -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___unary
-  :: Int -> DMatrix -> IO DMatrix
-casADi__Matrix_double___unary x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___unary x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-dmatrix_unary :: Int -> DMatrix -> IO DMatrix
-dmatrix_unary = casADi__Matrix_double___unary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___scalar_matrix" c_CasADi__Matrix_double___scalar_matrix
-  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___scalar_matrix
-  :: Int -> DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___scalar_matrix x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___scalar_matrix x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-dmatrix_scalar_matrix :: Int -> DMatrix -> DMatrix -> IO DMatrix
-dmatrix_scalar_matrix = casADi__Matrix_double___scalar_matrix
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___matrix_scalar" c_CasADi__Matrix_double___matrix_scalar
-  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___matrix_scalar
-  :: Int -> DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___matrix_scalar x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___matrix_scalar x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-dmatrix_matrix_scalar :: Int -> DMatrix -> DMatrix -> IO DMatrix
-dmatrix_matrix_scalar = casADi__Matrix_double___matrix_scalar
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___matrix_matrix" c_CasADi__Matrix_double___matrix_matrix
-  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___matrix_matrix
-  :: Int -> DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___matrix_matrix x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___matrix_matrix x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-dmatrix_matrix_matrix :: Int -> DMatrix -> DMatrix -> IO DMatrix
-dmatrix_matrix_matrix = casADi__Matrix_double___matrix_matrix
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____add__" c_CasADi__Matrix_double_____add__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____add__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____add__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____add__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___add__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___add__ x = casADi__Matrix_double_____add__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____sub__" c_CasADi__Matrix_double_____sub__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____sub__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____sub__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____sub__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___sub__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___sub__ x = casADi__Matrix_double_____sub__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____mul__" c_CasADi__Matrix_double_____mul__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____mul__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____mul__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____mul__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___mul__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___mul__ x = casADi__Matrix_double_____mul__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____div__" c_CasADi__Matrix_double_____div__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____div__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____div__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____div__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___div__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___div__ x = casADi__Matrix_double_____div__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____lt__" c_CasADi__Matrix_double_____lt__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____lt__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____lt__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____lt__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___lt__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___lt__ x = casADi__Matrix_double_____lt__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____le__" c_CasADi__Matrix_double_____le__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____le__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____le__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____le__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___le__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___le__ x = casADi__Matrix_double_____le__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____eq__" c_CasADi__Matrix_double_____eq__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____eq__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____eq__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____eq__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___eq__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___eq__ x = casADi__Matrix_double_____eq__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____ne__" c_CasADi__Matrix_double_____ne__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____ne__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____ne__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____ne__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___ne__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___ne__ x = casADi__Matrix_double_____ne__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____truediv__" c_CasADi__Matrix_double_____truediv__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____truediv__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____truediv__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____truediv__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___truediv__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___truediv__ x = casADi__Matrix_double_____truediv__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____pow__" c_CasADi__Matrix_double_____pow__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____pow__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____pow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____pow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___pow__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___pow__ x = casADi__Matrix_double_____pow__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____constpow__" c_CasADi__Matrix_double_____constpow__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____constpow__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____constpow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____constpow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___constpow__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___constpow__ x = casADi__Matrix_double_____constpow__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____mpower__" c_CasADi__Matrix_double_____mpower__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____mpower__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____mpower__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____mpower__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___mpower__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___mpower__ x = casADi__Matrix_double_____mpower__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double_____mrdivide__" c_CasADi__Matrix_double_____mrdivide__
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double_____mrdivide__
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double_____mrdivide__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double_____mrdivide__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-dmatrix___mrdivide__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix___mrdivide__ x = casADi__Matrix_double_____mrdivide__ (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_full" c_CasADi__Matrix_double___mul_full
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___mul_full
-  :: DMatrix -> DMatrix -> CRSSparsity -> IO DMatrix
-casADi__Matrix_double___mul_full x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul_full x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix-matrix product.
--}
-dmatrix_mul_full :: DMatrixClass a => a -> DMatrix -> CRSSparsity -> IO DMatrix
-dmatrix_mul_full x = casADi__Matrix_double___mul_full (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_full_TIC" c_CasADi__Matrix_double___mul_full_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___mul_full'
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___mul_full' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___mul_full_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul_full' :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_mul_full' x = casADi__Matrix_double___mul_full' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul" c_CasADi__Matrix_double___mul
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___mul
-  :: DMatrix -> DMatrix -> CRSSparsity -> IO DMatrix
-casADi__Matrix_double___mul x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix-matrix product.
--}
-dmatrix_mul :: DMatrixClass a => a -> DMatrix -> CRSSparsity -> IO DMatrix
-dmatrix_mul x = casADi__Matrix_double___mul (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_TIC" c_CasADi__Matrix_double___mul_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___mul'
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___mul' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___mul_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul' :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_mul' x = casADi__Matrix_double___mul' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_nn" c_CasADi__Matrix_double___mul_no_alloc_nn
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-casADi__Matrix_double___mul_no_alloc_nn
-  :: DMatrix -> DMatrix -> DMatrix -> IO ()
-casADi__Matrix_double___mul_no_alloc_nn x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul_no_alloc_nn x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul_no_alloc_nn :: DMatrix -> DMatrix -> DMatrix -> IO ()
-dmatrix_mul_no_alloc_nn = casADi__Matrix_double___mul_no_alloc_nn
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_nt" c_CasADi__Matrix_double___mul_no_alloc_nt
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-casADi__Matrix_double___mul_no_alloc_nt
-  :: DMatrix -> DMatrix -> DMatrix -> IO ()
-casADi__Matrix_double___mul_no_alloc_nt x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul_no_alloc_nt x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul_no_alloc_nt :: DMatrix -> DMatrix -> DMatrix -> IO ()
-dmatrix_mul_no_alloc_nt = casADi__Matrix_double___mul_no_alloc_nt
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_tn" c_CasADi__Matrix_double___mul_no_alloc_tn
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-casADi__Matrix_double___mul_no_alloc_tn
-  :: DMatrix -> DMatrix -> DMatrix -> IO ()
-casADi__Matrix_double___mul_no_alloc_tn x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul_no_alloc_tn x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul_no_alloc_tn :: DMatrix -> DMatrix -> DMatrix -> IO ()
-dmatrix_mul_no_alloc_tn = casADi__Matrix_double___mul_no_alloc_tn
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_nn_TIC" c_CasADi__Matrix_double___mul_no_alloc_nn_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
-casADi__Matrix_double___mul_no_alloc_nn'
-  :: DMatrix -> Vector Double -> Vector Double -> IO ()
-casADi__Matrix_double___mul_no_alloc_nn' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul_no_alloc_nn_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul_no_alloc_nn' :: DMatrix -> Vector Double -> Vector Double -> IO ()
-dmatrix_mul_no_alloc_nn' = casADi__Matrix_double___mul_no_alloc_nn'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_tn_TIC" c_CasADi__Matrix_double___mul_no_alloc_tn_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
-casADi__Matrix_double___mul_no_alloc_tn'
-  :: DMatrix -> Vector Double -> Vector Double -> IO ()
-casADi__Matrix_double___mul_no_alloc_tn' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___mul_no_alloc_tn_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_mul_no_alloc_tn' :: DMatrix -> Vector Double -> Vector Double -> IO ()
-dmatrix_mul_no_alloc_tn' = casADi__Matrix_double___mul_no_alloc_tn'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___quad_form" c_CasADi__Matrix_double___quad_form
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> IO CDouble
-casADi__Matrix_double___quad_form
-  :: DMatrix -> Vector Double -> IO Double
-casADi__Matrix_double___quad_form x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___quad_form x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_quad_form :: DMatrix -> Vector Double -> IO Double
-dmatrix_quad_form = casADi__Matrix_double___quad_form
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___trans" c_CasADi__Matrix_double___trans
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___trans
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___trans x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___trans x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix transpose.
--}
-dmatrix_trans :: DMatrixClass a => a -> IO DMatrix
-dmatrix_trans x = casADi__Matrix_double___trans (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sin" c_CasADi__Matrix_double___sin
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___sin
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___sin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sin x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_sin :: DMatrixClass a => a -> IO DMatrix
-dmatrix_sin x = casADi__Matrix_double___sin (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___cos" c_CasADi__Matrix_double___cos
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___cos
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___cos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___cos x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_cos :: DMatrixClass a => a -> IO DMatrix
-dmatrix_cos x = casADi__Matrix_double___cos (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___tan" c_CasADi__Matrix_double___tan
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___tan
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___tan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___tan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_tan :: DMatrixClass a => a -> IO DMatrix
-dmatrix_tan x = casADi__Matrix_double___tan (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arcsin" c_CasADi__Matrix_double___arcsin
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arcsin
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___arcsin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___arcsin x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arcsin :: DMatrixClass a => a -> IO DMatrix
-dmatrix_arcsin x = casADi__Matrix_double___arcsin (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arccos" c_CasADi__Matrix_double___arccos
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arccos
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___arccos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___arccos x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arccos :: DMatrixClass a => a -> IO DMatrix
-dmatrix_arccos x = casADi__Matrix_double___arccos (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arctan" c_CasADi__Matrix_double___arctan
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arctan
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___arctan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___arctan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arctan :: DMatrixClass a => a -> IO DMatrix
-dmatrix_arctan x = casADi__Matrix_double___arctan (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___exp" c_CasADi__Matrix_double___exp
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___exp
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___exp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___exp x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_exp :: DMatrixClass a => a -> IO DMatrix
-dmatrix_exp x = casADi__Matrix_double___exp (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___log" c_CasADi__Matrix_double___log
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___log
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___log x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___log x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_log :: DMatrixClass a => a -> IO DMatrix
-dmatrix_log x = casADi__Matrix_double___log (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sqrt" c_CasADi__Matrix_double___sqrt
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___sqrt
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___sqrt x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sqrt x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_sqrt :: DMatrixClass a => a -> IO DMatrix
-dmatrix_sqrt x = casADi__Matrix_double___sqrt (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___floor" c_CasADi__Matrix_double___floor
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___floor
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___floor x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___floor x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_floor :: DMatrixClass a => a -> IO DMatrix
-dmatrix_floor x = casADi__Matrix_double___floor (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___ceil" c_CasADi__Matrix_double___ceil
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___ceil
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___ceil x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___ceil x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_ceil :: DMatrixClass a => a -> IO DMatrix
-dmatrix_ceil x = casADi__Matrix_double___ceil (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___fabs" c_CasADi__Matrix_double___fabs
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___fabs
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___fabs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___fabs x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_fabs :: DMatrixClass a => a -> IO DMatrix
-dmatrix_fabs x = casADi__Matrix_double___fabs (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sign" c_CasADi__Matrix_double___sign
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___sign
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___sign x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sign x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_sign :: DMatrixClass a => a -> IO DMatrix
-dmatrix_sign x = casADi__Matrix_double___sign (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___erfinv" c_CasADi__Matrix_double___erfinv
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___erfinv
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___erfinv x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___erfinv x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_erfinv :: DMatrixClass a => a -> IO DMatrix
-dmatrix_erfinv x = casADi__Matrix_double___erfinv (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___fmin" c_CasADi__Matrix_double___fmin
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___fmin
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___fmin x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___fmin x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_fmin :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_fmin x = casADi__Matrix_double___fmin (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___fmax" c_CasADi__Matrix_double___fmax
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___fmax
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___fmax x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___fmax x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_fmax :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_fmax x = casADi__Matrix_double___fmax (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___erf" c_CasADi__Matrix_double___erf
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___erf
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___erf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___erf x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_erf :: DMatrixClass a => a -> IO DMatrix
-dmatrix_erf x = casADi__Matrix_double___erf (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sinh" c_CasADi__Matrix_double___sinh
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___sinh
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___sinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sinh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_sinh :: DMatrixClass a => a -> IO DMatrix
-dmatrix_sinh x = casADi__Matrix_double___sinh (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___cosh" c_CasADi__Matrix_double___cosh
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___cosh
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___cosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___cosh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_cosh :: DMatrixClass a => a -> IO DMatrix
-dmatrix_cosh x = casADi__Matrix_double___cosh (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___tanh" c_CasADi__Matrix_double___tanh
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___tanh
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___tanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___tanh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_tanh :: DMatrixClass a => a -> IO DMatrix
-dmatrix_tanh x = casADi__Matrix_double___tanh (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arcsinh" c_CasADi__Matrix_double___arcsinh
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arcsinh
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___arcsinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___arcsinh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arcsinh :: DMatrixClass a => a -> IO DMatrix
-dmatrix_arcsinh x = casADi__Matrix_double___arcsinh (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arccosh" c_CasADi__Matrix_double___arccosh
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arccosh
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___arccosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___arccosh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arccosh :: DMatrixClass a => a -> IO DMatrix
-dmatrix_arccosh x = casADi__Matrix_double___arccosh (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arctanh" c_CasADi__Matrix_double___arctanh
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arctanh
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___arctanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___arctanh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arctanh :: DMatrixClass a => a -> IO DMatrix
-dmatrix_arctanh x = casADi__Matrix_double___arctanh (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___arctan2" c_CasADi__Matrix_double___arctan2
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___arctan2
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___arctan2 x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___arctan2 x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_arctan2 :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_arctan2 x = casADi__Matrix_double___arctan2 (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___log10" c_CasADi__Matrix_double___log10
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___log10
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___log10 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___log10 x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_log10 :: DMatrixClass a => a -> IO DMatrix
-dmatrix_log10 x = casADi__Matrix_double___log10 (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___printme" c_CasADi__Matrix_double___printme
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___printme
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___printme x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___printme x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_printme :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_printme x = casADi__Matrix_double___printme (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___logic_not" c_CasADi__Matrix_double___logic_not
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___logic_not
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___logic_not x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___logic_not x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_logic_not :: DMatrixClass a => a -> IO DMatrix
-dmatrix_logic_not x = casADi__Matrix_double___logic_not (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___logic_and" c_CasADi__Matrix_double___logic_and
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___logic_and
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___logic_and x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___logic_and x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_logic_and :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_logic_and x = casADi__Matrix_double___logic_and (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___logic_or" c_CasADi__Matrix_double___logic_or
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___logic_or
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___logic_or x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___logic_or x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_logic_or :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_logic_or x = casADi__Matrix_double___logic_or (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___if_else_zero" c_CasADi__Matrix_double___if_else_zero
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___if_else_zero
-  :: DMatrix -> DMatrix -> IO DMatrix
-casADi__Matrix_double___if_else_zero x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___if_else_zero x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-dmatrix_if_else_zero :: DMatrixClass a => a -> DMatrix -> IO DMatrix
-dmatrix_if_else_zero x = casADi__Matrix_double___if_else_zero (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___className" c_CasADi__Matrix_double___className
-  :: IO (Ptr StdString')
-casADi__Matrix_double___className
-  :: IO String
-casADi__Matrix_double___className  =
-  c_CasADi__Matrix_double___className  >>= wrapReturn
-
--- classy wrapper
-{-|
->Printing.
--}
-dmatrix_className :: IO String
-dmatrix_className = casADi__Matrix_double___className
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___printScalar_TIC" c_CasADi__Matrix_double___printScalar_TIC
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___printScalar'
-  :: DMatrix -> IO ()
-casADi__Matrix_double___printScalar' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___printScalar_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_printScalar' :: DMatrixClass a => a -> IO ()
-dmatrix_printScalar' x = casADi__Matrix_double___printScalar' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___printVector_TIC" c_CasADi__Matrix_double___printVector_TIC
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___printVector'
-  :: DMatrix -> IO ()
-casADi__Matrix_double___printVector' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___printVector_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_printVector' :: DMatrixClass a => a -> IO ()
-dmatrix_printVector' x = casADi__Matrix_double___printVector' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___printMatrix_TIC" c_CasADi__Matrix_double___printMatrix_TIC
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___printMatrix'
-  :: DMatrix -> IO ()
-casADi__Matrix_double___printMatrix' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___printMatrix_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_printMatrix' :: DMatrixClass a => a -> IO ()
-dmatrix_printMatrix' x = casADi__Matrix_double___printMatrix' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___printSparse_TIC" c_CasADi__Matrix_double___printSparse_TIC
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___printSparse'
-  :: DMatrix -> IO ()
-casADi__Matrix_double___printSparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___printSparse_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_printSparse' :: DMatrixClass a => a -> IO ()
-dmatrix_printSparse' x = casADi__Matrix_double___printSparse' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___printDense_TIC" c_CasADi__Matrix_double___printDense_TIC
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___printDense'
-  :: DMatrix -> IO ()
-casADi__Matrix_double___printDense' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___printDense_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_printDense' :: DMatrixClass a => a -> IO ()
-dmatrix_printDense' x = casADi__Matrix_double___printDense' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___col" c_CasADi__Matrix_double___col
-  :: Ptr DMatrix' -> CInt -> IO CInt
-casADi__Matrix_double___col
-  :: DMatrix -> Int -> IO Int
-casADi__Matrix_double___col x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___col x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_col :: DMatrixClass a => a -> Int -> IO Int
-dmatrix_col x = casADi__Matrix_double___col (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___rowind" c_CasADi__Matrix_double___rowind
-  :: Ptr DMatrix' -> CInt -> IO CInt
-casADi__Matrix_double___rowind
-  :: DMatrix -> Int -> IO Int
-casADi__Matrix_double___rowind x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___rowind x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_rowind :: DMatrixClass a => a -> Int -> IO Int
-dmatrix_rowind x = casADi__Matrix_double___rowind (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___clear" c_CasADi__Matrix_double___clear
-  :: Ptr DMatrix' -> IO ()
-casADi__Matrix_double___clear
-  :: DMatrix -> IO ()
-casADi__Matrix_double___clear x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___clear x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_clear :: DMatrixClass a => a -> IO ()
-dmatrix_clear x = casADi__Matrix_double___clear (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___resize" c_CasADi__Matrix_double___resize
-  :: Ptr DMatrix' -> CInt -> CInt -> IO ()
-casADi__Matrix_double___resize
-  :: DMatrix -> Int -> Int -> IO ()
-casADi__Matrix_double___resize x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___resize x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_resize :: DMatrixClass a => a -> Int -> Int -> IO ()
-dmatrix_resize x = casADi__Matrix_double___resize (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___reserve" c_CasADi__Matrix_double___reserve
-  :: Ptr DMatrix' -> CInt -> IO ()
-casADi__Matrix_double___reserve
-  :: DMatrix -> Int -> IO ()
-casADi__Matrix_double___reserve x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___reserve x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_reserve :: DMatrixClass a => a -> Int -> IO ()
-dmatrix_reserve x = casADi__Matrix_double___reserve (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___reserve_TIC" c_CasADi__Matrix_double___reserve_TIC
-  :: Ptr DMatrix' -> CInt -> CInt -> IO ()
-casADi__Matrix_double___reserve'
-  :: DMatrix -> Int -> Int -> IO ()
-casADi__Matrix_double___reserve' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___reserve_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_reserve' :: DMatrixClass a => a -> Int -> Int -> IO ()
-dmatrix_reserve' x = casADi__Matrix_double___reserve' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___erase" c_CasADi__Matrix_double___erase
-  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__Matrix_double___erase
-  :: DMatrix -> Vector Int -> Vector Int -> IO ()
-casADi__Matrix_double___erase x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___erase x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Erase a submatrix Erase rows and/or columns of a matrix.
--}
-dmatrix_erase :: DMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
-dmatrix_erase x = casADi__Matrix_double___erase (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___remove" c_CasADi__Matrix_double___remove
-  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__Matrix_double___remove
-  :: DMatrix -> Vector Int -> Vector Int -> IO ()
-casADi__Matrix_double___remove x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___remove x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Remove rows or columns Rremove/delete rows and/or columns of a matrix.
--}
-dmatrix_remove :: DMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
-dmatrix_remove x = casADi__Matrix_double___remove (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___enlarge" c_CasADi__Matrix_double___enlarge
-  :: Ptr DMatrix' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__Matrix_double___enlarge
-  :: DMatrix -> Int -> Int -> Vector Int -> Vector Int -> IO ()
-casADi__Matrix_double___enlarge x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__Matrix_double___enlarge x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-{-|
->Enlarge matrix Make the matrix larger by inserting empty rows and columns,
->keeping the existing non-zeros.
--}
-dmatrix_enlarge :: DMatrixClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
-dmatrix_enlarge x = casADi__Matrix_double___enlarge (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___data" c_CasADi__Matrix_double___data
-  :: Ptr DMatrix' -> IO (Ptr (CppVec CDouble))
-casADi__Matrix_double___data
-  :: DMatrix -> IO (Vector Double)
-casADi__Matrix_double___data x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___data x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  std::vector< T > & CasADi::Matrix< T >::data()
->------------------------------------------------------------------------
->
->Access the non-zero elements.
->
->>  const std::vector< T > & CasADi::Matrix< T >::data() const 
->------------------------------------------------------------------------
->
->Const access the non-zero elements.
--}
-dmatrix_data :: DMatrixClass a => a -> IO (Vector Double)
-dmatrix_data x = casADi__Matrix_double___data (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sparsityRef" c_CasADi__Matrix_double___sparsityRef
-  :: Ptr DMatrix' -> IO (Ptr CRSSparsity')
-casADi__Matrix_double___sparsityRef
-  :: DMatrix -> IO CRSSparsity
-casADi__Matrix_double___sparsityRef x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sparsityRef x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access the sparsity, make a copy if there are multiple references to it.
--}
-dmatrix_sparsityRef :: DMatrixClass a => a -> IO CRSSparsity
-dmatrix_sparsityRef x = casADi__Matrix_double___sparsityRef (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___set" c_CasADi__Matrix_double___set
-  :: Ptr DMatrix' -> CDouble -> CInt -> IO ()
-casADi__Matrix_double___set
-  :: DMatrix -> Double -> Sparsity -> IO ()
-casADi__Matrix_double___set x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___set x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  void CasADi::Matrix< T >::set(T val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Set the non-zero elements, scalar.
->
->>  void CasADi::Matrix< T >::set(const std::vector< T > &val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Set the non-zero elements, vector.
->
->>  void CasADi::Matrix< T >::set(const Matrix< T > &val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Set the non-zero elements, Matrix.
->
->>  void CasADi::Matrix< T >::set(const T *val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Legacy - use setArray instead.
--}
-dmatrix_set :: DMatrixClass a => a -> Double -> Sparsity -> IO ()
-dmatrix_set x = casADi__Matrix_double___set (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___set_TIC" c_CasADi__Matrix_double___set_TIC
-  :: Ptr DMatrix' -> CDouble -> IO ()
-casADi__Matrix_double___set'
-  :: DMatrix -> Double -> IO ()
-casADi__Matrix_double___set' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___set_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_set' :: DMatrixClass a => a -> Double -> IO ()
-dmatrix_set' x = casADi__Matrix_double___set' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___get" c_CasADi__Matrix_double___get
-  :: Ptr DMatrix' -> CDouble -> CInt -> IO ()
-casADi__Matrix_double___get
-  :: DMatrix -> Double -> Sparsity -> IO ()
-casADi__Matrix_double___get x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___get x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  void CasADi::Matrix< T >::get(T &val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Get the non-zero elements, scalar.
->
->>  void CasADi::Matrix< T >::get(std::vector< T > &val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Get the non-zero elements, vector.
->
->>  void CasADi::Matrix< T >::get(Matrix< T > &val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Get the non-zero elements, Matrix.
->
->>  void CasADi::Matrix< T >::get(T *val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Legacy - use getArray instead.
--}
-dmatrix_get :: DMatrixClass a => a -> Double -> Sparsity -> IO ()
-dmatrix_get x = casADi__Matrix_double___get (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___get_TIC" c_CasADi__Matrix_double___get_TIC
-  :: Ptr DMatrix' -> CDouble -> IO ()
-casADi__Matrix_double___get'
-  :: DMatrix -> Double -> IO ()
-casADi__Matrix_double___get' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___get_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_get' :: DMatrixClass a => a -> Double -> IO ()
-dmatrix_get' x = casADi__Matrix_double___get' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> CInt -> IO ()
-casADi__Matrix_double___set''
-  :: DMatrix -> Vector Double -> Sparsity -> IO ()
-casADi__Matrix_double___set'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___set_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_set'' :: DMatrixClass a => a -> Vector Double -> Sparsity -> IO ()
-dmatrix_set'' x = casADi__Matrix_double___set'' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> IO ()
-casADi__Matrix_double___set'''
-  :: DMatrix -> Vector Double -> IO ()
-casADi__Matrix_double___set''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___set_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_set''' :: DMatrixClass a => a -> Vector Double -> IO ()
-dmatrix_set''' x = casADi__Matrix_double___set''' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> CInt -> IO ()
-casADi__Matrix_double___get''
-  :: DMatrix -> Vector Double -> Sparsity -> IO ()
-casADi__Matrix_double___get'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___get_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_get'' :: DMatrixClass a => a -> Vector Double -> Sparsity -> IO ()
-dmatrix_get'' x = casADi__Matrix_double___get'' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> IO ()
-casADi__Matrix_double___get'''
-  :: DMatrix -> Vector Double -> IO ()
-casADi__Matrix_double___get''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___get_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_get''' :: DMatrixClass a => a -> Vector Double -> IO ()
-dmatrix_get''' x = casADi__Matrix_double___get''' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> CInt -> IO ()
-casADi__Matrix_double___set''''
-  :: DMatrix -> DMatrix -> Sparsity -> IO ()
-casADi__Matrix_double___set'''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_set'''' :: DMatrixClass a => a -> DMatrix -> Sparsity -> IO ()
-dmatrix_set'''' x = casADi__Matrix_double___set'''' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-casADi__Matrix_double___set'''''
-  :: DMatrix -> DMatrix -> IO ()
-casADi__Matrix_double___set''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_set''''' :: DMatrixClass a => a -> DMatrix -> IO ()
-dmatrix_set''''' x = casADi__Matrix_double___set''''' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> CInt -> IO ()
-casADi__Matrix_double___get''''
-  :: DMatrix -> DMatrix -> Sparsity -> IO ()
-casADi__Matrix_double___get'''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_get'''' :: DMatrixClass a => a -> DMatrix -> Sparsity -> IO ()
-dmatrix_get'''' x = casADi__Matrix_double___get'''' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-casADi__Matrix_double___get'''''
-  :: DMatrix -> DMatrix -> IO ()
-casADi__Matrix_double___get''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_get''''' :: DMatrixClass a => a -> DMatrix -> IO ()
-dmatrix_get''''' x = casADi__Matrix_double___get''''' (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sparse" c_CasADi__Matrix_double___sparse
-  :: CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___sparse
-  :: Int -> Int -> IO DMatrix
-casADi__Matrix_double___sparse x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___sparse x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  Matrix< T > CasADi::Matrix< T >::sparse(int nrow, int ncol=1)
->
->>  Matrix< T > CasADi::Matrix< T >::sparse(const std::pair< int, int > &nm)
->------------------------------------------------------------------------
->
->create a sparse matrix with all zeros
->
->>  Matrix< T > CasADi::Matrix< T >::sparse(const std::vector< int > &row, const std::vector< int > &col, const std::vector< T > &d, int n, int m)
->
->>  Matrix< T > CasADi::Matrix< T >::sparse(const std::vector< int > &row, const std::vector< int > &col, const std::vector< T > &d, const std::pair< int, int > &nm)
->------------------------------------------------------------------------
->
->Construct a sparse matrix from triplet form.
--}
-dmatrix_sparse :: Int -> Int -> IO DMatrix
-dmatrix_sparse = casADi__Matrix_double___sparse
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sparse_TIC" c_CasADi__Matrix_double___sparse_TIC
-  :: CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___sparse'
-  :: Int -> IO DMatrix
-casADi__Matrix_double___sparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___sparse_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_sparse' :: Int -> IO DMatrix
-dmatrix_sparse' = casADi__Matrix_double___sparse'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sparse_TIC_TIC" c_CasADi__Matrix_double___sparse_TIC_TIC
-  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
-casADi__Matrix_double___sparse''
-  :: Vector Int -> Vector Int -> Vector Double -> IO DMatrix
-casADi__Matrix_double___sparse'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___sparse_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix_sparse'' :: Vector Int -> Vector Int -> Vector Double -> IO DMatrix
-dmatrix_sparse'' = casADi__Matrix_double___sparse''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___sparse_TIC_TIC_TIC" c_CasADi__Matrix_double___sparse_TIC_TIC_TIC
-  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CDouble) -> CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___sparse'''
-  :: Vector Int -> Vector Int -> Vector Double -> Int -> Int -> IO DMatrix
-casADi__Matrix_double___sparse''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__Matrix_double___sparse_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-dmatrix_sparse''' :: Vector Int -> Vector Int -> Vector Double -> Int -> Int -> IO DMatrix
-dmatrix_sparse''' = casADi__Matrix_double___sparse'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___zeros" c_CasADi__Matrix_double___zeros
-  :: Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___zeros
-  :: CRSSparsity -> IO DMatrix
-casADi__Matrix_double___zeros x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___zeros x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a dense matrix with all zeros
--}
-dmatrix_zeros :: CRSSparsity -> IO DMatrix
-dmatrix_zeros = casADi__Matrix_double___zeros
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___zeros_TIC" c_CasADi__Matrix_double___zeros_TIC
-  :: CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___zeros'
-  :: Int -> Int -> IO DMatrix
-casADi__Matrix_double___zeros' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___zeros_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_zeros' :: Int -> Int -> IO DMatrix
-dmatrix_zeros' = casADi__Matrix_double___zeros'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___zeros_TIC_TIC" c_CasADi__Matrix_double___zeros_TIC_TIC
-  :: CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___zeros''
-  :: Int -> IO DMatrix
-casADi__Matrix_double___zeros'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___zeros_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_zeros'' :: Int -> IO DMatrix
-dmatrix_zeros'' = casADi__Matrix_double___zeros''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___ones" c_CasADi__Matrix_double___ones
-  :: Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___ones
-  :: CRSSparsity -> IO DMatrix
-casADi__Matrix_double___ones x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___ones x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all ones
--}
-dmatrix_ones :: CRSSparsity -> IO DMatrix
-dmatrix_ones = casADi__Matrix_double___ones
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___ones_TIC" c_CasADi__Matrix_double___ones_TIC
-  :: CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___ones'
-  :: Int -> Int -> IO DMatrix
-casADi__Matrix_double___ones' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___ones_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_ones' :: Int -> Int -> IO DMatrix
-dmatrix_ones' = casADi__Matrix_double___ones'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___ones_TIC_TIC" c_CasADi__Matrix_double___ones_TIC_TIC
-  :: CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___ones''
-  :: Int -> IO DMatrix
-casADi__Matrix_double___ones'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___ones_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_ones'' :: Int -> IO DMatrix
-dmatrix_ones'' = casADi__Matrix_double___ones''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___inf" c_CasADi__Matrix_double___inf
-  :: Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___inf
-  :: CRSSparsity -> IO DMatrix
-casADi__Matrix_double___inf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___inf x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all inf
--}
-dmatrix_inf :: CRSSparsity -> IO DMatrix
-dmatrix_inf = casADi__Matrix_double___inf
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___inf_TIC" c_CasADi__Matrix_double___inf_TIC
-  :: CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___inf'
-  :: Int -> Int -> IO DMatrix
-casADi__Matrix_double___inf' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___inf_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_inf' :: Int -> Int -> IO DMatrix
-dmatrix_inf' = casADi__Matrix_double___inf'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___inf_TIC_TIC" c_CasADi__Matrix_double___inf_TIC_TIC
-  :: CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___inf''
-  :: Int -> IO DMatrix
-casADi__Matrix_double___inf'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___inf_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_inf'' :: Int -> IO DMatrix
-dmatrix_inf'' = casADi__Matrix_double___inf''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___inf_TIC_TIC_TIC" c_CasADi__Matrix_double___inf_TIC_TIC_TIC
-  :: IO (Ptr DMatrix')
-casADi__Matrix_double___inf'''
-  :: IO DMatrix
-casADi__Matrix_double___inf'''  =
-  c_CasADi__Matrix_double___inf_TIC_TIC_TIC  >>= wrapReturn
-
--- classy wrapper
-dmatrix_inf''' :: IO DMatrix
-dmatrix_inf''' = casADi__Matrix_double___inf'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___nan" c_CasADi__Matrix_double___nan
-  :: Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___nan
-  :: CRSSparsity -> IO DMatrix
-casADi__Matrix_double___nan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___nan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all nan
--}
-dmatrix_nan :: CRSSparsity -> IO DMatrix
-dmatrix_nan = casADi__Matrix_double___nan
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___nan_TIC" c_CasADi__Matrix_double___nan_TIC
-  :: CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___nan'
-  :: Int -> Int -> IO DMatrix
-casADi__Matrix_double___nan' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___nan_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_nan' :: Int -> Int -> IO DMatrix
-dmatrix_nan' = casADi__Matrix_double___nan'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___nan_TIC_TIC" c_CasADi__Matrix_double___nan_TIC_TIC
-  :: CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___nan''
-  :: Int -> IO DMatrix
-casADi__Matrix_double___nan'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___nan_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_nan'' :: Int -> IO DMatrix
-dmatrix_nan'' = casADi__Matrix_double___nan''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___nan_TIC_TIC_TIC" c_CasADi__Matrix_double___nan_TIC_TIC_TIC
-  :: IO (Ptr DMatrix')
-casADi__Matrix_double___nan'''
-  :: IO DMatrix
-casADi__Matrix_double___nan'''  =
-  c_CasADi__Matrix_double___nan_TIC_TIC_TIC  >>= wrapReturn
-
--- classy wrapper
-dmatrix_nan''' :: IO DMatrix
-dmatrix_nan''' = casADi__Matrix_double___nan'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___repmat" c_CasADi__Matrix_double___repmat
-  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___repmat
-  :: DMatrix -> Int -> Int -> IO DMatrix
-casADi__Matrix_double___repmat x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___repmat x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix by repeating an existing matrix
--}
-dmatrix_repmat :: DMatrix -> Int -> Int -> IO DMatrix
-dmatrix_repmat = casADi__Matrix_double___repmat
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___repmat_TIC" c_CasADi__Matrix_double___repmat_TIC
-  :: Ptr DMatrix' -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___repmat'
-  :: DMatrix -> Int -> IO DMatrix
-casADi__Matrix_double___repmat' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___repmat_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix_repmat' :: DMatrix -> Int -> IO DMatrix
-dmatrix_repmat' = casADi__Matrix_double___repmat'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___eye" c_CasADi__Matrix_double___eye
-  :: CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___eye
-  :: Int -> IO DMatrix
-casADi__Matrix_double___eye x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___eye x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix_eye :: Int -> IO DMatrix
-dmatrix_eye = casADi__Matrix_double___eye
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___isNull" c_CasADi__Matrix_double___isNull
-  :: Ptr DMatrix' -> IO CInt
-casADi__Matrix_double___isNull
-  :: DMatrix -> IO Bool
-casADi__Matrix_double___isNull x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___isNull x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->The following function is used to ensure similarity to MX, which is
->reference counted.
--}
-dmatrix_isNull :: DMatrixClass a => a -> IO Bool
-dmatrix_isNull x = casADi__Matrix_double___isNull (castDMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___setPrecision" c_CasADi__Matrix_double___setPrecision
-  :: CInt -> IO ()
-casADi__Matrix_double___setPrecision
-  :: Int -> IO ()
-casADi__Matrix_double___setPrecision x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___setPrecision x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the 'precision, width & scientific' used in printing and serializing to
->streams.
--}
-dmatrix_setPrecision :: Int -> IO ()
-dmatrix_setPrecision = casADi__Matrix_double___setPrecision
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___setWidth" c_CasADi__Matrix_double___setWidth
-  :: CInt -> IO ()
-casADi__Matrix_double___setWidth
-  :: Int -> IO ()
-casADi__Matrix_double___setWidth x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___setWidth x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the 'precision, width & scientific' used in printing and serializing to
->streams.
--}
-dmatrix_setWidth :: Int -> IO ()
-dmatrix_setWidth = casADi__Matrix_double___setWidth
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___setScientific" c_CasADi__Matrix_double___setScientific
-  :: CInt -> IO ()
-casADi__Matrix_double___setScientific
-  :: Bool -> IO ()
-casADi__Matrix_double___setScientific x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___setScientific x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the 'precision, width & scientific' used in printing and serializing to
->streams.
--}
-dmatrix_setScientific :: Bool -> IO ()
-dmatrix_setScientific = casADi__Matrix_double___setScientific
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix" c_CasADi__Matrix_double___DMatrix
-  :: IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix
-  :: IO DMatrix
-casADi__Matrix_double___DMatrix  =
-  c_CasADi__Matrix_double___DMatrix  >>= wrapReturn
-
--- classy wrapper
-{-|
->>  CasADi::Matrix< T >::Matrix()
->------------------------------------------------------------------------
->
->constructors
->
->empty 0-by-0 matrix constructor
->
->>  CasADi::Matrix< T >::Matrix(const Matrix< T > &m)
->------------------------------------------------------------------------
->
->Copy constructor.
->
->>  CasADi::Matrix< T >::Matrix(int n, int m)
->------------------------------------------------------------------------
->
->empty n-by-m matrix constructor
->
->>  CasADi::Matrix< T >::Matrix(int n, int m, const T &val)
->------------------------------------------------------------------------
->
->dense n-by-m matrix filled with val constructor
->
->>  CasADi::Matrix< T >::Matrix(int n, int m, const std::vector< int > &col, const std::vector< int > &rowind, const std::vector< T > &d=std::vector< T >())
->------------------------------------------------------------------------
->
->sparse n-by-m matrix filled with given sparsity
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< std::vector< T > > &m)
->------------------------------------------------------------------------
->
->dense matrix constructor with data given as vector of vectors
->
->>  CasADi::Matrix< T >::Matrix(const CRSSparsity &sparsity, const T &val=0)
->------------------------------------------------------------------------
->
->sparse matrix with a given sparsity
->
->>  CasADi::Matrix< T >::Matrix(const CRSSparsity &sparsity, const std::vector< T > &d)
->------------------------------------------------------------------------
->
->sparse matrix with a given sparsity and non-zero elements.
->
->>  CasADi::Matrix< T >::Matrix(double val)
->------------------------------------------------------------------------
->
->This constructor enables implicit type conversion from a numeric type.
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< T > &x)
->------------------------------------------------------------------------
->
->Construct from a vector.
->
->Thanks to implicit conversion, you can pretend that Matrix(const SX& x);
->exists. Note: above remark applies only to C++, not python or octave
->interfaces
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< T > &x, int n, int m)
->------------------------------------------------------------------------
->
->Construct dense matrix from a vector with the elements in column major
->ordering.
->
->>  CasADi::Matrix< T >::Matrix(const Matrix< A > &x)
->------------------------------------------------------------------------
->
->Create a matrix from a matrix with a different type of matrix entries
->(assuming that the scalar conversion is valid)
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x)
->------------------------------------------------------------------------
->
->Create an expression from an stl vector.
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x, int n, int m)
->------------------------------------------------------------------------
->
->Create a non-vector expression from an stl vector.
--}
-dmatrix :: IO DMatrix
-dmatrix = casADi__Matrix_double___DMatrix
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC" c_CasADi__Matrix_double___DMatrix_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix'
-  :: DMatrix -> IO DMatrix
-casADi__Matrix_double___DMatrix' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___DMatrix_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix' :: DMatrix -> IO DMatrix
-dmatrix' = casADi__Matrix_double___DMatrix'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC
-  :: CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix''
-  :: Int -> Int -> IO DMatrix
-casADi__Matrix_double___DMatrix'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix'' :: Int -> Int -> IO DMatrix
-dmatrix'' = casADi__Matrix_double___DMatrix''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC
-  :: CInt -> CInt -> CDouble -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix'''
-  :: Int -> Int -> Double -> IO DMatrix
-casADi__Matrix_double___DMatrix''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix''' :: Int -> Int -> Double -> IO DMatrix
-dmatrix''' = casADi__Matrix_double___DMatrix'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix''''
-  :: Int -> Int -> Vector Int -> Vector Int -> Vector Double -> IO DMatrix
-casADi__Matrix_double___DMatrix'''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-dmatrix'''' :: Int -> Int -> Vector Int -> Vector Int -> Vector Double -> IO DMatrix
-dmatrix'''' = casADi__Matrix_double___DMatrix''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix'''''
-  :: Int -> Int -> Vector Int -> Vector Int -> IO DMatrix
-casADi__Matrix_double___DMatrix''''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
--- classy wrapper
-dmatrix''''' :: Int -> Int -> Vector Int -> Vector Int -> IO DMatrix
-dmatrix''''' = casADi__Matrix_double___DMatrix'''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr (CppVec CDouble))) -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix''''''
-  :: Vector (Vector Double) -> IO DMatrix
-casADi__Matrix_double___DMatrix'''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix'''''' :: Vector (Vector Double) -> IO DMatrix
-dmatrix'''''' = casADi__Matrix_double___DMatrix''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> CDouble -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix'''''''
-  :: CRSSparsity -> Double -> IO DMatrix
-casADi__Matrix_double___DMatrix''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix''''''' :: CRSSparsity -> Double -> IO DMatrix
-dmatrix''''''' = casADi__Matrix_double___DMatrix'''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix''''''''
-  :: CRSSparsity -> IO DMatrix
-casADi__Matrix_double___DMatrix'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix'''''''' :: CRSSparsity -> IO DMatrix
-dmatrix'''''''' = casADi__Matrix_double___DMatrix''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix'''''''''
-  :: CRSSparsity -> Vector Double -> IO DMatrix
-casADi__Matrix_double___DMatrix''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-dmatrix''''''''' :: CRSSparsity -> Vector Double -> IO DMatrix
-dmatrix''''''''' = casADi__Matrix_double___DMatrix'''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: CDouble -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix''''''''''
-  :: Double -> IO DMatrix
-casADi__Matrix_double___DMatrix'''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix'''''''''' :: Double -> IO DMatrix
-dmatrix'''''''''' = casADi__Matrix_double___DMatrix''''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix'''''''''''
-  :: Vector Double -> IO DMatrix
-casADi__Matrix_double___DMatrix''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-dmatrix''''''''''' :: Vector Double -> IO DMatrix
-dmatrix''''''''''' = casADi__Matrix_double___DMatrix'''''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec CDouble) -> CInt -> CInt -> IO (Ptr DMatrix')
-casADi__Matrix_double___DMatrix''''''''''''
-  :: Vector Double -> Int -> Int -> IO DMatrix
-casADi__Matrix_double___DMatrix'''''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-dmatrix'''''''''''' :: Vector Double -> Int -> Int -> IO DMatrix
-dmatrix'''''''''''' = casADi__Matrix_double___DMatrix''''''''''''
+         dmatrix___add__,
+         dmatrix___constpow__,
+         dmatrix___copysign__,
+         dmatrix___div__,
+         dmatrix___eq__,
+         dmatrix___le__,
+         dmatrix___lt__,
+         dmatrix___mpower__,
+         dmatrix___mrdivide__,
+         dmatrix___mul__,
+         dmatrix___ne__,
+         dmatrix___nonzero__,
+         dmatrix___pow__,
+         dmatrix___sub__,
+         dmatrix___truediv__,
+         dmatrix_append,
+         dmatrix_appendColumns,
+         dmatrix_arccos,
+         dmatrix_arccosh,
+         dmatrix_arcsin,
+         dmatrix_arcsinh,
+         dmatrix_arctan,
+         dmatrix_arctan2,
+         dmatrix_arctanh,
+         dmatrix_at,
+         dmatrix_binary,
+         dmatrix_ceil,
+         dmatrix_className,
+         dmatrix_clear,
+         dmatrix_colind,
+         dmatrix_cos,
+         dmatrix_cosh,
+         dmatrix_data,
+         dmatrix_densify,
+         dmatrix_densify',
+         dmatrix_elem,
+         dmatrix_elem',
+         dmatrix_enlarge,
+         dmatrix_erase,
+         dmatrix_erf,
+         dmatrix_erfinv,
+         dmatrix_exp,
+         dmatrix_eye,
+         dmatrix_fabs,
+         dmatrix_floor,
+         dmatrix_fmax,
+         dmatrix_fmin,
+         dmatrix_get,
+         dmatrix_get',
+         dmatrix_get'',
+         dmatrix_get''',
+         dmatrix_get'''',
+         dmatrix_get''''',
+         dmatrix_getEqualityCheckingDepth,
+         dmatrix_getMaxNumCallsInPrint,
+         dmatrix_getName,
+         dmatrix_getValue,
+         dmatrix_hasNZ,
+         dmatrix_hasNonStructuralZeros,
+         dmatrix_if_else_zero,
+         dmatrix_indexed_assignment,
+         dmatrix_indexed_assignment',
+         dmatrix_indexed_assignment'',
+         dmatrix_indexed_assignment''',
+         dmatrix_indexed_assignment'''',
+         dmatrix_indexed_assignment''''',
+         dmatrix_indexed_assignment'''''',
+         dmatrix_indexed_assignment''''''',
+         dmatrix_indexed_assignment'''''''',
+         dmatrix_indexed_assignment''''''''',
+         dmatrix_indexed_one_based_assignment,
+         dmatrix_indexed_one_based_assignment',
+         dmatrix_indexed_one_based_assignment'',
+         dmatrix_indexed_zero_based_assignment,
+         dmatrix_indexed_zero_based_assignment',
+         dmatrix_indexed_zero_based_assignment'',
+         dmatrix_inf,
+         dmatrix_inf',
+         dmatrix_inf'',
+         dmatrix_inf''',
+         dmatrix_isConstant,
+         dmatrix_isEqual,
+         dmatrix_isIdentity,
+         dmatrix_isInteger,
+         dmatrix_isMinusOne,
+         dmatrix_isOne,
+         dmatrix_isRegular,
+         dmatrix_isSmooth,
+         dmatrix_isSymbolic,
+         dmatrix_isSymbolicSparse,
+         dmatrix_isZero,
+         dmatrix_log,
+         dmatrix_log10,
+         dmatrix_logic_and,
+         dmatrix_logic_not,
+         dmatrix_logic_or,
+         dmatrix_matrix_matrix,
+         dmatrix_matrix_scalar,
+         dmatrix_mul,
+         dmatrix_mul',
+         dmatrix_mul_full,
+         dmatrix_mul_full',
+         dmatrix_mul_no_alloc_nn,
+         dmatrix_mul_no_alloc_nn',
+         dmatrix_mul_no_alloc_nt,
+         dmatrix_mul_no_alloc_tn,
+         dmatrix_mul_no_alloc_tn',
+         dmatrix_nan,
+         dmatrix_nan',
+         dmatrix_nan'',
+         dmatrix_nan''',
+         dmatrix_nz_indexed_assignment,
+         dmatrix_nz_indexed_assignment',
+         dmatrix_nz_indexed_one_based_assignment,
+         dmatrix_nz_indexed_one_based_assignment',
+         dmatrix_nz_indexed_zero_based_assignment,
+         dmatrix_nz_indexed_zero_based_assignment',
+         dmatrix_operator_minus,
+         dmatrix_operator_plus,
+         dmatrix_printDense',
+         dmatrix_printScalar',
+         dmatrix_printSparse',
+         dmatrix_printVector',
+         dmatrix_printme,
+         dmatrix_quad_form,
+         dmatrix_remove,
+         dmatrix_repmat,
+         dmatrix_repmat',
+         dmatrix_repmat'',
+         dmatrix_repmat''',
+         dmatrix_reserve,
+         dmatrix_reserve',
+         dmatrix_resize,
+         dmatrix_row,
+         dmatrix_sanityCheck,
+         dmatrix_sanityCheck',
+         dmatrix_scalar_matrix,
+         dmatrix_set,
+         dmatrix_set',
+         dmatrix_set'',
+         dmatrix_set''',
+         dmatrix_set'''',
+         dmatrix_set''''',
+         dmatrix_setAll,
+         dmatrix_setEqualityCheckingDepth,
+         dmatrix_setEqualityCheckingDepth',
+         dmatrix_setMaxNumCallsInPrint,
+         dmatrix_setMaxNumCallsInPrint',
+         dmatrix_setNZ,
+         dmatrix_setNZ',
+         dmatrix_setNZ'',
+         dmatrix_setNZ''',
+         dmatrix_setPrecision,
+         dmatrix_setScientific,
+         dmatrix_setSparse,
+         dmatrix_setSparse',
+         dmatrix_setSub,
+         dmatrix_setSub',
+         dmatrix_setSub'',
+         dmatrix_setSub''',
+         dmatrix_setSub'''',
+         dmatrix_setSub''''',
+         dmatrix_setSub'''''',
+         dmatrix_setSub''''''',
+         dmatrix_setSub'''''''',
+         dmatrix_setSub''''''''',
+         dmatrix_setSub'''''''''',
+         dmatrix_setSub''''''''''',
+         dmatrix_setSub'''''''''''',
+         dmatrix_setSub''''''''''''',
+         dmatrix_setWidth,
+         dmatrix_setZero,
+         dmatrix_sign,
+         dmatrix_sin,
+         dmatrix_sinh,
+         dmatrix_sparsify,
+         dmatrix_sparsify',
+         dmatrix_sparsityRef,
+         dmatrix_sqrt,
+         dmatrix_tan,
+         dmatrix_tanh,
+         dmatrix_trans,
+         dmatrix_triplet,
+         dmatrix_triplet',
+         dmatrix_unary,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show DMatrix where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sanityCheck" c_CasADi__Matrix_double___sanityCheck
+  :: Ptr DMatrix' -> CInt -> IO ()
+casADi__Matrix_double___sanityCheck
+  :: DMatrix -> Bool -> IO ()
+casADi__Matrix_double___sanityCheck x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___sanityCheck x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>dimensions and colind,row vectors are compatible.
+>
+>Parameters:
+>-----------
+>
+>complete:  set to true to also check elementwise throws an error as possible
+>result
+-}
+dmatrix_sanityCheck :: DMatrixClass a => a -> Bool -> IO ()
+dmatrix_sanityCheck x = casADi__Matrix_double___sanityCheck (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sanityCheck_TIC" c_CasADi__Matrix_double___sanityCheck_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___sanityCheck'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___sanityCheck' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sanityCheck_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_sanityCheck' :: DMatrixClass a => a -> IO ()
+dmatrix_sanityCheck' x = casADi__Matrix_double___sanityCheck' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___at" c_CasADi__Matrix_double___at
+  :: Ptr DMatrix' -> CInt -> IO CDouble
+casADi__Matrix_double___at
+  :: DMatrix -> Int -> IO Double
+casADi__Matrix_double___at x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___at x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const DataType& CasADi::Matrix< T >::at(int k) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get a non-zero element.
+>
+>>  DataType& CasADi::Matrix< T >::at(int k)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Access a non-zero element.
+-}
+dmatrix_at :: DMatrixClass a => a -> Int -> IO Double
+dmatrix_at x = casADi__Matrix_double___at (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___elem" c_CasADi__Matrix_double___elem
+  :: Ptr DMatrix' -> CInt -> CInt -> IO CDouble
+casADi__Matrix_double___elem
+  :: DMatrix -> Int -> Int -> IO Double
+casADi__Matrix_double___elem x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___elem x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const DataType & CasADi::Matrix< DataType >::elem(int rr, int cc=0) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>get an element
+>
+>>  DataType & CasADi::Matrix< DataType >::elem(int rr, int cc=0)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>get a reference to an element
+-}
+dmatrix_elem :: DMatrixClass a => a -> Int -> Int -> IO Double
+dmatrix_elem x = casADi__Matrix_double___elem (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___elem_TIC" c_CasADi__Matrix_double___elem_TIC
+  :: Ptr DMatrix' -> CInt -> IO CDouble
+casADi__Matrix_double___elem'
+  :: DMatrix -> Int -> IO Double
+casADi__Matrix_double___elem' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___elem_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_elem' :: DMatrixClass a => a -> Int -> IO Double
+dmatrix_elem' x = casADi__Matrix_double___elem' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___hasNZ" c_CasADi__Matrix_double___hasNZ
+  :: Ptr DMatrix' -> CInt -> CInt -> IO CInt
+casADi__Matrix_double___hasNZ
+  :: DMatrix -> Int -> Int -> IO Bool
+casADi__Matrix_double___hasNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___hasNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns true if the matrix has a non-zero at location rr,cc.
+-}
+dmatrix_hasNZ :: DMatrixClass a => a -> Int -> Int -> IO Bool
+dmatrix_hasNZ x = casADi__Matrix_double___hasNZ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____nonzero__" c_CasADi__Matrix_double_____nonzero__
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double_____nonzero__
+  :: DMatrix -> IO Bool
+casADi__Matrix_double_____nonzero__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double_____nonzero__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Returns the
+>truth value of a Matrix.
+-}
+dmatrix___nonzero__ :: DMatrixClass a => a -> IO Bool
+dmatrix___nonzero__ x = casADi__Matrix_double_____nonzero__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub" c_CasADi__Matrix_double___setSub
+  :: Ptr DMatrix' -> Ptr DMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_double___setSub
+  :: DMatrix -> DMatrix -> Int -> Int -> IO ()
+casADi__Matrix_double___setSub x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set a submatrix.
+-}
+dmatrix_setSub :: DMatrixClass a => a -> DMatrix -> Int -> Int -> IO ()
+dmatrix_setSub x = casADi__Matrix_double___setSub (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC" c_CasADi__Matrix_double___setSub_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__Matrix_double___setSub'
+  :: DMatrix -> DMatrix -> Vector Int -> Int -> IO ()
+casADi__Matrix_double___setSub' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub' :: DMatrixClass a => a -> DMatrix -> Vector Int -> Int -> IO ()
+dmatrix_setSub' x = casADi__Matrix_double___setSub' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> CInt -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___setSub''
+  :: DMatrix -> DMatrix -> Int -> Vector Int -> IO ()
+casADi__Matrix_double___setSub'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub'' :: DMatrixClass a => a -> DMatrix -> Int -> Vector Int -> IO ()
+dmatrix_setSub'' x = casADi__Matrix_double___setSub'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___setSub'''
+  :: DMatrix -> DMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_double___setSub''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub''' :: DMatrixClass a => a -> DMatrix -> Vector Int -> Vector Int -> IO ()
+dmatrix_setSub''' x = casADi__Matrix_double___setSub''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Slice' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___setSub''''
+  :: DMatrix -> DMatrix -> Slice -> Vector Int -> IO ()
+casADi__Matrix_double___setSub'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub'''' :: DMatrixClass a => a -> DMatrix -> Slice -> Vector Int -> IO ()
+dmatrix_setSub'''' x = casADi__Matrix_double___setSub'''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr Slice' -> IO ()
+casADi__Matrix_double___setSub'''''
+  :: DMatrix -> DMatrix -> Vector Int -> Slice -> IO ()
+casADi__Matrix_double___setSub''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub''''' :: DMatrixClass a => a -> DMatrix -> Vector Int -> Slice -> IO ()
+dmatrix_setSub''''' x = casADi__Matrix_double___setSub''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Slice' -> Ptr Slice' -> IO ()
+casADi__Matrix_double___setSub''''''
+  :: DMatrix -> DMatrix -> Slice -> Slice -> IO ()
+casADi__Matrix_double___setSub'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub'''''' :: DMatrixClass a => a -> DMatrix -> Slice -> Slice -> IO ()
+dmatrix_setSub'''''' x = casADi__Matrix_double___setSub'''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___setSub'''''''
+  :: DMatrix -> DMatrix -> IMatrix -> Vector Int -> IO ()
+casADi__Matrix_double___setSub''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub''''''' :: DMatrixClass a => a -> DMatrix -> IMatrix -> Vector Int -> IO ()
+dmatrix_setSub''''''' x = casADi__Matrix_double___setSub''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr IMatrix' -> IO ()
+casADi__Matrix_double___setSub''''''''
+  :: DMatrix -> DMatrix -> Vector Int -> IMatrix -> IO ()
+casADi__Matrix_double___setSub'''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub'''''''' :: DMatrixClass a => a -> DMatrix -> Vector Int -> IMatrix -> IO ()
+dmatrix_setSub'''''''' x = casADi__Matrix_double___setSub'''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr IMatrix' -> Ptr Slice' -> IO ()
+casADi__Matrix_double___setSub'''''''''
+  :: DMatrix -> DMatrix -> IMatrix -> Slice -> IO ()
+casADi__Matrix_double___setSub''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub''''''''' :: DMatrixClass a => a -> DMatrix -> IMatrix -> Slice -> IO ()
+dmatrix_setSub''''''''' x = casADi__Matrix_double___setSub''''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_double___setSub''''''''''
+  :: DMatrix -> DMatrix -> Slice -> IMatrix -> IO ()
+casADi__Matrix_double___setSub'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub'''''''''' :: DMatrixClass a => a -> DMatrix -> Slice -> IMatrix -> IO ()
+dmatrix_setSub'''''''''' x = casADi__Matrix_double___setSub'''''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_double___setSub'''''''''''
+  :: DMatrix -> DMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_double___setSub''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub''''''''''' :: DMatrixClass a => a -> DMatrix -> IMatrix -> IMatrix -> IO ()
+dmatrix_setSub''''''''''' x = casADi__Matrix_double___setSub''''''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Slice' -> CInt -> IO ()
+casADi__Matrix_double___setSub''''''''''''
+  :: DMatrix -> DMatrix -> Slice -> Int -> IO ()
+casADi__Matrix_double___setSub'''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub'''''''''''' :: DMatrixClass a => a -> DMatrix -> Slice -> Int -> IO ()
+dmatrix_setSub'''''''''''' x = casADi__Matrix_double___setSub'''''''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Sparsity' -> CInt -> IO ()
+casADi__Matrix_double___setSub'''''''''''''
+  :: DMatrix -> DMatrix -> Sparsity -> Int -> IO ()
+casADi__Matrix_double___setSub''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSub''''''''''''' :: DMatrixClass a => a -> DMatrix -> Sparsity -> Int -> IO ()
+dmatrix_setSub''''''''''''' x = casADi__Matrix_double___setSub''''''''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setNZ" c_CasADi__Matrix_double___setNZ
+  :: Ptr DMatrix' -> CInt -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___setNZ
+  :: DMatrix -> Int -> DMatrix -> IO ()
+casADi__Matrix_double___setNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___setNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::setNZ(int k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< DataType >::setNZ(const std::vector< int > &k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< DataType >::setNZ(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set a set of nonzeros.
+>
+>>  void CasADi::Matrix< T >::setNZ(const Slice &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>
+>Set a set of nonzeros.
+-}
+dmatrix_setNZ :: DMatrixClass a => a -> Int -> DMatrix -> IO ()
+dmatrix_setNZ x = casADi__Matrix_double___setNZ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setNZ_TIC" c_CasADi__Matrix_double___setNZ_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___setNZ'
+  :: DMatrix -> Vector Int -> DMatrix -> IO ()
+casADi__Matrix_double___setNZ' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___setNZ_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setNZ' :: DMatrixClass a => a -> Vector Int -> DMatrix -> IO ()
+dmatrix_setNZ' x = casADi__Matrix_double___setNZ' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setNZ_TIC_TIC" c_CasADi__Matrix_double___setNZ_TIC_TIC
+  :: Ptr DMatrix' -> Ptr Slice' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___setNZ''
+  :: DMatrix -> Slice -> DMatrix -> IO ()
+casADi__Matrix_double___setNZ'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___setNZ_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setNZ'' :: DMatrixClass a => a -> Slice -> DMatrix -> IO ()
+dmatrix_setNZ'' x = casADi__Matrix_double___setNZ'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setNZ_TIC_TIC_TIC" c_CasADi__Matrix_double___setNZ_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___setNZ'''
+  :: DMatrix -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___setNZ''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___setNZ_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setNZ''' :: DMatrixClass a => a -> IMatrix -> DMatrix -> IO ()
+dmatrix_setNZ''' x = casADi__Matrix_double___setNZ''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___append" c_CasADi__Matrix_double___append
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___append
+  :: DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___append x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___append x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Append a matrix
+>vertically (NOTE: only efficient if vector)
+-}
+dmatrix_append :: DMatrixClass a => a -> DMatrix -> IO ()
+dmatrix_append x = casADi__Matrix_double___append (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___appendColumns" c_CasADi__Matrix_double___appendColumns
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___appendColumns
+  :: DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___appendColumns x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___appendColumns x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Append a
+>matrix horizontally.
+-}
+dmatrix_appendColumns :: DMatrixClass a => a -> DMatrix -> IO ()
+dmatrix_appendColumns x = casADi__Matrix_double___appendColumns (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nz_indexed_one_based_assignment" c_CasADi__Matrix_double___nz_indexed_one_based_assignment
+  :: Ptr DMatrix' -> CInt -> CDouble -> IO ()
+casADi__Matrix_double___nz_indexed_one_based_assignment
+  :: DMatrix -> Int -> Double -> IO ()
+casADi__Matrix_double___nz_indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___nz_indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::nz_indexed_one_based_assignment(int k, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a non-zero
+>
+>>  void CasADi::Matrix< T >::nz_indexed_one_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+-}
+dmatrix_nz_indexed_one_based_assignment :: DMatrixClass a => a -> Int -> Double -> IO ()
+dmatrix_nz_indexed_one_based_assignment x = casADi__Matrix_double___nz_indexed_one_based_assignment (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nz_indexed_zero_based_assignment" c_CasADi__Matrix_double___nz_indexed_zero_based_assignment
+  :: Ptr DMatrix' -> CInt -> CDouble -> IO ()
+casADi__Matrix_double___nz_indexed_zero_based_assignment
+  :: DMatrix -> Int -> Double -> IO ()
+casADi__Matrix_double___nz_indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___nz_indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Indexing for interfaced languages get a non-zero
+-}
+dmatrix_nz_indexed_zero_based_assignment :: DMatrixClass a => a -> Int -> Double -> IO ()
+dmatrix_nz_indexed_zero_based_assignment x = casADi__Matrix_double___nz_indexed_zero_based_assignment (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nz_indexed_assignment" c_CasADi__Matrix_double___nz_indexed_assignment
+  :: Ptr DMatrix' -> Ptr Slice' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___nz_indexed_assignment
+  :: DMatrix -> Slice -> DMatrix -> IO ()
+casADi__Matrix_double___nz_indexed_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___nz_indexed_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Indexing for interfaced languages get a non-zero
+-}
+dmatrix_nz_indexed_assignment :: DMatrixClass a => a -> Slice -> DMatrix -> IO ()
+dmatrix_nz_indexed_assignment x = casADi__Matrix_double___nz_indexed_assignment (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_one_based_assignment" c_CasADi__Matrix_double___indexed_one_based_assignment
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_one_based_assignment
+  :: DMatrix -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(int rr, int cc, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a matrix element
+>
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(int rr, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a vector element
+-}
+dmatrix_indexed_one_based_assignment :: DMatrixClass a => a -> IMatrix -> DMatrix -> IO ()
+dmatrix_indexed_one_based_assignment x = casADi__Matrix_double___indexed_one_based_assignment (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_zero_based_assignment" c_CasADi__Matrix_double___indexed_zero_based_assignment
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_zero_based_assignment
+  :: DMatrix -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(int rr, int cc, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(int rr, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+dmatrix_indexed_zero_based_assignment :: DMatrixClass a => a -> IMatrix -> DMatrix -> IO ()
+dmatrix_indexed_zero_based_assignment x = casADi__Matrix_double___indexed_zero_based_assignment (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nz_indexed_one_based_assignment_TIC" c_CasADi__Matrix_double___nz_indexed_one_based_assignment_TIC
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___nz_indexed_one_based_assignment'
+  :: DMatrix -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___nz_indexed_one_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___nz_indexed_one_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_nz_indexed_one_based_assignment' :: DMatrixClass a => a -> IMatrix -> DMatrix -> IO ()
+dmatrix_nz_indexed_one_based_assignment' x = casADi__Matrix_double___nz_indexed_one_based_assignment' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nz_indexed_zero_based_assignment_TIC" c_CasADi__Matrix_double___nz_indexed_zero_based_assignment_TIC
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___nz_indexed_zero_based_assignment'
+  :: DMatrix -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___nz_indexed_zero_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___nz_indexed_zero_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_nz_indexed_zero_based_assignment' :: DMatrixClass a => a -> IMatrix -> DMatrix -> IO ()
+dmatrix_nz_indexed_zero_based_assignment' x = casADi__Matrix_double___nz_indexed_zero_based_assignment' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nz_indexed_assignment_TIC" c_CasADi__Matrix_double___nz_indexed_assignment_TIC
+  :: Ptr DMatrix' -> Ptr IndexList' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___nz_indexed_assignment'
+  :: DMatrix -> IndexList -> DMatrix -> IO ()
+casADi__Matrix_double___nz_indexed_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___nz_indexed_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_nz_indexed_assignment' :: DMatrixClass a => a -> IndexList -> DMatrix -> IO ()
+dmatrix_nz_indexed_assignment' x = casADi__Matrix_double___nz_indexed_assignment' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_one_based_assignment_TIC" c_CasADi__Matrix_double___indexed_one_based_assignment_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> CDouble -> IO ()
+casADi__Matrix_double___indexed_one_based_assignment'
+  :: DMatrix -> Int -> Int -> Double -> IO ()
+casADi__Matrix_double___indexed_one_based_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_one_based_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_one_based_assignment' :: DMatrixClass a => a -> Int -> Int -> Double -> IO ()
+dmatrix_indexed_one_based_assignment' x = casADi__Matrix_double___indexed_one_based_assignment' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_zero_based_assignment_TIC" c_CasADi__Matrix_double___indexed_zero_based_assignment_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> CDouble -> IO ()
+casADi__Matrix_double___indexed_zero_based_assignment'
+  :: DMatrix -> Int -> Int -> Double -> IO ()
+casADi__Matrix_double___indexed_zero_based_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_zero_based_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_zero_based_assignment' :: DMatrixClass a => a -> Int -> Int -> Double -> IO ()
+dmatrix_indexed_zero_based_assignment' x = casADi__Matrix_double___indexed_zero_based_assignment' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment" c_CasADi__Matrix_double___indexed_assignment
+  :: Ptr DMatrix' -> Ptr Slice' -> Ptr Slice' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment
+  :: DMatrix -> Slice -> Slice -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Slice &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const IndexList &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const Slice &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const IndexList &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Sparsity &sp, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+dmatrix_indexed_assignment :: DMatrixClass a => a -> Slice -> Slice -> DMatrix -> IO ()
+dmatrix_indexed_assignment x = casADi__Matrix_double___indexed_assignment (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC
+  :: Ptr DMatrix' -> Ptr IndexList' -> Ptr IndexList' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment'
+  :: DMatrix -> IndexList -> IndexList -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment' :: DMatrixClass a => a -> IndexList -> IndexList -> DMatrix -> IO ()
+dmatrix_indexed_assignment' x = casADi__Matrix_double___indexed_assignment' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC
+  :: Ptr DMatrix' -> Ptr Slice' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment''
+  :: DMatrix -> Slice -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment'' :: DMatrixClass a => a -> Slice -> IMatrix -> DMatrix -> IO ()
+dmatrix_indexed_assignment'' x = casADi__Matrix_double___indexed_assignment'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr Slice' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment'''
+  :: DMatrix -> IMatrix -> Slice -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment''' :: DMatrixClass a => a -> IMatrix -> Slice -> DMatrix -> IO ()
+dmatrix_indexed_assignment''' x = casADi__Matrix_double___indexed_assignment''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr IndexList' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment''''
+  :: DMatrix -> IMatrix -> IndexList -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment'''' :: DMatrixClass a => a -> IMatrix -> IndexList -> DMatrix -> IO ()
+dmatrix_indexed_assignment'''' x = casADi__Matrix_double___indexed_assignment'''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr IndexList' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment'''''
+  :: DMatrix -> IndexList -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment''''' :: DMatrixClass a => a -> IndexList -> IMatrix -> DMatrix -> IO ()
+dmatrix_indexed_assignment''''' x = casADi__Matrix_double___indexed_assignment''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment''''''
+  :: DMatrix -> IMatrix -> IMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment'''''' :: DMatrixClass a => a -> IMatrix -> IMatrix -> DMatrix -> IO ()
+dmatrix_indexed_assignment'''''' x = casADi__Matrix_double___indexed_assignment'''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr Sparsity' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment'''''''
+  :: DMatrix -> Sparsity -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment''''''' :: DMatrixClass a => a -> Sparsity -> DMatrix -> IO ()
+dmatrix_indexed_assignment''''''' x = casADi__Matrix_double___indexed_assignment''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_one_based_assignment_TIC_TIC" c_CasADi__Matrix_double___indexed_one_based_assignment_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> CDouble -> IO ()
+casADi__Matrix_double___indexed_one_based_assignment''
+  :: DMatrix -> Int -> Double -> IO ()
+casADi__Matrix_double___indexed_one_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_one_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_one_based_assignment'' :: DMatrixClass a => a -> Int -> Double -> IO ()
+dmatrix_indexed_one_based_assignment'' x = casADi__Matrix_double___indexed_one_based_assignment'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_zero_based_assignment_TIC_TIC" c_CasADi__Matrix_double___indexed_zero_based_assignment_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> CDouble -> IO ()
+casADi__Matrix_double___indexed_zero_based_assignment''
+  :: DMatrix -> Int -> Double -> IO ()
+casADi__Matrix_double___indexed_zero_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_zero_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_zero_based_assignment'' :: DMatrixClass a => a -> Int -> Double -> IO ()
+dmatrix_indexed_zero_based_assignment'' x = casADi__Matrix_double___indexed_zero_based_assignment'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr Slice' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment''''''''
+  :: DMatrix -> Slice -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment'''''''' :: DMatrixClass a => a -> Slice -> DMatrix -> IO ()
+dmatrix_indexed_assignment'''''''' x = casADi__Matrix_double___indexed_assignment'''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr IndexList' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___indexed_assignment'''''''''
+  :: DMatrix -> IndexList -> DMatrix -> IO ()
+casADi__Matrix_double___indexed_assignment''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_indexed_assignment''''''''' :: DMatrixClass a => a -> IndexList -> DMatrix -> IO ()
+dmatrix_indexed_assignment''''''''' x = casADi__Matrix_double___indexed_assignment''''''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setZero" c_CasADi__Matrix_double___setZero
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___setZero
+  :: DMatrix -> IO ()
+casADi__Matrix_double___setZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___setZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set all elements
+>to zero.
+-}
+dmatrix_setZero :: DMatrixClass a => a -> IO ()
+dmatrix_setZero x = casADi__Matrix_double___setZero (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setAll" c_CasADi__Matrix_double___setAll
+  :: Ptr DMatrix' -> CDouble -> IO ()
+casADi__Matrix_double___setAll
+  :: DMatrix -> Double -> IO ()
+casADi__Matrix_double___setAll x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___setAll x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set all elements
+>to a value.
+-}
+dmatrix_setAll :: DMatrixClass a => a -> Double -> IO ()
+dmatrix_setAll x = casADi__Matrix_double___setAll (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSparse" c_CasADi__Matrix_double___setSparse
+  :: Ptr DMatrix' -> Ptr Sparsity' -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___setSparse
+  :: DMatrix -> Sparsity -> Bool -> IO DMatrix
+casADi__Matrix_double___setSparse x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___setSparse x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set sparse.
+-}
+dmatrix_setSparse :: DMatrixClass a => a -> Sparsity -> Bool -> IO DMatrix
+dmatrix_setSparse x = casADi__Matrix_double___setSparse (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setSparse_TIC" c_CasADi__Matrix_double___setSparse_TIC
+  :: Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___setSparse'
+  :: DMatrix -> Sparsity -> IO DMatrix
+casADi__Matrix_double___setSparse' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___setSparse_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setSparse' :: DMatrixClass a => a -> Sparsity -> IO DMatrix
+dmatrix_setSparse' x = casADi__Matrix_double___setSparse' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___densify" c_CasADi__Matrix_double___densify
+  :: Ptr DMatrix' -> CDouble -> IO ()
+casADi__Matrix_double___densify
+  :: DMatrix -> Double -> IO ()
+casADi__Matrix_double___densify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___densify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Make the matrix
+>dense.
+-}
+dmatrix_densify :: DMatrixClass a => a -> Double -> IO ()
+dmatrix_densify x = casADi__Matrix_double___densify (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___densify_TIC" c_CasADi__Matrix_double___densify_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___densify'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___densify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___densify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_densify' :: DMatrixClass a => a -> IO ()
+dmatrix_densify' x = casADi__Matrix_double___densify' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sparsify" c_CasADi__Matrix_double___sparsify
+  :: Ptr DMatrix' -> CDouble -> IO ()
+casADi__Matrix_double___sparsify
+  :: DMatrix -> Double -> IO ()
+casADi__Matrix_double___sparsify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___sparsify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Make a matrix
+>sparse by removing numerical zeros smaller in absolute value than a
+>specified tolerance.
+-}
+dmatrix_sparsify :: DMatrixClass a => a -> Double -> IO ()
+dmatrix_sparsify x = casADi__Matrix_double___sparsify (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sparsify_TIC" c_CasADi__Matrix_double___sparsify_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___sparsify'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___sparsify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sparsify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_sparsify' :: DMatrixClass a => a -> IO ()
+dmatrix_sparsify' x = casADi__Matrix_double___sparsify' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___operator_plus" c_CasADi__Matrix_double___operator_plus
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___operator_plus
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___operator_plus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___operator_plus x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_operator_plus :: DMatrixClass a => a -> IO DMatrix
+dmatrix_operator_plus x = casADi__Matrix_double___operator_plus (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___operator_minus" c_CasADi__Matrix_double___operator_minus
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___operator_minus
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___operator_minus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___operator_minus x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_operator_minus :: DMatrixClass a => a -> IO DMatrix
+dmatrix_operator_minus x = casADi__Matrix_double___operator_minus (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___binary" c_CasADi__Matrix_double___binary
+  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___binary
+  :: Int -> DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___binary x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___binary x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create nodes by
+>their ID.
+-}
+dmatrix_binary :: Int -> DMatrix -> DMatrix -> IO DMatrix
+dmatrix_binary = casADi__Matrix_double___binary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___unary" c_CasADi__Matrix_double___unary
+  :: CInt -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___unary
+  :: Int -> DMatrix -> IO DMatrix
+casADi__Matrix_double___unary x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___unary x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create nodes by
+>their ID.
+-}
+dmatrix_unary :: Int -> DMatrix -> IO DMatrix
+dmatrix_unary = casADi__Matrix_double___unary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___scalar_matrix" c_CasADi__Matrix_double___scalar_matrix
+  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___scalar_matrix
+  :: Int -> DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___scalar_matrix x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___scalar_matrix x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+dmatrix_scalar_matrix :: Int -> DMatrix -> DMatrix -> IO DMatrix
+dmatrix_scalar_matrix = casADi__Matrix_double___scalar_matrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___matrix_scalar" c_CasADi__Matrix_double___matrix_scalar
+  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___matrix_scalar
+  :: Int -> DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___matrix_scalar x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___matrix_scalar x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+dmatrix_matrix_scalar :: Int -> DMatrix -> DMatrix -> IO DMatrix
+dmatrix_matrix_scalar = casADi__Matrix_double___matrix_scalar
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___matrix_matrix" c_CasADi__Matrix_double___matrix_matrix
+  :: CInt -> Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___matrix_matrix
+  :: Int -> DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___matrix_matrix x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___matrix_matrix x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+dmatrix_matrix_matrix :: Int -> DMatrix -> DMatrix -> IO DMatrix
+dmatrix_matrix_matrix = casADi__Matrix_double___matrix_matrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____add__" c_CasADi__Matrix_double_____add__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____add__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____add__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____add__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___add__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___add__ x = casADi__Matrix_double_____add__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____sub__" c_CasADi__Matrix_double_____sub__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____sub__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____sub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____sub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___sub__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___sub__ x = casADi__Matrix_double_____sub__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____mul__" c_CasADi__Matrix_double_____mul__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____mul__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____mul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____mul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___mul__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___mul__ x = casADi__Matrix_double_____mul__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____div__" c_CasADi__Matrix_double_____div__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____div__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____div__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____div__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___div__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___div__ x = casADi__Matrix_double_____div__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____lt__" c_CasADi__Matrix_double_____lt__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____lt__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____lt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____lt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___lt__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___lt__ x = casADi__Matrix_double_____lt__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____le__" c_CasADi__Matrix_double_____le__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____le__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____le__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____le__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___le__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___le__ x = casADi__Matrix_double_____le__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____eq__" c_CasADi__Matrix_double_____eq__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____eq__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____eq__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____eq__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___eq__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___eq__ x = casADi__Matrix_double_____eq__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____ne__" c_CasADi__Matrix_double_____ne__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____ne__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____ne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____ne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___ne__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___ne__ x = casADi__Matrix_double_____ne__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____truediv__" c_CasADi__Matrix_double_____truediv__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____truediv__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___truediv__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___truediv__ x = casADi__Matrix_double_____truediv__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____pow__" c_CasADi__Matrix_double_____pow__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____pow__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____pow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____pow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___pow__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___pow__ x = casADi__Matrix_double_____pow__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____constpow__" c_CasADi__Matrix_double_____constpow__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____constpow__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____constpow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____constpow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___constpow__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___constpow__ x = casADi__Matrix_double_____constpow__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____mpower__" c_CasADi__Matrix_double_____mpower__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____mpower__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____mpower__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____mpower__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___mpower__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___mpower__ x = casADi__Matrix_double_____mpower__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____mrdivide__" c_CasADi__Matrix_double_____mrdivide__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____mrdivide__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____mrdivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____mrdivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+dmatrix___mrdivide__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___mrdivide__ x = casADi__Matrix_double_____mrdivide__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_full" c_CasADi__Matrix_double___mul_full
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___mul_full
+  :: DMatrix -> DMatrix -> Sparsity -> IO DMatrix
+casADi__Matrix_double___mul_full x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul_full x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Matrix-matrix
+>product.
+-}
+dmatrix_mul_full :: DMatrixClass a => a -> DMatrix -> Sparsity -> IO DMatrix
+dmatrix_mul_full x = casADi__Matrix_double___mul_full (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_full_TIC" c_CasADi__Matrix_double___mul_full_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___mul_full'
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___mul_full' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___mul_full_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul_full' :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_mul_full' x = casADi__Matrix_double___mul_full' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul" c_CasADi__Matrix_double___mul
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___mul
+  :: DMatrix -> DMatrix -> Sparsity -> IO DMatrix
+casADi__Matrix_double___mul x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Matrix-matrix
+>product.
+-}
+dmatrix_mul :: DMatrixClass a => a -> DMatrix -> Sparsity -> IO DMatrix
+dmatrix_mul x = casADi__Matrix_double___mul (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_TIC" c_CasADi__Matrix_double___mul_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___mul'
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___mul' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___mul_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul' :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_mul' x = casADi__Matrix_double___mul' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_nn" c_CasADi__Matrix_double___mul_no_alloc_nn
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___mul_no_alloc_nn
+  :: DMatrix -> DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___mul_no_alloc_nn x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul_no_alloc_nn x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul_no_alloc_nn :: DMatrix -> DMatrix -> DMatrix -> IO ()
+dmatrix_mul_no_alloc_nn = casADi__Matrix_double___mul_no_alloc_nn
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_tn" c_CasADi__Matrix_double___mul_no_alloc_tn
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___mul_no_alloc_tn
+  :: DMatrix -> DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___mul_no_alloc_tn x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul_no_alloc_tn x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul_no_alloc_tn :: DMatrix -> DMatrix -> DMatrix -> IO ()
+dmatrix_mul_no_alloc_tn = casADi__Matrix_double___mul_no_alloc_tn
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_nt" c_CasADi__Matrix_double___mul_no_alloc_nt
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___mul_no_alloc_nt
+  :: DMatrix -> DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___mul_no_alloc_nt x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul_no_alloc_nt x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul_no_alloc_nt :: DMatrix -> DMatrix -> DMatrix -> IO ()
+dmatrix_mul_no_alloc_nt = casADi__Matrix_double___mul_no_alloc_nt
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_tn_TIC" c_CasADi__Matrix_double___mul_no_alloc_tn_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__Matrix_double___mul_no_alloc_tn'
+  :: DMatrix -> Vector Double -> Vector Double -> IO ()
+casADi__Matrix_double___mul_no_alloc_tn' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul_no_alloc_tn_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul_no_alloc_tn' :: DMatrix -> Vector Double -> Vector Double -> IO ()
+dmatrix_mul_no_alloc_tn' = casADi__Matrix_double___mul_no_alloc_tn'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___mul_no_alloc_nn_TIC" c_CasADi__Matrix_double___mul_no_alloc_nn_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__Matrix_double___mul_no_alloc_nn'
+  :: DMatrix -> Vector Double -> Vector Double -> IO ()
+casADi__Matrix_double___mul_no_alloc_nn' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___mul_no_alloc_nn_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_mul_no_alloc_nn' :: DMatrix -> Vector Double -> Vector Double -> IO ()
+dmatrix_mul_no_alloc_nn' = casADi__Matrix_double___mul_no_alloc_nn'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___quad_form" c_CasADi__Matrix_double___quad_form
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> IO CDouble
+casADi__Matrix_double___quad_form
+  :: DMatrix -> Vector Double -> IO Double
+casADi__Matrix_double___quad_form x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___quad_form x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_quad_form :: DMatrix -> Vector Double -> IO Double
+dmatrix_quad_form = casADi__Matrix_double___quad_form
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___trans" c_CasADi__Matrix_double___trans
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___trans
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___trans x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___trans x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]   Transpose the
+>matrix.
+-}
+dmatrix_trans :: DMatrixClass a => a -> IO DMatrix
+dmatrix_trans x = casADi__Matrix_double___trans (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sin" c_CasADi__Matrix_double___sin
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___sin
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___sin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sin x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_sin :: DMatrixClass a => a -> IO DMatrix
+dmatrix_sin x = casADi__Matrix_double___sin (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___cos" c_CasADi__Matrix_double___cos
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___cos
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___cos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___cos x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_cos :: DMatrixClass a => a -> IO DMatrix
+dmatrix_cos x = casADi__Matrix_double___cos (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___tan" c_CasADi__Matrix_double___tan
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___tan
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___tan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___tan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_tan :: DMatrixClass a => a -> IO DMatrix
+dmatrix_tan x = casADi__Matrix_double___tan (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arcsin" c_CasADi__Matrix_double___arcsin
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arcsin
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___arcsin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___arcsin x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arcsin :: DMatrixClass a => a -> IO DMatrix
+dmatrix_arcsin x = casADi__Matrix_double___arcsin (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arccos" c_CasADi__Matrix_double___arccos
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arccos
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___arccos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___arccos x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arccos :: DMatrixClass a => a -> IO DMatrix
+dmatrix_arccos x = casADi__Matrix_double___arccos (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arctan" c_CasADi__Matrix_double___arctan
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arctan
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___arctan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___arctan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arctan :: DMatrixClass a => a -> IO DMatrix
+dmatrix_arctan x = casADi__Matrix_double___arctan (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___exp" c_CasADi__Matrix_double___exp
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___exp
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___exp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___exp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_exp :: DMatrixClass a => a -> IO DMatrix
+dmatrix_exp x = casADi__Matrix_double___exp (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___log" c_CasADi__Matrix_double___log
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___log
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___log x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___log x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_log :: DMatrixClass a => a -> IO DMatrix
+dmatrix_log x = casADi__Matrix_double___log (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sqrt" c_CasADi__Matrix_double___sqrt
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___sqrt
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___sqrt x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sqrt x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_sqrt :: DMatrixClass a => a -> IO DMatrix
+dmatrix_sqrt x = casADi__Matrix_double___sqrt (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___floor" c_CasADi__Matrix_double___floor
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___floor
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___floor x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___floor x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_floor :: DMatrixClass a => a -> IO DMatrix
+dmatrix_floor x = casADi__Matrix_double___floor (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___ceil" c_CasADi__Matrix_double___ceil
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___ceil
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___ceil x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___ceil x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_ceil :: DMatrixClass a => a -> IO DMatrix
+dmatrix_ceil x = casADi__Matrix_double___ceil (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___fabs" c_CasADi__Matrix_double___fabs
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___fabs
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___fabs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___fabs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_fabs :: DMatrixClass a => a -> IO DMatrix
+dmatrix_fabs x = casADi__Matrix_double___fabs (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sign" c_CasADi__Matrix_double___sign
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___sign
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___sign x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sign x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_sign :: DMatrixClass a => a -> IO DMatrix
+dmatrix_sign x = casADi__Matrix_double___sign (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double_____copysign__" c_CasADi__Matrix_double_____copysign__
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double_____copysign__
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double_____copysign__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double_____copysign__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix___copysign__ :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix___copysign__ x = casADi__Matrix_double_____copysign__ (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___erfinv" c_CasADi__Matrix_double___erfinv
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___erfinv
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___erfinv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___erfinv x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_erfinv :: DMatrixClass a => a -> IO DMatrix
+dmatrix_erfinv x = casADi__Matrix_double___erfinv (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___fmin" c_CasADi__Matrix_double___fmin
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___fmin
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___fmin x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___fmin x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_fmin :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_fmin x = casADi__Matrix_double___fmin (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___fmax" c_CasADi__Matrix_double___fmax
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___fmax
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___fmax x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___fmax x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_fmax :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_fmax x = casADi__Matrix_double___fmax (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___erf" c_CasADi__Matrix_double___erf
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___erf
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___erf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___erf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_erf :: DMatrixClass a => a -> IO DMatrix
+dmatrix_erf x = casADi__Matrix_double___erf (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sinh" c_CasADi__Matrix_double___sinh
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___sinh
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___sinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sinh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_sinh :: DMatrixClass a => a -> IO DMatrix
+dmatrix_sinh x = casADi__Matrix_double___sinh (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___cosh" c_CasADi__Matrix_double___cosh
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___cosh
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___cosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___cosh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_cosh :: DMatrixClass a => a -> IO DMatrix
+dmatrix_cosh x = casADi__Matrix_double___cosh (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___tanh" c_CasADi__Matrix_double___tanh
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___tanh
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___tanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___tanh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_tanh :: DMatrixClass a => a -> IO DMatrix
+dmatrix_tanh x = casADi__Matrix_double___tanh (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arcsinh" c_CasADi__Matrix_double___arcsinh
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arcsinh
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___arcsinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___arcsinh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arcsinh :: DMatrixClass a => a -> IO DMatrix
+dmatrix_arcsinh x = casADi__Matrix_double___arcsinh (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arccosh" c_CasADi__Matrix_double___arccosh
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arccosh
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___arccosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___arccosh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arccosh :: DMatrixClass a => a -> IO DMatrix
+dmatrix_arccosh x = casADi__Matrix_double___arccosh (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arctanh" c_CasADi__Matrix_double___arctanh
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arctanh
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___arctanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___arctanh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arctanh :: DMatrixClass a => a -> IO DMatrix
+dmatrix_arctanh x = casADi__Matrix_double___arctanh (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___arctan2" c_CasADi__Matrix_double___arctan2
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___arctan2
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___arctan2 x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___arctan2 x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_arctan2 :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_arctan2 x = casADi__Matrix_double___arctan2 (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___log10" c_CasADi__Matrix_double___log10
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___log10
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___log10 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___log10 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+dmatrix_log10 :: DMatrixClass a => a -> IO DMatrix
+dmatrix_log10 x = casADi__Matrix_double___log10 (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___printme" c_CasADi__Matrix_double___printme
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___printme
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___printme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___printme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_printme :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_printme x = casADi__Matrix_double___printme (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___logic_not" c_CasADi__Matrix_double___logic_not
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___logic_not
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___logic_not x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___logic_not x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_logic_not :: DMatrixClass a => a -> IO DMatrix
+dmatrix_logic_not x = casADi__Matrix_double___logic_not (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___logic_and" c_CasADi__Matrix_double___logic_and
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___logic_and
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___logic_and x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___logic_and x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_logic_and :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_logic_and x = casADi__Matrix_double___logic_and (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___logic_or" c_CasADi__Matrix_double___logic_or
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___logic_or
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___logic_or x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___logic_or x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_logic_or :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_logic_or x = casADi__Matrix_double___logic_or (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___if_else_zero" c_CasADi__Matrix_double___if_else_zero
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___if_else_zero
+  :: DMatrix -> DMatrix -> IO DMatrix
+casADi__Matrix_double___if_else_zero x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___if_else_zero x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+dmatrix_if_else_zero :: DMatrixClass a => a -> DMatrix -> IO DMatrix
+dmatrix_if_else_zero x = casADi__Matrix_double___if_else_zero (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setMaxNumCallsInPrint" c_CasADi__Matrix_double___setMaxNumCallsInPrint
+  :: CLong -> IO ()
+casADi__Matrix_double___setMaxNumCallsInPrint
+  :: Int -> IO ()
+casADi__Matrix_double___setMaxNumCallsInPrint x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___setMaxNumCallsInPrint x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setMaxNumCallsInPrint :: Int -> IO ()
+dmatrix_setMaxNumCallsInPrint = casADi__Matrix_double___setMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setMaxNumCallsInPrint_TIC" c_CasADi__Matrix_double___setMaxNumCallsInPrint_TIC
+  :: IO ()
+casADi__Matrix_double___setMaxNumCallsInPrint'
+  :: IO ()
+casADi__Matrix_double___setMaxNumCallsInPrint'  =
+  c_CasADi__Matrix_double___setMaxNumCallsInPrint_TIC  >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setMaxNumCallsInPrint' :: IO ()
+dmatrix_setMaxNumCallsInPrint' = casADi__Matrix_double___setMaxNumCallsInPrint'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___getMaxNumCallsInPrint" c_CasADi__Matrix_double___getMaxNumCallsInPrint
+  :: IO CLong
+casADi__Matrix_double___getMaxNumCallsInPrint
+  :: IO Int
+casADi__Matrix_double___getMaxNumCallsInPrint  =
+  c_CasADi__Matrix_double___getMaxNumCallsInPrint  >>= wrapReturn
+
+-- classy wrapper
+dmatrix_getMaxNumCallsInPrint :: IO Int
+dmatrix_getMaxNumCallsInPrint = casADi__Matrix_double___getMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setEqualityCheckingDepth" c_CasADi__Matrix_double___setEqualityCheckingDepth
+  :: CInt -> IO ()
+casADi__Matrix_double___setEqualityCheckingDepth
+  :: Int -> IO ()
+casADi__Matrix_double___setEqualityCheckingDepth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___setEqualityCheckingDepth x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setEqualityCheckingDepth :: Int -> IO ()
+dmatrix_setEqualityCheckingDepth = casADi__Matrix_double___setEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setEqualityCheckingDepth_TIC" c_CasADi__Matrix_double___setEqualityCheckingDepth_TIC
+  :: IO ()
+casADi__Matrix_double___setEqualityCheckingDepth'
+  :: IO ()
+casADi__Matrix_double___setEqualityCheckingDepth'  =
+  c_CasADi__Matrix_double___setEqualityCheckingDepth_TIC  >>= wrapReturn
+
+-- classy wrapper
+dmatrix_setEqualityCheckingDepth' :: IO ()
+dmatrix_setEqualityCheckingDepth' = casADi__Matrix_double___setEqualityCheckingDepth'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___getEqualityCheckingDepth" c_CasADi__Matrix_double___getEqualityCheckingDepth
+  :: IO CInt
+casADi__Matrix_double___getEqualityCheckingDepth
+  :: IO Int
+casADi__Matrix_double___getEqualityCheckingDepth  =
+  c_CasADi__Matrix_double___getEqualityCheckingDepth  >>= wrapReturn
+
+-- classy wrapper
+dmatrix_getEqualityCheckingDepth :: IO Int
+dmatrix_getEqualityCheckingDepth = casADi__Matrix_double___getEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___className" c_CasADi__Matrix_double___className
+  :: IO (Ptr StdString')
+casADi__Matrix_double___className
+  :: IO String
+casADi__Matrix_double___className  =
+  c_CasADi__Matrix_double___className  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Printing.
+-}
+dmatrix_className :: IO String
+dmatrix_className = casADi__Matrix_double___className
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___printScalar_TIC" c_CasADi__Matrix_double___printScalar_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___printScalar'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___printScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___printScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_printScalar' :: DMatrixClass a => a -> IO ()
+dmatrix_printScalar' x = casADi__Matrix_double___printScalar' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___printVector_TIC" c_CasADi__Matrix_double___printVector_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___printVector'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___printVector' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___printVector_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_printVector' :: DMatrixClass a => a -> IO ()
+dmatrix_printVector' x = casADi__Matrix_double___printVector' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___printDense_TIC" c_CasADi__Matrix_double___printDense_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___printDense'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___printDense' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___printDense_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_printDense' :: DMatrixClass a => a -> IO ()
+dmatrix_printDense' x = casADi__Matrix_double___printDense' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___printSparse_TIC" c_CasADi__Matrix_double___printSparse_TIC
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___printSparse'
+  :: DMatrix -> IO ()
+casADi__Matrix_double___printSparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___printSparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_printSparse' :: DMatrixClass a => a -> IO ()
+dmatrix_printSparse' x = casADi__Matrix_double___printSparse' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___row" c_CasADi__Matrix_double___row
+  :: Ptr DMatrix' -> CInt -> IO CInt
+casADi__Matrix_double___row
+  :: DMatrix -> Int -> IO Int
+casADi__Matrix_double___row x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___row x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+dmatrix_row :: DMatrixClass a => a -> Int -> IO Int
+dmatrix_row x = casADi__Matrix_double___row (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___colind" c_CasADi__Matrix_double___colind
+  :: Ptr DMatrix' -> CInt -> IO CInt
+casADi__Matrix_double___colind
+  :: DMatrix -> Int -> IO Int
+casADi__Matrix_double___colind x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___colind x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+dmatrix_colind :: DMatrixClass a => a -> Int -> IO Int
+dmatrix_colind x = casADi__Matrix_double___colind (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___clear" c_CasADi__Matrix_double___clear
+  :: Ptr DMatrix' -> IO ()
+casADi__Matrix_double___clear
+  :: DMatrix -> IO ()
+casADi__Matrix_double___clear x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___clear x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+dmatrix_clear :: DMatrixClass a => a -> IO ()
+dmatrix_clear x = casADi__Matrix_double___clear (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___resize" c_CasADi__Matrix_double___resize
+  :: Ptr DMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_double___resize
+  :: DMatrix -> Int -> Int -> IO ()
+casADi__Matrix_double___resize x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___resize x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+dmatrix_resize :: DMatrixClass a => a -> Int -> Int -> IO ()
+dmatrix_resize x = casADi__Matrix_double___resize (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___reserve" c_CasADi__Matrix_double___reserve
+  :: Ptr DMatrix' -> CInt -> IO ()
+casADi__Matrix_double___reserve
+  :: DMatrix -> Int -> IO ()
+casADi__Matrix_double___reserve x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___reserve x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+dmatrix_reserve :: DMatrixClass a => a -> Int -> IO ()
+dmatrix_reserve x = casADi__Matrix_double___reserve (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___reserve_TIC" c_CasADi__Matrix_double___reserve_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_double___reserve'
+  :: DMatrix -> Int -> Int -> IO ()
+casADi__Matrix_double___reserve' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___reserve_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_reserve' :: DMatrixClass a => a -> Int -> Int -> IO ()
+dmatrix_reserve' x = casADi__Matrix_double___reserve' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___erase" c_CasADi__Matrix_double___erase
+  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___erase
+  :: DMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_double___erase x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___erase x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Erase a submatrix
+>Erase rows and/or columns of a matrix.
+-}
+dmatrix_erase :: DMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
+dmatrix_erase x = casADi__Matrix_double___erase (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___remove" c_CasADi__Matrix_double___remove
+  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___remove
+  :: DMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_double___remove x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___remove x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+> [INTERNAL]  Remove cols or
+>rows Rremove/delete rows and/or columns of a matrix.
+-}
+dmatrix_remove :: DMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
+dmatrix_remove x = casADi__Matrix_double___remove (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___enlarge" c_CasADi__Matrix_double___enlarge
+  :: Ptr DMatrix' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_double___enlarge
+  :: DMatrix -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_double___enlarge x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Matrix_double___enlarge x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Enlarge matrix
+>Make the matrix larger by inserting empty rows and columns, keeping the
+>existing non-zeros.
+-}
+dmatrix_enlarge :: DMatrixClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+dmatrix_enlarge x = casADi__Matrix_double___enlarge (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___data" c_CasADi__Matrix_double___data
+  :: Ptr DMatrix' -> IO (Ptr (CppVec CDouble))
+casADi__Matrix_double___data
+  :: DMatrix -> IO (Vector Double)
+casADi__Matrix_double___data x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___data x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::vector< DataType > & CasADi::Matrix< DataType >::data()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Access the non-zero elements.
+>
+>>  const std::vector< DataType > & CasADi::Matrix< DataType >::data() const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Const access the non-zero elements.
+-}
+dmatrix_data :: DMatrixClass a => a -> IO (Vector Double)
+dmatrix_data x = casADi__Matrix_double___data (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___sparsityRef" c_CasADi__Matrix_double___sparsityRef
+  :: Ptr DMatrix' -> IO (Ptr Sparsity')
+casADi__Matrix_double___sparsityRef
+  :: DMatrix -> IO Sparsity
+casADi__Matrix_double___sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Access the
+>sparsity, make a copy if there are multiple references to it.
+-}
+dmatrix_sparsityRef :: DMatrixClass a => a -> IO Sparsity
+dmatrix_sparsityRef x = casADi__Matrix_double___sparsityRef (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___set" c_CasADi__Matrix_double___set
+  :: Ptr DMatrix' -> CDouble -> CInt -> IO ()
+casADi__Matrix_double___set
+  :: DMatrix -> Double -> SparsityType -> IO ()
+casADi__Matrix_double___set x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___set x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::set(DataType val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, scalar.
+>
+>>  void CasADi::Matrix< DataType >::set(const std::vector< DataType > &val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, vector.
+>
+>>  void CasADi::Matrix< DataType >::set(const Matrix< DataType > &val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, Matrix.
+>
+>>  void CasADi::Matrix< DataType >::set(const DataType *val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Legacy - use setArray instead.
+-}
+dmatrix_set :: DMatrixClass a => a -> Double -> SparsityType -> IO ()
+dmatrix_set x = casADi__Matrix_double___set (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___set_TIC" c_CasADi__Matrix_double___set_TIC
+  :: Ptr DMatrix' -> CDouble -> IO ()
+casADi__Matrix_double___set'
+  :: DMatrix -> Double -> IO ()
+casADi__Matrix_double___set' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___set_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_set' :: DMatrixClass a => a -> Double -> IO ()
+dmatrix_set' x = casADi__Matrix_double___set' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___get" c_CasADi__Matrix_double___get
+  :: Ptr DMatrix' -> CDouble -> CInt -> IO ()
+casADi__Matrix_double___get
+  :: DMatrix -> Double -> SparsityType -> IO ()
+casADi__Matrix_double___get x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___get x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::get(DataType &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, scalar.
+>
+>>  void CasADi::Matrix< DataType >::get(std::vector< DataType > &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, vector.
+>
+>>  void CasADi::Matrix< DataType >::get(Matrix< DataType > &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, Matrix.
+>
+>>  void CasADi::Matrix< DataType >::get(DataType *val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Legacy - use getArray instead.
+-}
+dmatrix_get :: DMatrixClass a => a -> Double -> SparsityType -> IO ()
+dmatrix_get x = casADi__Matrix_double___get (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___get_TIC" c_CasADi__Matrix_double___get_TIC
+  :: Ptr DMatrix' -> CDouble -> IO ()
+casADi__Matrix_double___get'
+  :: DMatrix -> Double -> IO ()
+casADi__Matrix_double___get' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___get_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_get' :: DMatrixClass a => a -> Double -> IO ()
+dmatrix_get' x = casADi__Matrix_double___get' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> CInt -> IO ()
+casADi__Matrix_double___set''
+  :: DMatrix -> Vector Double -> SparsityType -> IO ()
+casADi__Matrix_double___set'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___set_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_set'' :: DMatrixClass a => a -> Vector Double -> SparsityType -> IO ()
+dmatrix_set'' x = casADi__Matrix_double___set'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> IO ()
+casADi__Matrix_double___set'''
+  :: DMatrix -> Vector Double -> IO ()
+casADi__Matrix_double___set''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___set_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_set''' :: DMatrixClass a => a -> Vector Double -> IO ()
+dmatrix_set''' x = casADi__Matrix_double___set''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> CInt -> IO ()
+casADi__Matrix_double___get''
+  :: DMatrix -> Vector Double -> SparsityType -> IO ()
+casADi__Matrix_double___get'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___get_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_get'' :: DMatrixClass a => a -> Vector Double -> SparsityType -> IO ()
+dmatrix_get'' x = casADi__Matrix_double___get'' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> IO ()
+casADi__Matrix_double___get'''
+  :: DMatrix -> Vector Double -> IO ()
+casADi__Matrix_double___get''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___get_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_get''' :: DMatrixClass a => a -> Vector Double -> IO ()
+dmatrix_get''' x = casADi__Matrix_double___get''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> CInt -> IO ()
+casADi__Matrix_double___set''''
+  :: DMatrix -> DMatrix -> SparsityType -> IO ()
+casADi__Matrix_double___set'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_set'''' :: DMatrixClass a => a -> DMatrix -> SparsityType -> IO ()
+dmatrix_set'''' x = casADi__Matrix_double___set'''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___set_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___set'''''
+  :: DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___set''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___set_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_set''''' :: DMatrixClass a => a -> DMatrix -> IO ()
+dmatrix_set''''' x = casADi__Matrix_double___set''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> CInt -> IO ()
+casADi__Matrix_double___get''''
+  :: DMatrix -> DMatrix -> SparsityType -> IO ()
+casADi__Matrix_double___get'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_get'''' :: DMatrixClass a => a -> DMatrix -> SparsityType -> IO ()
+dmatrix_get'''' x = casADi__Matrix_double___get'''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___get_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+casADi__Matrix_double___get'''''
+  :: DMatrix -> DMatrix -> IO ()
+casADi__Matrix_double___get''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___get_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_get''''' :: DMatrixClass a => a -> DMatrix -> IO ()
+dmatrix_get''''' x = casADi__Matrix_double___get''''' (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___triplet" c_CasADi__Matrix_double___triplet
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
+casADi__Matrix_double___triplet
+  :: Vector Int -> Vector Int -> Vector Double -> IO DMatrix
+casADi__Matrix_double___triplet x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___triplet x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+dmatrix_triplet :: Vector Int -> Vector Int -> Vector Double -> IO DMatrix
+dmatrix_triplet = casADi__Matrix_double___triplet
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___triplet_TIC" c_CasADi__Matrix_double___triplet_TIC
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CDouble) -> CInt -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___triplet'
+  :: Vector Int -> Vector Int -> Vector Double -> Int -> Int -> IO DMatrix
+casADi__Matrix_double___triplet' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Matrix_double___triplet_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_triplet' :: Vector Int -> Vector Int -> Vector Double -> Int -> Int -> IO DMatrix
+dmatrix_triplet' = casADi__Matrix_double___triplet'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___inf" c_CasADi__Matrix_double___inf
+  :: Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___inf
+  :: Sparsity -> IO DMatrix
+casADi__Matrix_double___inf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___inf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix with
+>all inf
+-}
+dmatrix_inf :: Sparsity -> IO DMatrix
+dmatrix_inf = casADi__Matrix_double___inf
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___inf_TIC" c_CasADi__Matrix_double___inf_TIC
+  :: CInt -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___inf'
+  :: Int -> Int -> IO DMatrix
+casADi__Matrix_double___inf' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___inf_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_inf' :: Int -> Int -> IO DMatrix
+dmatrix_inf' = casADi__Matrix_double___inf'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___inf_TIC_TIC" c_CasADi__Matrix_double___inf_TIC_TIC
+  :: CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___inf''
+  :: Int -> IO DMatrix
+casADi__Matrix_double___inf'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___inf_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_inf'' :: Int -> IO DMatrix
+dmatrix_inf'' = casADi__Matrix_double___inf''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___inf_TIC_TIC_TIC" c_CasADi__Matrix_double___inf_TIC_TIC_TIC
+  :: IO (Ptr DMatrix')
+casADi__Matrix_double___inf'''
+  :: IO DMatrix
+casADi__Matrix_double___inf'''  =
+  c_CasADi__Matrix_double___inf_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+dmatrix_inf''' :: IO DMatrix
+dmatrix_inf''' = casADi__Matrix_double___inf'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nan" c_CasADi__Matrix_double___nan
+  :: Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___nan
+  :: Sparsity -> IO DMatrix
+casADi__Matrix_double___nan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___nan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix with
+>all nan
+-}
+dmatrix_nan :: Sparsity -> IO DMatrix
+dmatrix_nan = casADi__Matrix_double___nan
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nan_TIC" c_CasADi__Matrix_double___nan_TIC
+  :: CInt -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___nan'
+  :: Int -> Int -> IO DMatrix
+casADi__Matrix_double___nan' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___nan_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_nan' :: Int -> Int -> IO DMatrix
+dmatrix_nan' = casADi__Matrix_double___nan'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nan_TIC_TIC" c_CasADi__Matrix_double___nan_TIC_TIC
+  :: CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___nan''
+  :: Int -> IO DMatrix
+casADi__Matrix_double___nan'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___nan_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_nan'' :: Int -> IO DMatrix
+dmatrix_nan'' = casADi__Matrix_double___nan''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___nan_TIC_TIC_TIC" c_CasADi__Matrix_double___nan_TIC_TIC_TIC
+  :: IO (Ptr DMatrix')
+casADi__Matrix_double___nan'''
+  :: IO DMatrix
+casADi__Matrix_double___nan'''  =
+  c_CasADi__Matrix_double___nan_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+dmatrix_nan''' :: IO DMatrix
+dmatrix_nan''' = casADi__Matrix_double___nan'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___repmat" c_CasADi__Matrix_double___repmat
+  :: CDouble -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___repmat
+  :: Double -> Sparsity -> IO DMatrix
+casADi__Matrix_double___repmat x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___repmat x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix
+>by repeating an existing matrix
+-}
+dmatrix_repmat :: Double -> Sparsity -> IO DMatrix
+dmatrix_repmat = casADi__Matrix_double___repmat
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___repmat_TIC" c_CasADi__Matrix_double___repmat_TIC
+  :: Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___repmat'
+  :: DMatrix -> Sparsity -> IO DMatrix
+casADi__Matrix_double___repmat' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___repmat_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_repmat' :: DMatrix -> Sparsity -> IO DMatrix
+dmatrix_repmat' = casADi__Matrix_double___repmat'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___repmat_TIC_TIC" c_CasADi__Matrix_double___repmat_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___repmat''
+  :: DMatrix -> Int -> Int -> IO DMatrix
+casADi__Matrix_double___repmat'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___repmat_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_repmat'' :: DMatrix -> Int -> Int -> IO DMatrix
+dmatrix_repmat'' = casADi__Matrix_double___repmat''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___repmat_TIC_TIC_TIC" c_CasADi__Matrix_double___repmat_TIC_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___repmat'''
+  :: DMatrix -> Int -> IO DMatrix
+casADi__Matrix_double___repmat''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___repmat_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_repmat''' :: DMatrix -> Int -> IO DMatrix
+dmatrix_repmat''' = casADi__Matrix_double___repmat'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___eye" c_CasADi__Matrix_double___eye
+  :: CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___eye
+  :: Int -> IO DMatrix
+casADi__Matrix_double___eye x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___eye x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix_eye :: Int -> IO DMatrix
+dmatrix_eye = casADi__Matrix_double___eye
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isRegular" c_CasADi__Matrix_double___isRegular
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isRegular
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isRegular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isRegular x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Checks if
+>expression does not contain NaN or Inf.
+-}
+dmatrix_isRegular :: DMatrixClass a => a -> IO Bool
+dmatrix_isRegular x = casADi__Matrix_double___isRegular (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isSmooth" c_CasADi__Matrix_double___isSmooth
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isSmooth
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isSmooth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isSmooth x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>smooth.
+-}
+dmatrix_isSmooth :: DMatrixClass a => a -> IO Bool
+dmatrix_isSmooth x = casADi__Matrix_double___isSmooth (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isSymbolic" c_CasADi__Matrix_double___isSymbolic
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isSymbolic
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isSymbolic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isSymbolic x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>symbolic (Dense) Sparse matrices invariable return false.
+-}
+dmatrix_isSymbolic :: DMatrixClass a => a -> IO Bool
+dmatrix_isSymbolic x = casADi__Matrix_double___isSymbolic (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isSymbolicSparse" c_CasADi__Matrix_double___isSymbolicSparse
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isSymbolicSparse
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isSymbolicSparse x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isSymbolicSparse x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check
+>if symbolic Sparse matrices can return true if all non-zero elements are
+>symbolic.
+-}
+dmatrix_isSymbolicSparse :: DMatrixClass a => a -> IO Bool
+dmatrix_isSymbolicSparse x = casADi__Matrix_double___isSymbolicSparse (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isConstant" c_CasADi__Matrix_double___isConstant
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isConstant
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isConstant x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isConstant x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>matrix is constant (note that false negative answers are possible)
+-}
+dmatrix_isConstant :: DMatrixClass a => a -> IO Bool
+dmatrix_isConstant x = casADi__Matrix_double___isConstant (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isInteger" c_CasADi__Matrix_double___isInteger
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isInteger
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isInteger x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isInteger x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>matrix is integer-valued (note that false negative answers are possible)
+-}
+dmatrix_isInteger :: DMatrixClass a => a -> IO Bool
+dmatrix_isInteger x = casADi__Matrix_double___isInteger (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isZero" c_CasADi__Matrix_double___isZero
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isZero
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is 0 (note that false negative answers are possible)
+-}
+dmatrix_isZero :: DMatrixClass a => a -> IO Bool
+dmatrix_isZero x = casADi__Matrix_double___isZero (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isOne" c_CasADi__Matrix_double___isOne
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isOne
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is 1 (note that false negative answers are possible)
+-}
+dmatrix_isOne :: DMatrixClass a => a -> IO Bool
+dmatrix_isOne x = casADi__Matrix_double___isOne (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isMinusOne" c_CasADi__Matrix_double___isMinusOne
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isMinusOne
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isMinusOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isMinusOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is -1 (note that false negative answers are possible)
+-}
+dmatrix_isMinusOne :: DMatrixClass a => a -> IO Bool
+dmatrix_isMinusOne x = casADi__Matrix_double___isMinusOne (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isIdentity" c_CasADi__Matrix_double___isIdentity
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isIdentity
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___isIdentity x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___isIdentity x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is an identity matrix (note that false negative answers are possible)
+-}
+dmatrix_isIdentity :: DMatrixClass a => a -> IO Bool
+dmatrix_isIdentity x = casADi__Matrix_double___isIdentity (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___isEqual" c_CasADi__Matrix_double___isEqual
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___isEqual
+  :: DMatrix -> DMatrix -> IO Bool
+casADi__Matrix_double___isEqual x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___isEqual x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if two
+>expressions are equal May give false negatives.
+>
+>Note: does not work when CasadiOptions.setSimplificationOnTheFly(False) was
+>called
+-}
+dmatrix_isEqual :: DMatrixClass a => a -> DMatrix -> IO Bool
+dmatrix_isEqual x = casADi__Matrix_double___isEqual (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___hasNonStructuralZeros" c_CasADi__Matrix_double___hasNonStructuralZeros
+  :: Ptr DMatrix' -> IO CInt
+casADi__Matrix_double___hasNonStructuralZeros
+  :: DMatrix -> IO Bool
+casADi__Matrix_double___hasNonStructuralZeros x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___hasNonStructuralZeros x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Check if the matrix has any zero entries which are not structural zeros.
+-}
+dmatrix_hasNonStructuralZeros :: DMatrixClass a => a -> IO Bool
+dmatrix_hasNonStructuralZeros x = casADi__Matrix_double___hasNonStructuralZeros (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___getValue" c_CasADi__Matrix_double___getValue
+  :: Ptr DMatrix' -> IO CDouble
+casADi__Matrix_double___getValue
+  :: DMatrix -> IO Double
+casADi__Matrix_double___getValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___getValue x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get double
+>value (only if constant)
+-}
+dmatrix_getValue :: DMatrixClass a => a -> IO Double
+dmatrix_getValue x = casADi__Matrix_double___getValue (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___getName" c_CasADi__Matrix_double___getName
+  :: Ptr DMatrix' -> IO (Ptr StdString')
+casADi__Matrix_double___getName
+  :: DMatrix -> IO String
+casADi__Matrix_double___getName x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___getName x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get name (only
+>if symbolic scalar)
+-}
+dmatrix_getName :: DMatrixClass a => a -> IO String
+dmatrix_getName x = casADi__Matrix_double___getName (castDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setPrecision" c_CasADi__Matrix_double___setPrecision
+  :: CInt -> IO ()
+casADi__Matrix_double___setPrecision
+  :: Int -> IO ()
+casADi__Matrix_double___setPrecision x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___setPrecision x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+dmatrix_setPrecision :: Int -> IO ()
+dmatrix_setPrecision = casADi__Matrix_double___setPrecision
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setWidth" c_CasADi__Matrix_double___setWidth
+  :: CInt -> IO ()
+casADi__Matrix_double___setWidth
+  :: Int -> IO ()
+casADi__Matrix_double___setWidth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___setWidth x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+dmatrix_setWidth :: Int -> IO ()
+dmatrix_setWidth = casADi__Matrix_double___setWidth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___setScientific" c_CasADi__Matrix_double___setScientific
+  :: CInt -> IO ()
+casADi__Matrix_double___setScientific
+  :: Bool -> IO ()
+casADi__Matrix_double___setScientific x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___setScientific x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+dmatrix_setScientific :: Bool -> IO ()
+dmatrix_setScientific = casADi__Matrix_double___setScientific
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix" c_CasADi__Matrix_double___DMatrix
+  :: IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix
+  :: IO DMatrix
+casADi__Matrix_double___DMatrix  =
+  c_CasADi__Matrix_double___DMatrix  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol)
+>
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol, const DataType &val)
+>
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol, const std::vector< int > &colind, const std::vector< int > &row, const std::vector< DataType > &d=std::vector< DataType >())
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Sparsity &sparsity, const DataType &val=DataType(0))
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Sparse matrix with a given sparsity.
+>
+>>  CasADi::Matrix< DataType >::Matrix()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>constructors
+>
+>empty 0-by-0 matrix constructor
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Copy constructor.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< std::vector< DataType > > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Dense matrix constructor with data given as vector of vectors.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Sparsity &sparsity, const std::vector< DataType > &d)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Sparse matrix with a given sparsity and non-zero elements.
+>
+>>  CasADi::Matrix< DataType >::Matrix(double val)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>This constructor enables implicit type conversion from a numeric type.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< DataType > &x)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct from a vector.
+>
+>Thanks to implicit conversion, you can pretend that Matrix(const SXElement&
+>x); exists. Note: above remark applies only to C++, not python or octave
+>interfaces
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< DataType > &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct dense matrix from a vector with the elements in column major
+>ordering.
+>
+>>  CasADi::Matrix< T >::Matrix(const Matrix< A > &x)
+>------------------------------------------------------------------------
+>
+>Create a matrix from a matrix with a different type of matrix entries
+>(assuming that the scalar conversion is valid)
+>
+>>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x)
+>------------------------------------------------------------------------
+>
+>Create an expression from an stl vector.
+>
+>>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>
+>Create a non-vector expression from an stl vector.
+-}
+dmatrix :: IO DMatrix
+dmatrix = casADi__Matrix_double___DMatrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC" c_CasADi__Matrix_double___DMatrix_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix'
+  :: DMatrix -> IO DMatrix
+casADi__Matrix_double___DMatrix' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix' :: DMatrix -> IO DMatrix
+dmatrix' = casADi__Matrix_double___DMatrix'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC
+  :: Ptr (CppVec (Ptr (CppVec CDouble))) -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix''
+  :: Vector (Vector Double) -> IO DMatrix
+casADi__Matrix_double___DMatrix'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix'' :: Vector (Vector Double) -> IO DMatrix
+dmatrix'' = casADi__Matrix_double___DMatrix''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC
+  :: Ptr Sparsity' -> CDouble -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix'''
+  :: Sparsity -> Double -> IO DMatrix
+casADi__Matrix_double___DMatrix''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix''' :: Sparsity -> Double -> IO DMatrix
+dmatrix''' = casADi__Matrix_double___DMatrix'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix''''
+  :: Sparsity -> IO DMatrix
+casADi__Matrix_double___DMatrix'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix'''' :: Sparsity -> IO DMatrix
+dmatrix'''' = casADi__Matrix_double___DMatrix''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix'''''
+  :: Sparsity -> Vector Double -> IO DMatrix
+casADi__Matrix_double___DMatrix''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+dmatrix''''' :: Sparsity -> Vector Double -> IO DMatrix
+dmatrix''''' = casADi__Matrix_double___DMatrix'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC
+  :: CDouble -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix''''''
+  :: Double -> IO DMatrix
+casADi__Matrix_double___DMatrix'''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix'''''' :: Double -> IO DMatrix
+dmatrix'''''' = casADi__Matrix_double___DMatrix''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CDouble) -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix'''''''
+  :: Vector Double -> IO DMatrix
+casADi__Matrix_double___DMatrix''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix''''''' :: Vector Double -> IO DMatrix
+dmatrix''''''' = casADi__Matrix_double___DMatrix'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CDouble) -> CInt -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix''''''''
+  :: Vector Double -> Int -> Int -> IO DMatrix
+casADi__Matrix_double___DMatrix'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix'''''''' :: Vector Double -> Int -> Int -> IO DMatrix
+dmatrix'''''''' = casADi__Matrix_double___DMatrix''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix'''''''''
+  :: IMatrix -> IO DMatrix
+casADi__Matrix_double___DMatrix''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix''''''''' :: IMatrix -> IO DMatrix
+dmatrix''''''''' = casADi__Matrix_double___DMatrix'''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix''''''''''
+  :: Vector Int -> IO DMatrix
+casADi__Matrix_double___DMatrix'''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dmatrix'''''''''' :: Vector Int -> IO DMatrix
+dmatrix'''''''''' = casADi__Matrix_double___DMatrix''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr DMatrix')
+casADi__Matrix_double___DMatrix'''''''''''
+  :: Vector Int -> Int -> Int -> IO DMatrix
+casADi__Matrix_double___DMatrix''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_double___DMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+dmatrix''''''''''' :: Vector Int -> Int -> Int -> IO DMatrix
+dmatrix''''''''''' = casADi__Matrix_double___DMatrix'''''''''''
 
diff --git a/Casadi/Wrappers/Classes/DerivativeGenerator.hs b/Casadi/Wrappers/Classes/DerivativeGenerator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/DerivativeGenerator.hs
@@ -0,0 +1,56 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.DerivativeGenerator
+       (
+         DerivativeGenerator,
+         DerivativeGeneratorClass(..),
+         derivativeGenerator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show DerivativeGenerator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DerivativeGenerator__DerivativeGenerator" c_CasADi__DerivativeGenerator__DerivativeGenerator
+  :: IO (Ptr DerivativeGenerator')
+casADi__DerivativeGenerator__DerivativeGenerator
+  :: IO DerivativeGenerator
+casADi__DerivativeGenerator__DerivativeGenerator  =
+  c_CasADi__DerivativeGenerator__DerivativeGenerator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::DerivativeGenerator::DerivativeGenerator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::DerivativeGenerator::DerivativeGenerator(DerivativeGeneratorCPtr ptr)
+>------------------------------------------------------------------------
+>
+>Construct from C pointer.
+-}
+derivativeGenerator :: IO DerivativeGenerator
+derivativeGenerator = casADi__DerivativeGenerator__DerivativeGenerator
+
diff --git a/Casadi/Wrappers/Classes/DirectCollocation.hs b/Casadi/Wrappers/Classes/DirectCollocation.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/DirectCollocation.hs
@@ -0,0 +1,236 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.DirectCollocation
+       (
+         DirectCollocation,
+         DirectCollocationClass(..),
+         directCollocation,
+         directCollocation',
+         directCollocation'',
+         directCollocation''',
+         directCollocation_getConstraintBounds,
+         directCollocation_getGuess,
+         directCollocation_getNLPSolver,
+         directCollocation_getReportConstraints,
+         directCollocation_getVariableBounds,
+         directCollocation_reportConstraints',
+         directCollocation_setOptimalSolution,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show DirectCollocation where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__getGuess" c_CasADi__DirectCollocation__getGuess
+  :: Ptr DirectCollocation' -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectCollocation__getGuess
+  :: DirectCollocation -> Vector Double -> IO ()
+casADi__DirectCollocation__getGuess x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectCollocation__getGuess x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the variables.
+-}
+directCollocation_getGuess :: DirectCollocationClass a => a -> Vector Double -> IO ()
+directCollocation_getGuess x = casADi__DirectCollocation__getGuess (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__getVariableBounds" c_CasADi__DirectCollocation__getVariableBounds
+  :: Ptr DirectCollocation' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectCollocation__getVariableBounds
+  :: DirectCollocation -> Vector Double -> Vector Double -> IO ()
+casADi__DirectCollocation__getVariableBounds x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectCollocation__getVariableBounds x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the variables.
+-}
+directCollocation_getVariableBounds :: DirectCollocationClass a => a -> Vector Double -> Vector Double -> IO ()
+directCollocation_getVariableBounds x = casADi__DirectCollocation__getVariableBounds (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__getConstraintBounds" c_CasADi__DirectCollocation__getConstraintBounds
+  :: Ptr DirectCollocation' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectCollocation__getConstraintBounds
+  :: DirectCollocation -> Vector Double -> Vector Double -> IO ()
+casADi__DirectCollocation__getConstraintBounds x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectCollocation__getConstraintBounds x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the constraints.
+-}
+directCollocation_getConstraintBounds :: DirectCollocationClass a => a -> Vector Double -> Vector Double -> IO ()
+directCollocation_getConstraintBounds x = casADi__DirectCollocation__getConstraintBounds (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__setOptimalSolution" c_CasADi__DirectCollocation__setOptimalSolution
+  :: Ptr DirectCollocation' -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectCollocation__setOptimalSolution
+  :: DirectCollocation -> Vector Double -> IO ()
+casADi__DirectCollocation__setOptimalSolution x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectCollocation__setOptimalSolution x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the optimal solution.
+-}
+directCollocation_setOptimalSolution :: DirectCollocationClass a => a -> Vector Double -> IO ()
+directCollocation_setOptimalSolution x = casADi__DirectCollocation__setOptimalSolution (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__getNLPSolver" c_CasADi__DirectCollocation__getNLPSolver
+  :: Ptr DirectCollocation' -> IO (Ptr NLPSolver')
+casADi__DirectCollocation__getNLPSolver
+  :: DirectCollocation -> IO NLPSolver
+casADi__DirectCollocation__getNLPSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectCollocation__getNLPSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the underlying NLPSolver object.
+-}
+directCollocation_getNLPSolver :: DirectCollocationClass a => a -> IO NLPSolver
+directCollocation_getNLPSolver x = casADi__DirectCollocation__getNLPSolver (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__reportConstraints_TIC" c_CasADi__DirectCollocation__reportConstraints_TIC
+  :: Ptr DirectCollocation' -> IO ()
+casADi__DirectCollocation__reportConstraints'
+  :: DirectCollocation -> IO ()
+casADi__DirectCollocation__reportConstraints' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectCollocation__reportConstraints_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+directCollocation_reportConstraints' :: DirectCollocationClass a => a -> IO ()
+directCollocation_reportConstraints' x = casADi__DirectCollocation__reportConstraints' (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__getReportConstraints" c_CasADi__DirectCollocation__getReportConstraints
+  :: Ptr DirectCollocation' -> IO (Ptr StdString')
+casADi__DirectCollocation__getReportConstraints
+  :: DirectCollocation -> IO String
+casADi__DirectCollocation__getReportConstraints x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectCollocation__getReportConstraints x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Return the report as a string.
+-}
+directCollocation_getReportConstraints :: DirectCollocationClass a => a -> IO String
+directCollocation_getReportConstraints x = casADi__DirectCollocation__getReportConstraints (castDirectCollocation x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__DirectCollocation" c_CasADi__DirectCollocation__DirectCollocation
+  :: IO (Ptr DirectCollocation')
+casADi__DirectCollocation__DirectCollocation
+  :: IO DirectCollocation
+casADi__DirectCollocation__DirectCollocation  =
+  c_CasADi__DirectCollocation__DirectCollocation  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::DirectCollocation::DirectCollocation()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::DirectCollocation::DirectCollocation(const Function &ffcn, const Function &mfcn, const Function &cfcn=Function(), const Function &rfcn=Function())
+>------------------------------------------------------------------------
+>
+>Constructor.
+-}
+directCollocation :: IO DirectCollocation
+directCollocation = casADi__DirectCollocation__DirectCollocation
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__DirectCollocation_TIC" c_CasADi__DirectCollocation__DirectCollocation_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr Function' -> Ptr Function' -> IO (Ptr DirectCollocation')
+casADi__DirectCollocation__DirectCollocation'
+  :: Function -> Function -> Function -> Function -> IO DirectCollocation
+casADi__DirectCollocation__DirectCollocation' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__DirectCollocation__DirectCollocation_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+directCollocation' :: Function -> Function -> Function -> Function -> IO DirectCollocation
+directCollocation' = casADi__DirectCollocation__DirectCollocation'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__DirectCollocation_TIC_TIC" c_CasADi__DirectCollocation__DirectCollocation_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr Function' -> IO (Ptr DirectCollocation')
+casADi__DirectCollocation__DirectCollocation''
+  :: Function -> Function -> Function -> IO DirectCollocation
+casADi__DirectCollocation__DirectCollocation'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectCollocation__DirectCollocation_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+directCollocation'' :: Function -> Function -> Function -> IO DirectCollocation
+directCollocation'' = casADi__DirectCollocation__DirectCollocation''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectCollocation__DirectCollocation_TIC_TIC_TIC" c_CasADi__DirectCollocation__DirectCollocation_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr DirectCollocation')
+casADi__DirectCollocation__DirectCollocation'''
+  :: Function -> Function -> IO DirectCollocation
+casADi__DirectCollocation__DirectCollocation''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectCollocation__DirectCollocation_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+directCollocation''' :: Function -> Function -> IO DirectCollocation
+directCollocation''' = casADi__DirectCollocation__DirectCollocation'''
+
diff --git a/Casadi/Wrappers/Classes/DirectMultipleShooting.hs b/Casadi/Wrappers/Classes/DirectMultipleShooting.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/DirectMultipleShooting.hs
@@ -0,0 +1,307 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.DirectMultipleShooting
+       (
+         DirectMultipleShooting,
+         DirectMultipleShootingClass(..),
+         directMultipleShooting,
+         directMultipleShooting',
+         directMultipleShooting'',
+         directMultipleShooting''',
+         directMultipleShooting_getConstraintBounds,
+         directMultipleShooting_getGuess,
+         directMultipleShooting_getNLPSolver,
+         directMultipleShooting_getReportConstraints,
+         directMultipleShooting_getVariableBounds,
+         directMultipleShooting_reportConstraints',
+         directMultipleShooting_setOptimalSolution,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show DirectMultipleShooting where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__getGuess" c_CasADi__DirectMultipleShooting__getGuess
+  :: Ptr DirectMultipleShooting' -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectMultipleShooting__getGuess
+  :: DirectMultipleShooting -> Vector Double -> IO ()
+casADi__DirectMultipleShooting__getGuess x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectMultipleShooting__getGuess x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the variables.
+-}
+directMultipleShooting_getGuess :: DirectMultipleShootingClass a => a -> Vector Double -> IO ()
+directMultipleShooting_getGuess x = casADi__DirectMultipleShooting__getGuess (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__getVariableBounds" c_CasADi__DirectMultipleShooting__getVariableBounds
+  :: Ptr DirectMultipleShooting' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectMultipleShooting__getVariableBounds
+  :: DirectMultipleShooting -> Vector Double -> Vector Double -> IO ()
+casADi__DirectMultipleShooting__getVariableBounds x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectMultipleShooting__getVariableBounds x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the variables.
+-}
+directMultipleShooting_getVariableBounds :: DirectMultipleShootingClass a => a -> Vector Double -> Vector Double -> IO ()
+directMultipleShooting_getVariableBounds x = casADi__DirectMultipleShooting__getVariableBounds (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__getConstraintBounds" c_CasADi__DirectMultipleShooting__getConstraintBounds
+  :: Ptr DirectMultipleShooting' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectMultipleShooting__getConstraintBounds
+  :: DirectMultipleShooting -> Vector Double -> Vector Double -> IO ()
+casADi__DirectMultipleShooting__getConstraintBounds x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectMultipleShooting__getConstraintBounds x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the constraints.
+-}
+directMultipleShooting_getConstraintBounds :: DirectMultipleShootingClass a => a -> Vector Double -> Vector Double -> IO ()
+directMultipleShooting_getConstraintBounds x = casADi__DirectMultipleShooting__getConstraintBounds (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__setOptimalSolution" c_CasADi__DirectMultipleShooting__setOptimalSolution
+  :: Ptr DirectMultipleShooting' -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectMultipleShooting__setOptimalSolution
+  :: DirectMultipleShooting -> Vector Double -> IO ()
+casADi__DirectMultipleShooting__setOptimalSolution x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectMultipleShooting__setOptimalSolution x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the optimal solution.
+-}
+directMultipleShooting_setOptimalSolution :: DirectMultipleShootingClass a => a -> Vector Double -> IO ()
+directMultipleShooting_setOptimalSolution x = casADi__DirectMultipleShooting__setOptimalSolution (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__getNLPSolver" c_CasADi__DirectMultipleShooting__getNLPSolver
+  :: Ptr DirectMultipleShooting' -> IO (Ptr NLPSolver')
+casADi__DirectMultipleShooting__getNLPSolver
+  :: DirectMultipleShooting -> IO NLPSolver
+casADi__DirectMultipleShooting__getNLPSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectMultipleShooting__getNLPSolver x0' >>= wrapReturn
+
+-- classy wrapper
+directMultipleShooting_getNLPSolver :: DirectMultipleShootingClass a => a -> IO NLPSolver
+directMultipleShooting_getNLPSolver x = casADi__DirectMultipleShooting__getNLPSolver (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__reportConstraints_TIC" c_CasADi__DirectMultipleShooting__reportConstraints_TIC
+  :: Ptr DirectMultipleShooting' -> IO ()
+casADi__DirectMultipleShooting__reportConstraints'
+  :: DirectMultipleShooting -> IO ()
+casADi__DirectMultipleShooting__reportConstraints' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectMultipleShooting__reportConstraints_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+directMultipleShooting_reportConstraints' :: DirectMultipleShootingClass a => a -> IO ()
+directMultipleShooting_reportConstraints' x = casADi__DirectMultipleShooting__reportConstraints' (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__getReportConstraints" c_CasADi__DirectMultipleShooting__getReportConstraints
+  :: Ptr DirectMultipleShooting' -> IO (Ptr StdString')
+casADi__DirectMultipleShooting__getReportConstraints
+  :: DirectMultipleShooting -> IO String
+casADi__DirectMultipleShooting__getReportConstraints x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectMultipleShooting__getReportConstraints x0' >>= wrapReturn
+
+-- classy wrapper
+directMultipleShooting_getReportConstraints :: DirectMultipleShootingClass a => a -> IO String
+directMultipleShooting_getReportConstraints x = casADi__DirectMultipleShooting__getReportConstraints (castDirectMultipleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__DirectMultipleShooting" c_CasADi__DirectMultipleShooting__DirectMultipleShooting
+  :: IO (Ptr DirectMultipleShooting')
+casADi__DirectMultipleShooting__DirectMultipleShooting
+  :: IO DirectMultipleShooting
+casADi__DirectMultipleShooting__DirectMultipleShooting  =
+  c_CasADi__DirectMultipleShooting__DirectMultipleShooting  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::DirectMultipleShooting::DirectMultipleShooting()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::DirectMultipleShooting::DirectMultipleShooting(const Function &ffcn, const Function &mfcn, const Function &cfcn=Function(), const Function &rfcn=Function())
+>------------------------------------------------------------------------
+>
+>Create a multiple shooting OCP solver.
+>
+>Parameters:
+>-----------
+>
+>ffcn:  Continuous time dynamics, an CasADi::Function with the folowing
+>mapping:
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+> Important notes:
+>In the above table, INTEGRATOR_P input is not really of shape (np x
+>1), but rather ( (np+nu) x 1 ).
+>
+>The first np entries of the INTEGRATOR_P input are interpreted as parameters
+>to be optimized but constant over the whole domain. The remainder are
+>interpreted as controls.
+>
+>BEWARE: if the right hand side of ffcn is dependent on time, the results
+>will be incorrect.
+>
+>Parameters:
+>-----------
+>
+>mfcn:  Mayer term, CasADi::Function mapping to cost (1 x 1)
+>
+>>Input scheme: CasADi::MayerInput (MAYER_NUM_IN = 3) [mayerIn]
+>+-----------+-------+---------------------------------------------+
+>| Full name | Short |                 Description                 |
+>+===========+=======+=============================================+
+>| MAYER_X   | x     | States at the end of integration (nx x 1) . |
+>+-----------+-------+---------------------------------------------+
+>| MAYER_P   | p     | Problem parameters (np x 1) .               |
+>+-----------+-------+---------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>cfcn:  Path constraints, CasADi::Function mapping to (nh x 1)
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>Parameters:
+>-----------
+>
+>rfcn:  Initial value constraints
+-}
+directMultipleShooting :: IO DirectMultipleShooting
+directMultipleShooting = casADi__DirectMultipleShooting__DirectMultipleShooting
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC" c_CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr Function' -> Ptr Function' -> IO (Ptr DirectMultipleShooting')
+casADi__DirectMultipleShooting__DirectMultipleShooting'
+  :: Function -> Function -> Function -> Function -> IO DirectMultipleShooting
+casADi__DirectMultipleShooting__DirectMultipleShooting' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+directMultipleShooting' :: Function -> Function -> Function -> Function -> IO DirectMultipleShooting
+directMultipleShooting' = casADi__DirectMultipleShooting__DirectMultipleShooting'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC_TIC" c_CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr Function' -> IO (Ptr DirectMultipleShooting')
+casADi__DirectMultipleShooting__DirectMultipleShooting''
+  :: Function -> Function -> Function -> IO DirectMultipleShooting
+casADi__DirectMultipleShooting__DirectMultipleShooting'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+directMultipleShooting'' :: Function -> Function -> Function -> IO DirectMultipleShooting
+directMultipleShooting'' = casADi__DirectMultipleShooting__DirectMultipleShooting''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC_TIC_TIC" c_CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr DirectMultipleShooting')
+casADi__DirectMultipleShooting__DirectMultipleShooting'''
+  :: Function -> Function -> IO DirectMultipleShooting
+casADi__DirectMultipleShooting__DirectMultipleShooting''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectMultipleShooting__DirectMultipleShooting_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+directMultipleShooting''' :: Function -> Function -> IO DirectMultipleShooting
+directMultipleShooting''' = casADi__DirectMultipleShooting__DirectMultipleShooting'''
+
diff --git a/Casadi/Wrappers/Classes/DirectSingleShooting.hs b/Casadi/Wrappers/Classes/DirectSingleShooting.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/DirectSingleShooting.hs
@@ -0,0 +1,307 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.DirectSingleShooting
+       (
+         DirectSingleShooting,
+         DirectSingleShootingClass(..),
+         directSingleShooting,
+         directSingleShooting',
+         directSingleShooting'',
+         directSingleShooting''',
+         directSingleShooting_getConstraintBounds,
+         directSingleShooting_getGuess,
+         directSingleShooting_getNLPSolver,
+         directSingleShooting_getReportConstraints,
+         directSingleShooting_getVariableBounds,
+         directSingleShooting_reportConstraints',
+         directSingleShooting_setOptimalSolution,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show DirectSingleShooting where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__getGuess" c_CasADi__DirectSingleShooting__getGuess
+  :: Ptr DirectSingleShooting' -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectSingleShooting__getGuess
+  :: DirectSingleShooting -> Vector Double -> IO ()
+casADi__DirectSingleShooting__getGuess x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectSingleShooting__getGuess x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the variables.
+-}
+directSingleShooting_getGuess :: DirectSingleShootingClass a => a -> Vector Double -> IO ()
+directSingleShooting_getGuess x = casADi__DirectSingleShooting__getGuess (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__getVariableBounds" c_CasADi__DirectSingleShooting__getVariableBounds
+  :: Ptr DirectSingleShooting' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectSingleShooting__getVariableBounds
+  :: DirectSingleShooting -> Vector Double -> Vector Double -> IO ()
+casADi__DirectSingleShooting__getVariableBounds x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectSingleShooting__getVariableBounds x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the variables.
+-}
+directSingleShooting_getVariableBounds :: DirectSingleShootingClass a => a -> Vector Double -> Vector Double -> IO ()
+directSingleShooting_getVariableBounds x = casADi__DirectSingleShooting__getVariableBounds (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__getConstraintBounds" c_CasADi__DirectSingleShooting__getConstraintBounds
+  :: Ptr DirectSingleShooting' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectSingleShooting__getConstraintBounds
+  :: DirectSingleShooting -> Vector Double -> Vector Double -> IO ()
+casADi__DirectSingleShooting__getConstraintBounds x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectSingleShooting__getConstraintBounds x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the constraints.
+-}
+directSingleShooting_getConstraintBounds :: DirectSingleShootingClass a => a -> Vector Double -> Vector Double -> IO ()
+directSingleShooting_getConstraintBounds x = casADi__DirectSingleShooting__getConstraintBounds (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__setOptimalSolution" c_CasADi__DirectSingleShooting__setOptimalSolution
+  :: Ptr DirectSingleShooting' -> Ptr (CppVec CDouble) -> IO ()
+casADi__DirectSingleShooting__setOptimalSolution
+  :: DirectSingleShooting -> Vector Double -> IO ()
+casADi__DirectSingleShooting__setOptimalSolution x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectSingleShooting__setOptimalSolution x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the optimal solution.
+-}
+directSingleShooting_setOptimalSolution :: DirectSingleShootingClass a => a -> Vector Double -> IO ()
+directSingleShooting_setOptimalSolution x = casADi__DirectSingleShooting__setOptimalSolution (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__getNLPSolver" c_CasADi__DirectSingleShooting__getNLPSolver
+  :: Ptr DirectSingleShooting' -> IO (Ptr NLPSolver')
+casADi__DirectSingleShooting__getNLPSolver
+  :: DirectSingleShooting -> IO NLPSolver
+casADi__DirectSingleShooting__getNLPSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectSingleShooting__getNLPSolver x0' >>= wrapReturn
+
+-- classy wrapper
+directSingleShooting_getNLPSolver :: DirectSingleShootingClass a => a -> IO NLPSolver
+directSingleShooting_getNLPSolver x = casADi__DirectSingleShooting__getNLPSolver (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__reportConstraints_TIC" c_CasADi__DirectSingleShooting__reportConstraints_TIC
+  :: Ptr DirectSingleShooting' -> IO ()
+casADi__DirectSingleShooting__reportConstraints'
+  :: DirectSingleShooting -> IO ()
+casADi__DirectSingleShooting__reportConstraints' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectSingleShooting__reportConstraints_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+directSingleShooting_reportConstraints' :: DirectSingleShootingClass a => a -> IO ()
+directSingleShooting_reportConstraints' x = casADi__DirectSingleShooting__reportConstraints' (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__getReportConstraints" c_CasADi__DirectSingleShooting__getReportConstraints
+  :: Ptr DirectSingleShooting' -> IO (Ptr StdString')
+casADi__DirectSingleShooting__getReportConstraints
+  :: DirectSingleShooting -> IO String
+casADi__DirectSingleShooting__getReportConstraints x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DirectSingleShooting__getReportConstraints x0' >>= wrapReturn
+
+-- classy wrapper
+directSingleShooting_getReportConstraints :: DirectSingleShootingClass a => a -> IO String
+directSingleShooting_getReportConstraints x = casADi__DirectSingleShooting__getReportConstraints (castDirectSingleShooting x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__DirectSingleShooting" c_CasADi__DirectSingleShooting__DirectSingleShooting
+  :: IO (Ptr DirectSingleShooting')
+casADi__DirectSingleShooting__DirectSingleShooting
+  :: IO DirectSingleShooting
+casADi__DirectSingleShooting__DirectSingleShooting  =
+  c_CasADi__DirectSingleShooting__DirectSingleShooting  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::DirectSingleShooting::DirectSingleShooting()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::DirectSingleShooting::DirectSingleShooting(const Function &ffcn, const Function &mfcn, const Function &cfcn=Function(), const Function &rfcn=Function())
+>------------------------------------------------------------------------
+>
+>Create a multiple shooting OCP solver.
+>
+>Parameters:
+>-----------
+>
+>ffcn:  Continuous time dynamics, an CasADi::Function with the folowing
+>mapping:
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+> Important notes:
+>In the above table, INTEGRATOR_P input is not really of shape (np x
+>1), but rather ( (np+nu) x 1 ).
+>
+>The first np entries of the INTEGRATOR_P input are interpreted as parameters
+>to be optimized but constant over the whole domain. The remainder are
+>interpreted as controls.
+>
+>BEWARE: if the right hand side of ffcn is dependent on time, the results
+>will be incorrect.
+>
+>Parameters:
+>-----------
+>
+>mfcn:  Mayer term, CasADi::Function mapping to cost (1 x 1)
+>
+>>Input scheme: CasADi::MayerInput (MAYER_NUM_IN = 3) [mayerIn]
+>+-----------+-------+---------------------------------------------+
+>| Full name | Short |                 Description                 |
+>+===========+=======+=============================================+
+>| MAYER_X   | x     | States at the end of integration (nx x 1) . |
+>+-----------+-------+---------------------------------------------+
+>| MAYER_P   | p     | Problem parameters (np x 1) .               |
+>+-----------+-------+---------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>cfcn:  Path constraints, CasADi::Function mapping to (nh x 1)
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>Parameters:
+>-----------
+>
+>rfcn:  Initial value constraints
+-}
+directSingleShooting :: IO DirectSingleShooting
+directSingleShooting = casADi__DirectSingleShooting__DirectSingleShooting
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__DirectSingleShooting_TIC" c_CasADi__DirectSingleShooting__DirectSingleShooting_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr Function' -> Ptr Function' -> IO (Ptr DirectSingleShooting')
+casADi__DirectSingleShooting__DirectSingleShooting'
+  :: Function -> Function -> Function -> Function -> IO DirectSingleShooting
+casADi__DirectSingleShooting__DirectSingleShooting' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__DirectSingleShooting__DirectSingleShooting_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+directSingleShooting' :: Function -> Function -> Function -> Function -> IO DirectSingleShooting
+directSingleShooting' = casADi__DirectSingleShooting__DirectSingleShooting'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__DirectSingleShooting_TIC_TIC" c_CasADi__DirectSingleShooting__DirectSingleShooting_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr Function' -> IO (Ptr DirectSingleShooting')
+casADi__DirectSingleShooting__DirectSingleShooting''
+  :: Function -> Function -> Function -> IO DirectSingleShooting
+casADi__DirectSingleShooting__DirectSingleShooting'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__DirectSingleShooting__DirectSingleShooting_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+directSingleShooting'' :: Function -> Function -> Function -> IO DirectSingleShooting
+directSingleShooting'' = casADi__DirectSingleShooting__DirectSingleShooting''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DirectSingleShooting__DirectSingleShooting_TIC_TIC_TIC" c_CasADi__DirectSingleShooting__DirectSingleShooting_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr DirectSingleShooting')
+casADi__DirectSingleShooting__DirectSingleShooting'''
+  :: Function -> Function -> IO DirectSingleShooting
+casADi__DirectSingleShooting__DirectSingleShooting''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__DirectSingleShooting__DirectSingleShooting_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+directSingleShooting''' :: Function -> Function -> IO DirectSingleShooting
+directSingleShooting''' = casADi__DirectSingleShooting__DirectSingleShooting'''
+
diff --git a/Casadi/Wrappers/Classes/DpleSolver.hs b/Casadi/Wrappers/Classes/DpleSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/DpleSolver.hs
@@ -0,0 +1,99 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.DpleSolver
+       (
+         DpleSolver,
+         DpleSolverClass(..),
+         dpleSolver,
+         dpleSolver_checkNode,
+         dpleSolver_clone,
+         dpleSolver_printStats',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show DpleSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DpleSolver__clone" c_CasADi__DpleSolver__clone
+  :: Ptr DpleSolver' -> IO (Ptr DpleSolver')
+casADi__DpleSolver__clone
+  :: DpleSolver -> IO DpleSolver
+casADi__DpleSolver__clone x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DpleSolver__clone x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Clone.
+-}
+dpleSolver_clone :: DpleSolverClass a => a -> IO DpleSolver
+dpleSolver_clone x = casADi__DpleSolver__clone (castDpleSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DpleSolver__printStats_TIC" c_CasADi__DpleSolver__printStats_TIC
+  :: Ptr DpleSolver' -> IO ()
+casADi__DpleSolver__printStats'
+  :: DpleSolver -> IO ()
+casADi__DpleSolver__printStats' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DpleSolver__printStats_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+dpleSolver_printStats' :: DpleSolverClass a => a -> IO ()
+dpleSolver_printStats' x = casADi__DpleSolver__printStats' (castDpleSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DpleSolver__checkNode" c_CasADi__DpleSolver__checkNode
+  :: Ptr DpleSolver' -> IO CInt
+casADi__DpleSolver__checkNode
+  :: DpleSolver -> IO Bool
+casADi__DpleSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__DpleSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+dpleSolver_checkNode :: DpleSolverClass a => a -> IO Bool
+dpleSolver_checkNode x = casADi__DpleSolver__checkNode (castDpleSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__DpleSolver__DpleSolver" c_CasADi__DpleSolver__DpleSolver
+  :: IO (Ptr DpleSolver')
+casADi__DpleSolver__DpleSolver
+  :: IO DpleSolver
+casADi__DpleSolver__DpleSolver  =
+  c_CasADi__DpleSolver__DpleSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+dpleSolver :: IO DpleSolver
+dpleSolver = casADi__DpleSolver__DpleSolver
+
diff --git a/Casadi/Wrappers/Classes/ExpDMatrix.hs b/Casadi/Wrappers/Classes/ExpDMatrix.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ExpDMatrix.hs
@@ -0,0 +1,280 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ExpDMatrix
+       (
+         ExpDMatrix,
+         ExpDMatrixClass(..),
+         expDMatrix___ge__,
+         expDMatrix___gt__,
+         expDMatrix___mldivide__,
+         expDMatrix___radd__,
+         expDMatrix___rdiv__,
+         expDMatrix___req__,
+         expDMatrix___rge__,
+         expDMatrix___rgt__,
+         expDMatrix___rle__,
+         expDMatrix___rlt__,
+         expDMatrix___rmul__,
+         expDMatrix___rne__,
+         expDMatrix___rsub__,
+         expDMatrix___rtruediv__,
+         expDMatrix___truediv__,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______mldivide__" c_CasADi__GenericExpression_CasADi__Matrix_double______mldivide__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______mldivide__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______mldivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______mldivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix division from left.
+-}
+expDMatrix___mldivide__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___mldivide__ x = casADi__GenericExpression_CasADi__Matrix_double______mldivide__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______gt__" c_CasADi__GenericExpression_CasADi__Matrix_double______gt__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______gt__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______gt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______gt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both < and >
+-}
+expDMatrix___gt__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___gt__ x = casADi__GenericExpression_CasADi__Matrix_double______gt__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______ge__" c_CasADi__GenericExpression_CasADi__Matrix_double______ge__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______ge__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______ge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______ge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both <= and >=.
+-}
+expDMatrix___ge__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___ge__ x = casADi__GenericExpression_CasADi__Matrix_double______ge__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______truediv__" c_CasADi__GenericExpression_CasADi__Matrix_double______truediv__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______truediv__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Division (with future.division in effect)
+-}
+expDMatrix___truediv__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___truediv__ x = casADi__GenericExpression_CasADi__Matrix_double______truediv__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______radd__" c_CasADi__GenericExpression_CasADi__Matrix_double______radd__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______radd__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______radd__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______radd__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___radd__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___radd__ x = casADi__GenericExpression_CasADi__Matrix_double______radd__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rsub__" c_CasADi__GenericExpression_CasADi__Matrix_double______rsub__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rsub__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rsub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rsub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rsub__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rsub__ x = casADi__GenericExpression_CasADi__Matrix_double______rsub__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rmul__" c_CasADi__GenericExpression_CasADi__Matrix_double______rmul__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rmul__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rmul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rmul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rmul__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rmul__ x = casADi__GenericExpression_CasADi__Matrix_double______rmul__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rdiv__" c_CasADi__GenericExpression_CasADi__Matrix_double______rdiv__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rdiv__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rdiv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rdiv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rdiv__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rdiv__ x = casADi__GenericExpression_CasADi__Matrix_double______rdiv__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rlt__" c_CasADi__GenericExpression_CasADi__Matrix_double______rlt__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rlt__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rlt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rlt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rlt__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rlt__ x = casADi__GenericExpression_CasADi__Matrix_double______rlt__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rle__" c_CasADi__GenericExpression_CasADi__Matrix_double______rle__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rle__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rle__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rle__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rle__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rle__ x = casADi__GenericExpression_CasADi__Matrix_double______rle__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rgt__" c_CasADi__GenericExpression_CasADi__Matrix_double______rgt__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rgt__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rgt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rgt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rgt__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rgt__ x = casADi__GenericExpression_CasADi__Matrix_double______rgt__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rge__" c_CasADi__GenericExpression_CasADi__Matrix_double______rge__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rge__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rge__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rge__ x = casADi__GenericExpression_CasADi__Matrix_double______rge__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______req__" c_CasADi__GenericExpression_CasADi__Matrix_double______req__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______req__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______req__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______req__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___req__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___req__ x = casADi__GenericExpression_CasADi__Matrix_double______req__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rne__" c_CasADi__GenericExpression_CasADi__Matrix_double______rne__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rne__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rne__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rne__ x = casADi__GenericExpression_CasADi__Matrix_double______rne__ (castExpDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_double______rtruediv__" c_CasADi__GenericExpression_CasADi__Matrix_double______rtruediv__
+  :: Ptr ExpDMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+casADi__GenericExpression_CasADi__Matrix_double______rtruediv__
+  :: ExpDMatrix -> DMatrix -> IO DMatrix
+casADi__GenericExpression_CasADi__Matrix_double______rtruediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_double______rtruediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expDMatrix___rtruediv__ :: ExpDMatrixClass a => a -> DMatrix -> IO DMatrix
+expDMatrix___rtruediv__ x = casADi__GenericExpression_CasADi__Matrix_double______rtruediv__ (castExpDMatrix x)
+
diff --git a/Casadi/Wrappers/Classes/ExpIMatrix.hs b/Casadi/Wrappers/Classes/ExpIMatrix.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ExpIMatrix.hs
@@ -0,0 +1,280 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ExpIMatrix
+       (
+         ExpIMatrix,
+         ExpIMatrixClass(..),
+         expIMatrix___ge__,
+         expIMatrix___gt__,
+         expIMatrix___mldivide__,
+         expIMatrix___radd__,
+         expIMatrix___rdiv__,
+         expIMatrix___req__,
+         expIMatrix___rge__,
+         expIMatrix___rgt__,
+         expIMatrix___rle__,
+         expIMatrix___rlt__,
+         expIMatrix___rmul__,
+         expIMatrix___rne__,
+         expIMatrix___rsub__,
+         expIMatrix___rtruediv__,
+         expIMatrix___truediv__,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______mldivide__" c_CasADi__GenericExpression_CasADi__Matrix_int______mldivide__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______mldivide__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______mldivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______mldivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix division from left.
+-}
+expIMatrix___mldivide__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___mldivide__ x = casADi__GenericExpression_CasADi__Matrix_int______mldivide__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______gt__" c_CasADi__GenericExpression_CasADi__Matrix_int______gt__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______gt__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______gt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______gt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both < and >
+-}
+expIMatrix___gt__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___gt__ x = casADi__GenericExpression_CasADi__Matrix_int______gt__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______ge__" c_CasADi__GenericExpression_CasADi__Matrix_int______ge__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______ge__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______ge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______ge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both <= and >=.
+-}
+expIMatrix___ge__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___ge__ x = casADi__GenericExpression_CasADi__Matrix_int______ge__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______truediv__" c_CasADi__GenericExpression_CasADi__Matrix_int______truediv__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______truediv__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Division (with future.division in effect)
+-}
+expIMatrix___truediv__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___truediv__ x = casADi__GenericExpression_CasADi__Matrix_int______truediv__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______radd__" c_CasADi__GenericExpression_CasADi__Matrix_int______radd__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______radd__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______radd__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______radd__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___radd__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___radd__ x = casADi__GenericExpression_CasADi__Matrix_int______radd__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rsub__" c_CasADi__GenericExpression_CasADi__Matrix_int______rsub__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rsub__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rsub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rsub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rsub__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rsub__ x = casADi__GenericExpression_CasADi__Matrix_int______rsub__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rmul__" c_CasADi__GenericExpression_CasADi__Matrix_int______rmul__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rmul__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rmul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rmul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rmul__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rmul__ x = casADi__GenericExpression_CasADi__Matrix_int______rmul__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rdiv__" c_CasADi__GenericExpression_CasADi__Matrix_int______rdiv__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rdiv__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rdiv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rdiv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rdiv__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rdiv__ x = casADi__GenericExpression_CasADi__Matrix_int______rdiv__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rlt__" c_CasADi__GenericExpression_CasADi__Matrix_int______rlt__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rlt__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rlt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rlt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rlt__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rlt__ x = casADi__GenericExpression_CasADi__Matrix_int______rlt__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rle__" c_CasADi__GenericExpression_CasADi__Matrix_int______rle__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rle__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rle__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rle__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rle__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rle__ x = casADi__GenericExpression_CasADi__Matrix_int______rle__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rgt__" c_CasADi__GenericExpression_CasADi__Matrix_int______rgt__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rgt__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rgt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rgt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rgt__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rgt__ x = casADi__GenericExpression_CasADi__Matrix_int______rgt__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rge__" c_CasADi__GenericExpression_CasADi__Matrix_int______rge__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rge__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rge__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rge__ x = casADi__GenericExpression_CasADi__Matrix_int______rge__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______req__" c_CasADi__GenericExpression_CasADi__Matrix_int______req__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______req__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______req__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______req__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___req__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___req__ x = casADi__GenericExpression_CasADi__Matrix_int______req__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rne__" c_CasADi__GenericExpression_CasADi__Matrix_int______rne__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rne__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rne__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rne__ x = casADi__GenericExpression_CasADi__Matrix_int______rne__ (castExpIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_int______rtruediv__" c_CasADi__GenericExpression_CasADi__Matrix_int______rtruediv__
+  :: Ptr ExpIMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__GenericExpression_CasADi__Matrix_int______rtruediv__
+  :: ExpIMatrix -> IMatrix -> IO IMatrix
+casADi__GenericExpression_CasADi__Matrix_int______rtruediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_int______rtruediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expIMatrix___rtruediv__ :: ExpIMatrixClass a => a -> IMatrix -> IO IMatrix
+expIMatrix___rtruediv__ x = casADi__GenericExpression_CasADi__Matrix_int______rtruediv__ (castExpIMatrix x)
+
diff --git a/Casadi/Wrappers/Classes/ExpMX.hs b/Casadi/Wrappers/Classes/ExpMX.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ExpMX.hs
@@ -0,0 +1,280 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ExpMX
+       (
+         ExpMX,
+         ExpMXClass(..),
+         expMX___ge__,
+         expMX___gt__,
+         expMX___mldivide__,
+         expMX___radd__,
+         expMX___rdiv__,
+         expMX___req__,
+         expMX___rge__,
+         expMX___rgt__,
+         expMX___rle__,
+         expMX___rlt__,
+         expMX___rmul__,
+         expMX___rne__,
+         expMX___rsub__,
+         expMX___rtruediv__,
+         expMX___truediv__,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____mldivide__" c_CasADi__GenericExpression_CasADi__MX_____mldivide__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____mldivide__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____mldivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____mldivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix division from left.
+-}
+expMX___mldivide__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___mldivide__ x = casADi__GenericExpression_CasADi__MX_____mldivide__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____gt__" c_CasADi__GenericExpression_CasADi__MX_____gt__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____gt__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____gt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____gt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both < and >
+-}
+expMX___gt__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___gt__ x = casADi__GenericExpression_CasADi__MX_____gt__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____ge__" c_CasADi__GenericExpression_CasADi__MX_____ge__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____ge__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____ge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____ge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both <= and >=.
+-}
+expMX___ge__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___ge__ x = casADi__GenericExpression_CasADi__MX_____ge__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____truediv__" c_CasADi__GenericExpression_CasADi__MX_____truediv__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____truediv__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Division (with future.division in effect)
+-}
+expMX___truediv__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___truediv__ x = casADi__GenericExpression_CasADi__MX_____truediv__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____radd__" c_CasADi__GenericExpression_CasADi__MX_____radd__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____radd__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____radd__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____radd__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___radd__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___radd__ x = casADi__GenericExpression_CasADi__MX_____radd__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rsub__" c_CasADi__GenericExpression_CasADi__MX_____rsub__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rsub__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rsub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rsub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rsub__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rsub__ x = casADi__GenericExpression_CasADi__MX_____rsub__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rmul__" c_CasADi__GenericExpression_CasADi__MX_____rmul__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rmul__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rmul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rmul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rmul__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rmul__ x = casADi__GenericExpression_CasADi__MX_____rmul__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rdiv__" c_CasADi__GenericExpression_CasADi__MX_____rdiv__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rdiv__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rdiv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rdiv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rdiv__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rdiv__ x = casADi__GenericExpression_CasADi__MX_____rdiv__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rlt__" c_CasADi__GenericExpression_CasADi__MX_____rlt__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rlt__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rlt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rlt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rlt__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rlt__ x = casADi__GenericExpression_CasADi__MX_____rlt__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rle__" c_CasADi__GenericExpression_CasADi__MX_____rle__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rle__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rle__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rle__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rle__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rle__ x = casADi__GenericExpression_CasADi__MX_____rle__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rgt__" c_CasADi__GenericExpression_CasADi__MX_____rgt__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rgt__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rgt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rgt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rgt__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rgt__ x = casADi__GenericExpression_CasADi__MX_____rgt__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rge__" c_CasADi__GenericExpression_CasADi__MX_____rge__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rge__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rge__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rge__ x = casADi__GenericExpression_CasADi__MX_____rge__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____req__" c_CasADi__GenericExpression_CasADi__MX_____req__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____req__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____req__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____req__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___req__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___req__ x = casADi__GenericExpression_CasADi__MX_____req__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rne__" c_CasADi__GenericExpression_CasADi__MX_____rne__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rne__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rne__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rne__ x = casADi__GenericExpression_CasADi__MX_____rne__ (castExpMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__MX_____rtruediv__" c_CasADi__GenericExpression_CasADi__MX_____rtruediv__
+  :: Ptr ExpMX' -> Ptr MX' -> IO (Ptr MX')
+casADi__GenericExpression_CasADi__MX_____rtruediv__
+  :: ExpMX -> MX -> IO MX
+casADi__GenericExpression_CasADi__MX_____rtruediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__MX_____rtruediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expMX___rtruediv__ :: ExpMXClass a => a -> MX -> IO MX
+expMX___rtruediv__ x = casADi__GenericExpression_CasADi__MX_____rtruediv__ (castExpMX x)
+
diff --git a/Casadi/Wrappers/Classes/ExpSX.hs b/Casadi/Wrappers/Classes/ExpSX.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ExpSX.hs
@@ -0,0 +1,280 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ExpSX
+       (
+         ExpSX,
+         ExpSXClass(..),
+         expSX___ge__,
+         expSX___gt__,
+         expSX___mldivide__,
+         expSX___radd__,
+         expSX___rdiv__,
+         expSX___req__,
+         expSX___rge__,
+         expSX___rgt__,
+         expSX___rle__,
+         expSX___rlt__,
+         expSX___rmul__,
+         expSX___rne__,
+         expSX___rsub__,
+         expSX___rtruediv__,
+         expSX___truediv__,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______mldivide__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______mldivide__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______mldivide__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______mldivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______mldivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix division from left.
+-}
+expSX___mldivide__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___mldivide__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______mldivide__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______gt__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______gt__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______gt__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______gt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______gt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both < and >
+-}
+expSX___gt__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___gt__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______gt__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______ge__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______ge__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______ge__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______ge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______ge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both <= and >=.
+-}
+expSX___ge__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___ge__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______ge__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______truediv__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______truediv__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______truediv__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Division (with future.division in effect)
+-}
+expSX___truediv__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___truediv__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______truediv__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______radd__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______radd__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______radd__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______radd__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______radd__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___radd__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___radd__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______radd__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rsub__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rsub__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rsub__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rsub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rsub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rsub__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rsub__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rsub__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rmul__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rmul__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rmul__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rmul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rmul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rmul__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rmul__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rmul__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rdiv__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rdiv__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rdiv__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rdiv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rdiv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rdiv__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rdiv__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rdiv__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rlt__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rlt__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rlt__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rlt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rlt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rlt__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rlt__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rlt__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rle__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rle__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rle__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rle__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rle__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rle__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rle__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rle__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rgt__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rgt__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rgt__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rgt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rgt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rgt__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rgt__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rgt__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rge__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rge__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rge__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rge__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rge__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rge__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______req__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______req__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______req__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______req__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______req__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___req__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___req__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______req__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rne__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rne__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rne__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rne__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rne__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rne__ (castExpSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rtruediv__" c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rtruediv__
+  :: Ptr ExpSX' -> Ptr SX' -> IO (Ptr SX')
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rtruediv__
+  :: ExpSX -> SX -> IO SX
+casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rtruediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rtruediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSX___rtruediv__ :: ExpSXClass a => a -> SX -> IO SX
+expSX___rtruediv__ x = casADi__GenericExpression_CasADi__Matrix_CasADi__SXElement______rtruediv__ (castExpSX x)
+
diff --git a/Casadi/Wrappers/Classes/ExpSXElement.hs b/Casadi/Wrappers/Classes/ExpSXElement.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ExpSXElement.hs
@@ -0,0 +1,280 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ExpSXElement
+       (
+         ExpSXElement,
+         ExpSXElementClass(..),
+         expSXElement___ge__,
+         expSXElement___gt__,
+         expSXElement___mldivide__,
+         expSXElement___radd__,
+         expSXElement___rdiv__,
+         expSXElement___req__,
+         expSXElement___rge__,
+         expSXElement___rgt__,
+         expSXElement___rle__,
+         expSXElement___rlt__,
+         expSXElement___rmul__,
+         expSXElement___rne__,
+         expSXElement___rsub__,
+         expSXElement___rtruediv__,
+         expSXElement___truediv__,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____mldivide__" c_CasADi__GenericExpression_CasADi__SXElement_____mldivide__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____mldivide__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____mldivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____mldivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix division from left.
+-}
+expSXElement___mldivide__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___mldivide__ x = casADi__GenericExpression_CasADi__SXElement_____mldivide__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____gt__" c_CasADi__GenericExpression_CasADi__SXElement_____gt__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____gt__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____gt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____gt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both < and >
+-}
+expSXElement___gt__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___gt__ x = casADi__GenericExpression_CasADi__SXElement_____gt__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____ge__" c_CasADi__GenericExpression_CasADi__SXElement_____ge__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____ge__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____ge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____ge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>No need to have both <= and >=.
+-}
+expSXElement___ge__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___ge__ x = casADi__GenericExpression_CasADi__SXElement_____ge__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____truediv__" c_CasADi__GenericExpression_CasADi__SXElement_____truediv__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____truediv__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Division (with future.division in effect)
+-}
+expSXElement___truediv__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___truediv__ x = casADi__GenericExpression_CasADi__SXElement_____truediv__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____radd__" c_CasADi__GenericExpression_CasADi__SXElement_____radd__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____radd__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____radd__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____radd__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___radd__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___radd__ x = casADi__GenericExpression_CasADi__SXElement_____radd__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rsub__" c_CasADi__GenericExpression_CasADi__SXElement_____rsub__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rsub__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rsub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rsub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rsub__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rsub__ x = casADi__GenericExpression_CasADi__SXElement_____rsub__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rmul__" c_CasADi__GenericExpression_CasADi__SXElement_____rmul__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rmul__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rmul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rmul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rmul__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rmul__ x = casADi__GenericExpression_CasADi__SXElement_____rmul__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rdiv__" c_CasADi__GenericExpression_CasADi__SXElement_____rdiv__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rdiv__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rdiv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rdiv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rdiv__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rdiv__ x = casADi__GenericExpression_CasADi__SXElement_____rdiv__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rlt__" c_CasADi__GenericExpression_CasADi__SXElement_____rlt__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rlt__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rlt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rlt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rlt__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rlt__ x = casADi__GenericExpression_CasADi__SXElement_____rlt__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rle__" c_CasADi__GenericExpression_CasADi__SXElement_____rle__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rle__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rle__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rle__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rle__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rle__ x = casADi__GenericExpression_CasADi__SXElement_____rle__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rgt__" c_CasADi__GenericExpression_CasADi__SXElement_____rgt__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rgt__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rgt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rgt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rgt__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rgt__ x = casADi__GenericExpression_CasADi__SXElement_____rgt__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rge__" c_CasADi__GenericExpression_CasADi__SXElement_____rge__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rge__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rge__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rge__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rge__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rge__ x = casADi__GenericExpression_CasADi__SXElement_____rge__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____req__" c_CasADi__GenericExpression_CasADi__SXElement_____req__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____req__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____req__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____req__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___req__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___req__ x = casADi__GenericExpression_CasADi__SXElement_____req__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rne__" c_CasADi__GenericExpression_CasADi__SXElement_____rne__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rne__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rne__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rne__ x = casADi__GenericExpression_CasADi__SXElement_____rne__ (castExpSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericExpression_CasADi__SXElement_____rtruediv__" c_CasADi__GenericExpression_CasADi__SXElement_____rtruediv__
+  :: Ptr ExpSXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__GenericExpression_CasADi__SXElement_____rtruediv__
+  :: ExpSXElement -> SXElement -> IO SXElement
+casADi__GenericExpression_CasADi__SXElement_____rtruediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericExpression_CasADi__SXElement_____rtruediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+expSXElement___rtruediv__ :: ExpSXElementClass a => a -> SXElement -> IO SXElement
+expSXElement___rtruediv__ x = casADi__GenericExpression_CasADi__SXElement_____rtruediv__ (castExpSXElement x)
+
diff --git a/Casadi/Wrappers/Classes/FX.hs b/Casadi/Wrappers/Classes/FX.hs
deleted file mode 100644
--- a/Casadi/Wrappers/Classes/FX.hs
+++ /dev/null
@@ -1,567 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# Language ForeignFunctionInterface #-}
-{-# Language FlexibleInstances #-}
-{-# Language MultiParamTypeClasses #-}
-
-module Casadi.Wrappers.Classes.FX
-       (
-         FX,
-         FXClass(..),
-         fx_addMonitor,
-         fx_call,
-         fx_call'',
-         fx_checkInputs,
-         fx_checkNode,
-         fx_evalMX,
-         fx_evalSX,
-         fx_evaluate,
-         fx_fullJacobian,
-         fx_generateCode,
-         fx_getInputScheme,
-         fx_getOutputScheme,
-         fx_getStat,
-         fx_gradient,
-         fx_hessian,
-         fx_inputScheme,
-         fx_jacobian,
-         fx_outputScheme,
-         fx_removeMonitor,
-         fx_setInputScheme,
-         fx_setOutputScheme,
-         fx_solve,
-         fx_symbolicInput,
-         fx_symbolicInputSX,
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.Classes.PrintableObject
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-instance Show FX where
-  show = unsafePerformIO . printableObject_getDescription
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__inputScheme" c_CasADi__FX__inputScheme
-  :: Ptr FX' -> IO (Ptr IOScheme')
-casADi__FX__inputScheme
-  :: FX -> IO IOScheme
-casADi__FX__inputScheme x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__inputScheme x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access input/output scheme.
--}
-fx_inputScheme :: FXClass a => a -> IO IOScheme
-fx_inputScheme x = casADi__FX__inputScheme (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__outputScheme" c_CasADi__FX__outputScheme
-  :: Ptr FX' -> IO (Ptr IOScheme')
-casADi__FX__outputScheme
-  :: FX -> IO IOScheme
-casADi__FX__outputScheme x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__outputScheme x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access input/output scheme.
--}
-fx_outputScheme :: FXClass a => a -> IO IOScheme
-fx_outputScheme x = casADi__FX__outputScheme (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__setInputScheme" c_CasADi__FX__setInputScheme
-  :: Ptr FX' -> Ptr IOScheme' -> IO ()
-casADi__FX__setInputScheme
-  :: FX -> IOScheme -> IO ()
-casADi__FX__setInputScheme x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__setInputScheme x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set input scheme.
--}
-fx_setInputScheme :: FXClass a => a -> IOScheme -> IO ()
-fx_setInputScheme x = casADi__FX__setInputScheme (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__setOutputScheme" c_CasADi__FX__setOutputScheme
-  :: Ptr FX' -> Ptr IOScheme' -> IO ()
-casADi__FX__setOutputScheme
-  :: FX -> IOScheme -> IO ()
-casADi__FX__setOutputScheme x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__setOutputScheme x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set output scheme.
--}
-fx_setOutputScheme :: FXClass a => a -> IOScheme -> IO ()
-fx_setOutputScheme x = casADi__FX__setOutputScheme (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__getInputScheme" c_CasADi__FX__getInputScheme
-  :: Ptr FX' -> IO (Ptr IOScheme')
-casADi__FX__getInputScheme
-  :: FX -> IO IOScheme
-casADi__FX__getInputScheme x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__getInputScheme x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get input scheme.
--}
-fx_getInputScheme :: FXClass a => a -> IO IOScheme
-fx_getInputScheme x = casADi__FX__getInputScheme (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__getOutputScheme" c_CasADi__FX__getOutputScheme
-  :: Ptr FX' -> IO (Ptr IOScheme')
-casADi__FX__getOutputScheme
-  :: FX -> IO IOScheme
-casADi__FX__getOutputScheme x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__getOutputScheme x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get output scheme.
--}
-fx_getOutputScheme :: FXClass a => a -> IO IOScheme
-fx_getOutputScheme x = casADi__FX__getOutputScheme (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__evaluate" c_CasADi__FX__evaluate
-  :: Ptr FX' -> IO ()
-casADi__FX__evaluate
-  :: FX -> IO ()
-casADi__FX__evaluate x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__evaluate x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Evaluate.
--}
-fx_evaluate :: FXClass a => a -> IO ()
-fx_evaluate x = casADi__FX__evaluate (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__solve" c_CasADi__FX__solve
-  :: Ptr FX' -> IO ()
-casADi__FX__solve
-  :: FX -> IO ()
-casADi__FX__solve x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__solve x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->the same as evaluate(0,0)
--}
-fx_solve :: FXClass a => a -> IO ()
-fx_solve x = casADi__FX__solve (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__jacobian" c_CasADi__FX__jacobian
-  :: Ptr FX' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr FX')
-casADi__FX__jacobian
-  :: FX -> Int -> Int -> Bool -> Bool -> IO FX
-casADi__FX__jacobian x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__FX__jacobian x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-{-|
->Generate a Jacobian function of output oind with respect to input iind.
->
->Parameters:
->-----------
->
->iind:  The index of the input
->
->oind:  The index of the output
->
->The default behavior of this class is defined by the derived class. If
->compact is set to true, only the nonzeros of the input and output
->expressions are considered. If symmetric is set to true, the Jacobian being
->calculated is known to be symmetric (usually a Hessian), which can be
->exploited by the algorithm.
->
->The generated Jacobian has one more output than the calling function
->corresponding to the Jacobian and the same number of inputs.
--}
-fx_jacobian :: FXClass a => a -> Int -> Int -> Bool -> Bool -> IO FX
-fx_jacobian x = casADi__FX__jacobian (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__gradient" c_CasADi__FX__gradient
-  :: Ptr FX' -> CInt -> CInt -> IO (Ptr FX')
-casADi__FX__gradient
-  :: FX -> Int -> Int -> IO FX
-casADi__FX__gradient x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__FX__gradient x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Generate a gradient function of output oind with respect to input iind.
->
->Parameters:
->-----------
->
->iind:  The index of the input
->
->oind:  The index of the output
->
->The default behavior of this class is defined by the derived class. Note
->that the output must be scalar. In other cases, use the Jacobian instead.
--}
-fx_gradient :: FXClass a => a -> Int -> Int -> IO FX
-fx_gradient x = casADi__FX__gradient (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__hessian" c_CasADi__FX__hessian
-  :: Ptr FX' -> CInt -> CInt -> IO (Ptr FX')
-casADi__FX__hessian
-  :: FX -> Int -> Int -> IO FX
-casADi__FX__hessian x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__FX__hessian x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Generate a Hessian function of output oind with respect to input iind.
->
->Parameters:
->-----------
->
->iind:  The index of the input
->
->oind:  The index of the output
->
->The generated Hessian has two more outputs than the calling function
->corresponding to the Hessian and the gradients.
--}
-fx_hessian :: FXClass a => a -> Int -> Int -> IO FX
-fx_hessian x = casADi__FX__hessian (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__fullJacobian" c_CasADi__FX__fullJacobian
-  :: Ptr FX' -> IO (Ptr FX')
-casADi__FX__fullJacobian
-  :: FX -> IO FX
-casADi__FX__fullJacobian x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__fullJacobian x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Generate a Jacobian function of all the inputs nonzeros (
->getNumScalarInputs()) with respect to all the output nonzeros (
->getNumScalarOutputs()).
--}
-fx_fullJacobian :: FXClass a => a -> IO FX
-fx_fullJacobian x = casADi__FX__fullJacobian (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__call" c_CasADi__FX__call
-  :: Ptr FX' -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-casADi__FX__call
-  :: FX -> Vector MX -> IO (Vector MX)
-casADi__FX__call x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__call x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  vector< MX > CasADi::FX::call(const MX &arg)
->------------------------------------------------------------------------
->
->Create a function call (single input)
->
->>  std::vector<MX> CasADi::FX::call(const std::vector< MX > &arg)
->------------------------------------------------------------------------
->
->Create a function call ( MX graph)
->
->>  void CasADi::FX::call(const MXVector &arg, MXVector &res, const MXVectorVector &fseed, MXVectorVector &fsens, const MXVectorVector &aseed, MXVectorVector &asens)
->------------------------------------------------------------------------
->
->Create a function call with directional derivatives Note: return by
->reference with SWIG.
->
->>  std::vector<std::vector<MX> > CasADi::FX::call(const std::vector< std::vector< MX > > &arg, const Dictionary &paropt=Dictionary())
->------------------------------------------------------------------------
->
->Evaluate symbolically in parallel (matrix graph) paropt: Set of options to
->be passed to the Parallelizer.
--}
-fx_call :: FXClass a => a -> Vector MX -> IO (Vector MX)
-fx_call x = casADi__FX__call (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__call_TIC_TIC" c_CasADi__FX__call_TIC_TIC
-  :: Ptr FX' -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-casADi__FX__call''
-  :: FX -> Vector (Vector MX) -> IO (Vector (Vector MX))
-casADi__FX__call'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__call_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-fx_call'' :: FXClass a => a -> Vector (Vector MX) -> IO (Vector (Vector MX))
-fx_call'' x = casADi__FX__call'' (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__evalMX" c_CasADi__FX__evalMX
-  :: Ptr FX' -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-casADi__FX__evalMX
-  :: FX -> Vector MX -> IO (Vector MX)
-casADi__FX__evalMX x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__evalMX x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  std::vector<MX> CasADi::FX::evalMX(const std::vector< MX > &arg)
->------------------------------------------------------------------------
->
->evaluate symbolically, MX type (unambiguous)
->
->>  void CasADi::FX::evalMX(const MXVector &arg, MXVector &res, const MXVectorVector &fseed, MXVectorVector &fsens, const MXVectorVector &aseed, MXVectorVector &asens)
->------------------------------------------------------------------------
->
->Evaluate symbolically with with directional derivatives, MX type The first
->two arguments are the nondifferentiated inputs and results of the
->evaluation, the next two arguments are a set of forward directional seeds
->and the resulting forward directional derivatives, the length of the vector
->being the number of forward directions. The next two arguments are a set of
->adjoint directional seeds and the resulting adjoint directional derivatives,
->the length of the vector being the number of adjoint directions.
--}
-fx_evalMX :: FXClass a => a -> Vector MX -> IO (Vector MX)
-fx_evalMX x = casADi__FX__evalMX (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__evalSX" c_CasADi__FX__evalSX
-  :: Ptr FX' -> Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr (CppVec (Ptr SXMatrix')))
-casADi__FX__evalSX
-  :: FX -> Vector SXMatrix -> IO (Vector SXMatrix)
-casADi__FX__evalSX x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__evalSX x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  std::vector<SXMatrix> CasADi::FX::evalSX(const std::vector< SXMatrix > &arg)
->------------------------------------------------------------------------
->
->evaluate symbolically, SX type (unambiguous)
->
->>  void CasADi::FX::evalSX(const SXMatrixVector &arg, SXMatrixVector &res, const SXMatrixVectorVector &fseed, SXMatrixVectorVector &fsens, const SXMatrixVectorVector &aseed, SXMatrixVectorVector &asens)
->------------------------------------------------------------------------
->
->Evaluate symbolically with with directional derivatives, SX type The first
->two arguments are the nondifferentiated inputs and results of the
->evaluation, the next two arguments are a set of forward directional seeds
->and the resulting forward directional derivatives, the length of the vector
->being the number of forward directions. The next two arguments are a set of
->adjoint directional seeds and the resulting adjoint directional derivatives,
->the length of the vector being the number of adjoint directions.
--}
-fx_evalSX :: FXClass a => a -> Vector SXMatrix -> IO (Vector SXMatrix)
-fx_evalSX x = casADi__FX__evalSX (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__generateCode" c_CasADi__FX__generateCode
-  :: Ptr FX' -> Ptr StdString' -> IO ()
-casADi__FX__generateCode
-  :: FX -> String -> IO ()
-casADi__FX__generateCode x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__generateCode x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Export / Generate C code for the function.
--}
-fx_generateCode :: FXClass a => a -> String -> IO ()
-fx_generateCode x = casADi__FX__generateCode (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__checkNode" c_CasADi__FX__checkNode
-  :: Ptr FX' -> IO CInt
-casADi__FX__checkNode
-  :: FX -> IO Bool
-casADi__FX__checkNode x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__checkNode x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the node is pointing to the right type of object.
--}
-fx_checkNode :: FXClass a => a -> IO Bool
-fx_checkNode x = casADi__FX__checkNode (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__getStat" c_CasADi__FX__getStat
-  :: Ptr FX' -> Ptr StdString' -> IO (Ptr GenericType')
-casADi__FX__getStat
-  :: FX -> String -> IO GenericType
-casADi__FX__getStat x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__getStat x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get a single statistic obtained at the end of the last evaluate call.
--}
-fx_getStat :: FXClass a => a -> String -> IO GenericType
-fx_getStat x = casADi__FX__getStat (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__symbolicInput" c_CasADi__FX__symbolicInput
-  :: Ptr FX' -> IO (Ptr (CppVec (Ptr MX')))
-casADi__FX__symbolicInput
-  :: FX -> IO (Vector MX)
-casADi__FX__symbolicInput x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__symbolicInput x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get a vector of symbolic variables with the same dimensions as the inputs
->There is no guarantee that consecutive calls return identical objects.
--}
-fx_symbolicInput :: FXClass a => a -> IO (Vector MX)
-fx_symbolicInput x = casADi__FX__symbolicInput (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__symbolicInputSX" c_CasADi__FX__symbolicInputSX
-  :: Ptr FX' -> IO (Ptr (CppVec (Ptr SXMatrix')))
-casADi__FX__symbolicInputSX
-  :: FX -> IO (Vector SXMatrix)
-casADi__FX__symbolicInputSX x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__symbolicInputSX x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get a vector of symbolic variables with the same dimensions as the inputs,
->SX graph There is no guarantee that consecutive calls return identical
->objects.
--}
-fx_symbolicInputSX :: FXClass a => a -> IO (Vector SXMatrix)
-fx_symbolicInputSX x = casADi__FX__symbolicInputSX (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__addMonitor" c_CasADi__FX__addMonitor
-  :: Ptr FX' -> Ptr StdString' -> IO ()
-casADi__FX__addMonitor
-  :: FX -> String -> IO ()
-casADi__FX__addMonitor x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__addMonitor x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Add modules to be monitored.
--}
-fx_addMonitor :: FXClass a => a -> String -> IO ()
-fx_addMonitor x = casADi__FX__addMonitor (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__removeMonitor" c_CasADi__FX__removeMonitor
-  :: Ptr FX' -> Ptr StdString' -> IO ()
-casADi__FX__removeMonitor
-  :: FX -> String -> IO ()
-casADi__FX__removeMonitor x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__FX__removeMonitor x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Remove modules to be monitored.
--}
-fx_removeMonitor :: FXClass a => a -> String -> IO ()
-fx_removeMonitor x = casADi__FX__removeMonitor (castFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__FX__checkInputs" c_CasADi__FX__checkInputs
-  :: Ptr FX' -> IO ()
-casADi__FX__checkInputs
-  :: FX -> IO ()
-casADi__FX__checkInputs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__FX__checkInputs x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the numerical values of the supplied bounds make sense.
--}
-fx_checkInputs :: FXClass a => a -> IO ()
-fx_checkInputs x = casADi__FX__checkInputs (castFX x)
-
diff --git a/Casadi/Wrappers/Classes/FixedStepIntegrator.hs b/Casadi/Wrappers/Classes/FixedStepIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/FixedStepIntegrator.hs
@@ -0,0 +1,66 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.FixedStepIntegrator
+       (
+         FixedStepIntegrator,
+         FixedStepIntegratorClass(..),
+         fixedStepIntegrator,
+         fixedStepIntegrator_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show FixedStepIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__FixedStepIntegrator__checkNode" c_CasADi__FixedStepIntegrator__checkNode
+  :: Ptr FixedStepIntegrator' -> IO CInt
+casADi__FixedStepIntegrator__checkNode
+  :: FixedStepIntegrator -> IO Bool
+casADi__FixedStepIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__FixedStepIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+fixedStepIntegrator_checkNode :: FixedStepIntegratorClass a => a -> IO Bool
+fixedStepIntegrator_checkNode x = casADi__FixedStepIntegrator__checkNode (castFixedStepIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__FixedStepIntegrator__FixedStepIntegrator" c_CasADi__FixedStepIntegrator__FixedStepIntegrator
+  :: IO (Ptr FixedStepIntegrator')
+casADi__FixedStepIntegrator__FixedStepIntegrator
+  :: IO FixedStepIntegrator
+casADi__FixedStepIntegrator__FixedStepIntegrator  =
+  c_CasADi__FixedStepIntegrator__FixedStepIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+fixedStepIntegrator :: IO FixedStepIntegrator
+fixedStepIntegrator = casADi__FixedStepIntegrator__FixedStepIntegrator
+
diff --git a/Casadi/Wrappers/Classes/Function.hs b/Casadi/Wrappers/Classes/Function.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Function.hs
@@ -0,0 +1,2215 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Function
+       (
+         Function,
+         FunctionClass(..),
+         function,
+         function_addMonitor,
+         function_call,
+         function_call',
+         function_call'',
+         function_call''',
+         function_call'''',
+         function_call''''',
+         function_call'''''',
+         function_call''''''',
+         function_call'''''''',
+         function_callDerivative,
+         function_callDerivative',
+         function_callDerivative'',
+         function_callDerivative''',
+         function_callDerivative'''',
+         function_callDerivative''''',
+         function_callDerivative'''''',
+         function_callDerivative''''''',
+         function_callDerivative'''''''',
+         function_callParallel,
+         function_checkInputs,
+         function_checkNode,
+         function_derivative,
+         function_evaluate,
+         function_fullJacobian,
+         function_generateCode,
+         function_generateCode',
+         function_getInputScheme,
+         function_getNumInputElements,
+         function_getNumInputNonzeros,
+         function_getNumOutputElements,
+         function_getNumOutputNonzeros,
+         function_getOutputScheme,
+         function_getStat,
+         function_gradient,
+         function_gradient',
+         function_gradient'',
+         function_gradient''',
+         function_gradient'''',
+         function_gradient''''',
+         function_gradient'''''',
+         function_hessian,
+         function_hessian',
+         function_hessian'',
+         function_hessian''',
+         function_hessian'''',
+         function_hessian''''',
+         function_hessian'''''',
+         function_inputScheme,
+         function_jacSparsity,
+         function_jacSparsity',
+         function_jacSparsity'',
+         function_jacSparsity''',
+         function_jacSparsity'''',
+         function_jacSparsity''''',
+         function_jacSparsity'''''',
+         function_jacSparsity''''''',
+         function_jacSparsity'''''''',
+         function_jacSparsity''''''''',
+         function_jacSparsity'''''''''',
+         function_jacSparsity''''''''''',
+         function_jacSparsity'''''''''''',
+         function_jacSparsity''''''''''''',
+         function_jacSparsity'''''''''''''',
+         function_jacobian,
+         function_jacobian',
+         function_jacobian'',
+         function_jacobian''',
+         function_jacobian'''',
+         function_jacobian''''',
+         function_jacobian'''''',
+         function_jacobian''''''',
+         function_jacobian'''''''',
+         function_jacobian''''''''',
+         function_jacobian'''''''''',
+         function_jacobian''''''''''',
+         function_jacobian'''''''''''',
+         function_jacobian''''''''''''',
+         function_jacobian'''''''''''''',
+         function_operator_call,
+         function_operator_call',
+         function_operator_call'',
+         function_outputScheme,
+         function_removeMonitor,
+         function_setDerivative,
+         function_setFullJacobian,
+         function_setInputScheme,
+         function_setJacSparsity,
+         function_setJacSparsity',
+         function_setJacSparsity'',
+         function_setJacSparsity''',
+         function_setJacSparsity'''',
+         function_setJacSparsity''''',
+         function_setJacSparsity'''''',
+         function_setJacSparsity''''''',
+         function_setJacobian,
+         function_setJacobian',
+         function_setJacobian'',
+         function_setJacobian''',
+         function_setOutputScheme,
+         function_solve,
+         function_spCanEvaluate,
+         function_spEvaluate,
+         function_spInit,
+         function_symbolicInput,
+         function_symbolicInputSX,
+         function_tangent,
+         function_tangent',
+         function_tangent'',
+         function_tangent''',
+         function_tangent'''',
+         function_tangent''''',
+         function_tangent'''''',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Function where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__inputScheme" c_CasADi__Function__inputScheme
+  :: Ptr Function' -> IO (Ptr IOScheme')
+casADi__Function__inputScheme
+  :: Function -> IO IOScheme
+casADi__Function__inputScheme x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__inputScheme x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+> [INTERNAL]  Access input/output scheme.
+-}
+function_inputScheme :: FunctionClass a => a -> IO IOScheme
+function_inputScheme x = casADi__Function__inputScheme (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__outputScheme" c_CasADi__Function__outputScheme
+  :: Ptr Function' -> IO (Ptr IOScheme')
+casADi__Function__outputScheme
+  :: Function -> IO IOScheme
+casADi__Function__outputScheme x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__outputScheme x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Access
+>input/output scheme.
+-}
+function_outputScheme :: FunctionClass a => a -> IO IOScheme
+function_outputScheme x = casADi__Function__outputScheme (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getNumInputNonzeros" c_CasADi__Function__getNumInputNonzeros
+  :: Ptr Function' -> IO CInt
+casADi__Function__getNumInputNonzeros
+  :: Function -> IO Int
+casADi__Function__getNumInputNonzeros x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__getNumInputNonzeros x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get total number of nonzeros in all of the matrix-valued inputs.
+-}
+function_getNumInputNonzeros :: FunctionClass a => a -> IO Int
+function_getNumInputNonzeros x = casADi__Function__getNumInputNonzeros (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getNumOutputNonzeros" c_CasADi__Function__getNumOutputNonzeros
+  :: Ptr Function' -> IO CInt
+casADi__Function__getNumOutputNonzeros
+  :: Function -> IO Int
+casADi__Function__getNumOutputNonzeros x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__getNumOutputNonzeros x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get total number of nonzeros in all of the matrix-valued outputs.
+-}
+function_getNumOutputNonzeros :: FunctionClass a => a -> IO Int
+function_getNumOutputNonzeros x = casADi__Function__getNumOutputNonzeros (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getNumInputElements" c_CasADi__Function__getNumInputElements
+  :: Ptr Function' -> IO CInt
+casADi__Function__getNumInputElements
+  :: Function -> IO Int
+casADi__Function__getNumInputElements x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__getNumInputElements x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get total number of elements in all of the matrix-valued inputs.
+-}
+function_getNumInputElements :: FunctionClass a => a -> IO Int
+function_getNumInputElements x = casADi__Function__getNumInputElements (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getNumOutputElements" c_CasADi__Function__getNumOutputElements
+  :: Ptr Function' -> IO CInt
+casADi__Function__getNumOutputElements
+  :: Function -> IO Int
+casADi__Function__getNumOutputElements x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__getNumOutputElements x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get total number of elements in all of the matrix-valued outputs.
+-}
+function_getNumOutputElements :: FunctionClass a => a -> IO Int
+function_getNumOutputElements x = casADi__Function__getNumOutputElements (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setInputScheme" c_CasADi__Function__setInputScheme
+  :: Ptr Function' -> Ptr IOScheme' -> IO ()
+casADi__Function__setInputScheme
+  :: Function -> IOScheme -> IO ()
+casADi__Function__setInputScheme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__setInputScheme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set input scheme.
+-}
+function_setInputScheme :: FunctionClass a => a -> IOScheme -> IO ()
+function_setInputScheme x = casADi__Function__setInputScheme (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setOutputScheme" c_CasADi__Function__setOutputScheme
+  :: Ptr Function' -> Ptr IOScheme' -> IO ()
+casADi__Function__setOutputScheme
+  :: Function -> IOScheme -> IO ()
+casADi__Function__setOutputScheme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__setOutputScheme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set output scheme.
+-}
+function_setOutputScheme :: FunctionClass a => a -> IOScheme -> IO ()
+function_setOutputScheme x = casADi__Function__setOutputScheme (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getInputScheme" c_CasADi__Function__getInputScheme
+  :: Ptr Function' -> IO (Ptr IOScheme')
+casADi__Function__getInputScheme
+  :: Function -> IO IOScheme
+casADi__Function__getInputScheme x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__getInputScheme x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get input scheme.
+-}
+function_getInputScheme :: FunctionClass a => a -> IO IOScheme
+function_getInputScheme x = casADi__Function__getInputScheme (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getOutputScheme" c_CasADi__Function__getOutputScheme
+  :: Ptr Function' -> IO (Ptr IOScheme')
+casADi__Function__getOutputScheme
+  :: Function -> IO IOScheme
+casADi__Function__getOutputScheme x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__getOutputScheme x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get output scheme.
+-}
+function_getOutputScheme :: FunctionClass a => a -> IO IOScheme
+function_getOutputScheme x = casADi__Function__getOutputScheme (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__evaluate" c_CasADi__Function__evaluate
+  :: Ptr Function' -> IO ()
+casADi__Function__evaluate
+  :: Function -> IO ()
+casADi__Function__evaluate x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__evaluate x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Evaluate.
+-}
+function_evaluate :: FunctionClass a => a -> IO ()
+function_evaluate x = casADi__Function__evaluate (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__solve" c_CasADi__Function__solve
+  :: Ptr Function' -> IO ()
+casADi__Function__solve
+  :: Function -> IO ()
+casADi__Function__solve x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__solve x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>the same as evaluate()
+-}
+function_solve :: FunctionClass a => a -> IO ()
+function_solve x = casADi__Function__solve (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian" c_CasADi__Function__jacobian
+  :: Ptr Function' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian
+  :: Function -> Int -> Int -> Bool -> Bool -> IO Function
+casADi__Function__jacobian x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacobian x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a Jacobian function of output oind with respect to input iind.
+>
+>Parameters:
+>-----------
+>
+>iind:  The index of the input
+>
+>oind:  The index of the output
+>
+>The default behavior of this class is defined by the derived class. If
+>compact is set to true, only the nonzeros of the input and output
+>expressions are considered. If symmetric is set to true, the Jacobian being
+>calculated is known to be symmetric (usually a Hessian), which can be
+>exploited by the algorithm.
+>
+>The generated Jacobian has one more output than the calling function
+>corresponding to the Jacobian and the same number of inputs.
+-}
+function_jacobian :: FunctionClass a => a -> Int -> Int -> Bool -> Bool -> IO Function
+function_jacobian x = casADi__Function__jacobian (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC" c_CasADi__Function__jacobian_TIC
+  :: Ptr Function' -> CInt -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian'
+  :: Function -> Int -> Int -> Bool -> IO Function
+casADi__Function__jacobian' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacobian_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian' :: FunctionClass a => a -> Int -> Int -> Bool -> IO Function
+function_jacobian' x = casADi__Function__jacobian' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC
+  :: Ptr Function' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian''
+  :: Function -> Int -> Int -> IO Function
+casADi__Function__jacobian'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacobian_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'' :: FunctionClass a => a -> Int -> Int -> IO Function
+function_jacobian'' x = casADi__Function__jacobian'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian'''
+  :: Function -> Int -> IO Function
+casADi__Function__jacobian''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian''' :: FunctionClass a => a -> Int -> IO Function
+function_jacobian''' x = casADi__Function__jacobian''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr Function')
+casADi__Function__jacobian''''
+  :: Function -> IO Function
+casADi__Function__jacobian'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'''' :: FunctionClass a => a -> IO Function
+function_jacobian'''' x = casADi__Function__jacobian'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian'''''
+  :: Function -> String -> Int -> Bool -> Bool -> IO Function
+casADi__Function__jacobian''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian''''' :: FunctionClass a => a -> String -> Int -> Bool -> Bool -> IO Function
+function_jacobian''''' x = casADi__Function__jacobian''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian''''''
+  :: Function -> String -> Int -> Bool -> IO Function
+casADi__Function__jacobian'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'''''' :: FunctionClass a => a -> String -> Int -> Bool -> IO Function
+function_jacobian'''''' x = casADi__Function__jacobian'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian'''''''
+  :: Function -> String -> Int -> IO Function
+casADi__Function__jacobian''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian''''''' :: FunctionClass a => a -> String -> Int -> IO Function
+function_jacobian''''''' x = casADi__Function__jacobian''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__jacobian''''''''
+  :: Function -> String -> IO Function
+casADi__Function__jacobian'''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'''''''' :: FunctionClass a => a -> String -> IO Function
+function_jacobian'''''''' x = casADi__Function__jacobian'''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian'''''''''
+  :: Function -> Int -> String -> Bool -> Bool -> IO Function
+casADi__Function__jacobian''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian''''''''' :: FunctionClass a => a -> Int -> String -> Bool -> Bool -> IO Function
+function_jacobian''''''''' x = casADi__Function__jacobian''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian''''''''''
+  :: Function -> Int -> String -> Bool -> IO Function
+casADi__Function__jacobian'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'''''''''' :: FunctionClass a => a -> Int -> String -> Bool -> IO Function
+function_jacobian'''''''''' x = casADi__Function__jacobian'''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__jacobian'''''''''''
+  :: Function -> Int -> String -> IO Function
+casADi__Function__jacobian''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian''''''''''' :: FunctionClass a => a -> Int -> String -> IO Function
+function_jacobian''''''''''' x = casADi__Function__jacobian''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian''''''''''''
+  :: Function -> String -> String -> Bool -> Bool -> IO Function
+casADi__Function__jacobian'''''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'''''''''''' :: FunctionClass a => a -> String -> String -> Bool -> Bool -> IO Function
+function_jacobian'''''''''''' x = casADi__Function__jacobian'''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> CInt -> IO (Ptr Function')
+casADi__Function__jacobian'''''''''''''
+  :: Function -> String -> String -> Bool -> IO Function
+casADi__Function__jacobian''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian''''''''''''' :: FunctionClass a => a -> String -> String -> Bool -> IO Function
+function_jacobian''''''''''''' x = casADi__Function__jacobian''''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__jacobian''''''''''''''
+  :: Function -> String -> String -> IO Function
+casADi__Function__jacobian'''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacobian_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacobian'''''''''''''' :: FunctionClass a => a -> String -> String -> IO Function
+function_jacobian'''''''''''''' x = casADi__Function__jacobian'''''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacobian" c_CasADi__Function__setJacobian
+  :: Ptr Function' -> Ptr Function' -> CInt -> CInt -> CInt -> IO ()
+casADi__Function__setJacobian
+  :: Function -> Function -> Int -> Int -> Bool -> IO ()
+casADi__Function__setJacobian x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__setJacobian x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the Jacobian function of output oind with respect to input iind NOTE:
+>Does not take ownership, only weak references to the Jacobians are kept
+>internally
+-}
+function_setJacobian :: FunctionClass a => a -> Function -> Int -> Int -> Bool -> IO ()
+function_setJacobian x = casADi__Function__setJacobian (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacobian_TIC" c_CasADi__Function__setJacobian_TIC
+  :: Ptr Function' -> Ptr Function' -> CInt -> CInt -> IO ()
+casADi__Function__setJacobian'
+  :: Function -> Function -> Int -> Int -> IO ()
+casADi__Function__setJacobian' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__setJacobian_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_setJacobian' :: FunctionClass a => a -> Function -> Int -> Int -> IO ()
+function_setJacobian' x = casADi__Function__setJacobian' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacobian_TIC_TIC" c_CasADi__Function__setJacobian_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> CInt -> IO ()
+casADi__Function__setJacobian''
+  :: Function -> Function -> Int -> IO ()
+casADi__Function__setJacobian'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__setJacobian_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_setJacobian'' :: FunctionClass a => a -> Function -> Int -> IO ()
+function_setJacobian'' x = casADi__Function__setJacobian'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacobian_TIC_TIC_TIC" c_CasADi__Function__setJacobian_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO ()
+casADi__Function__setJacobian'''
+  :: Function -> Function -> IO ()
+casADi__Function__setJacobian''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__setJacobian_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_setJacobian''' :: FunctionClass a => a -> Function -> IO ()
+function_setJacobian''' x = casADi__Function__setJacobian''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient" c_CasADi__Function__gradient
+  :: Ptr Function' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__gradient
+  :: Function -> Int -> Int -> IO Function
+casADi__Function__gradient x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__gradient x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a gradient function of output oind with respect to input iind.
+>
+>Parameters:
+>-----------
+>
+>iind:  The index of the input
+>
+>oind:  The index of the output
+>
+>The default behavior of this class is defined by the derived class. Note
+>that the output must be scalar. In other cases, use the Jacobian instead.
+-}
+function_gradient :: FunctionClass a => a -> Int -> Int -> IO Function
+function_gradient x = casADi__Function__gradient (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient_TIC" c_CasADi__Function__gradient_TIC
+  :: Ptr Function' -> CInt -> IO (Ptr Function')
+casADi__Function__gradient'
+  :: Function -> Int -> IO Function
+casADi__Function__gradient' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__gradient_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_gradient' :: FunctionClass a => a -> Int -> IO Function
+function_gradient' x = casADi__Function__gradient' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient_TIC_TIC" c_CasADi__Function__gradient_TIC_TIC
+  :: Ptr Function' -> IO (Ptr Function')
+casADi__Function__gradient''
+  :: Function -> IO Function
+casADi__Function__gradient'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__gradient_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+function_gradient'' :: FunctionClass a => a -> IO Function
+function_gradient'' x = casADi__Function__gradient'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient_TIC_TIC_TIC" c_CasADi__Function__gradient_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> IO (Ptr Function')
+casADi__Function__gradient'''
+  :: Function -> String -> Int -> IO Function
+casADi__Function__gradient''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__gradient_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_gradient''' :: FunctionClass a => a -> String -> Int -> IO Function
+function_gradient''' x = casADi__Function__gradient''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient_TIC_TIC_TIC_TIC" c_CasADi__Function__gradient_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__gradient''''
+  :: Function -> String -> IO Function
+casADi__Function__gradient'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__gradient_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_gradient'''' :: FunctionClass a => a -> String -> IO Function
+function_gradient'''' x = casADi__Function__gradient'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__gradient_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__gradient'''''
+  :: Function -> Int -> String -> IO Function
+casADi__Function__gradient''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__gradient_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_gradient''''' :: FunctionClass a => a -> Int -> String -> IO Function
+function_gradient''''' x = casADi__Function__gradient''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__gradient_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__gradient_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__gradient''''''
+  :: Function -> String -> String -> IO Function
+casADi__Function__gradient'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__gradient_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_gradient'''''' :: FunctionClass a => a -> String -> String -> IO Function
+function_gradient'''''' x = casADi__Function__gradient'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent" c_CasADi__Function__tangent
+  :: Ptr Function' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__tangent
+  :: Function -> Int -> Int -> IO Function
+casADi__Function__tangent x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__tangent x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a tangent function of output oind with respect to input iind.
+>
+>Parameters:
+>-----------
+>
+>iind:  The index of the input
+>
+>oind:  The index of the output
+>
+>The default behavior of this class is defined by the derived class. Note
+>that the input must be scalar. In other cases, use the Jacobian instead.
+-}
+function_tangent :: FunctionClass a => a -> Int -> Int -> IO Function
+function_tangent x = casADi__Function__tangent (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent_TIC" c_CasADi__Function__tangent_TIC
+  :: Ptr Function' -> CInt -> IO (Ptr Function')
+casADi__Function__tangent'
+  :: Function -> Int -> IO Function
+casADi__Function__tangent' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__tangent_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_tangent' :: FunctionClass a => a -> Int -> IO Function
+function_tangent' x = casADi__Function__tangent' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent_TIC_TIC" c_CasADi__Function__tangent_TIC_TIC
+  :: Ptr Function' -> IO (Ptr Function')
+casADi__Function__tangent''
+  :: Function -> IO Function
+casADi__Function__tangent'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__tangent_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+function_tangent'' :: FunctionClass a => a -> IO Function
+function_tangent'' x = casADi__Function__tangent'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent_TIC_TIC_TIC" c_CasADi__Function__tangent_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> IO (Ptr Function')
+casADi__Function__tangent'''
+  :: Function -> String -> Int -> IO Function
+casADi__Function__tangent''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__tangent_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_tangent''' :: FunctionClass a => a -> String -> Int -> IO Function
+function_tangent''' x = casADi__Function__tangent''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent_TIC_TIC_TIC_TIC" c_CasADi__Function__tangent_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__tangent''''
+  :: Function -> String -> IO Function
+casADi__Function__tangent'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__tangent_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_tangent'''' :: FunctionClass a => a -> String -> IO Function
+function_tangent'''' x = casADi__Function__tangent'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__tangent_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__tangent'''''
+  :: Function -> Int -> String -> IO Function
+casADi__Function__tangent''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__tangent_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_tangent''''' :: FunctionClass a => a -> Int -> String -> IO Function
+function_tangent''''' x = casADi__Function__tangent''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__tangent_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__tangent_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__tangent''''''
+  :: Function -> String -> String -> IO Function
+casADi__Function__tangent'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__tangent_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_tangent'''''' :: FunctionClass a => a -> String -> String -> IO Function
+function_tangent'''''' x = casADi__Function__tangent'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian" c_CasADi__Function__hessian
+  :: Ptr Function' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__hessian
+  :: Function -> Int -> Int -> IO Function
+casADi__Function__hessian x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__hessian x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a Hessian function of output oind with respect to input iind.
+>
+>Parameters:
+>-----------
+>
+>iind:  The index of the input
+>
+>oind:  The index of the output
+>
+>The generated Hessian has two more outputs than the calling function
+>corresponding to the Hessian and the gradients.
+-}
+function_hessian :: FunctionClass a => a -> Int -> Int -> IO Function
+function_hessian x = casADi__Function__hessian (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian_TIC" c_CasADi__Function__hessian_TIC
+  :: Ptr Function' -> CInt -> IO (Ptr Function')
+casADi__Function__hessian'
+  :: Function -> Int -> IO Function
+casADi__Function__hessian' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__hessian_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_hessian' :: FunctionClass a => a -> Int -> IO Function
+function_hessian' x = casADi__Function__hessian' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian_TIC_TIC" c_CasADi__Function__hessian_TIC_TIC
+  :: Ptr Function' -> IO (Ptr Function')
+casADi__Function__hessian''
+  :: Function -> IO Function
+casADi__Function__hessian'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__hessian_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+function_hessian'' :: FunctionClass a => a -> IO Function
+function_hessian'' x = casADi__Function__hessian'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian_TIC_TIC_TIC" c_CasADi__Function__hessian_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> IO (Ptr Function')
+casADi__Function__hessian'''
+  :: Function -> String -> Int -> IO Function
+casADi__Function__hessian''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__hessian_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_hessian''' :: FunctionClass a => a -> String -> Int -> IO Function
+function_hessian''' x = casADi__Function__hessian''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian_TIC_TIC_TIC_TIC" c_CasADi__Function__hessian_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__hessian''''
+  :: Function -> String -> IO Function
+casADi__Function__hessian'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__hessian_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_hessian'''' :: FunctionClass a => a -> String -> IO Function
+function_hessian'''' x = casADi__Function__hessian'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__hessian_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__hessian'''''
+  :: Function -> Int -> String -> IO Function
+casADi__Function__hessian''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__hessian_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_hessian''''' :: FunctionClass a => a -> Int -> String -> IO Function
+function_hessian''''' x = casADi__Function__hessian''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__hessian_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__hessian_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr Function')
+casADi__Function__hessian''''''
+  :: Function -> String -> String -> IO Function
+casADi__Function__hessian'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__hessian_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_hessian'''''' :: FunctionClass a => a -> String -> String -> IO Function
+function_hessian'''''' x = casADi__Function__hessian'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__fullJacobian" c_CasADi__Function__fullJacobian
+  :: Ptr Function' -> IO (Ptr Function')
+casADi__Function__fullJacobian
+  :: Function -> IO Function
+casADi__Function__fullJacobian x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__fullJacobian x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a Jacobian function of all the inputs elements with respect to all
+>the output elements).
+-}
+function_fullJacobian :: FunctionClass a => a -> IO Function
+function_fullJacobian x = casADi__Function__fullJacobian (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setFullJacobian" c_CasADi__Function__setFullJacobian
+  :: Ptr Function' -> Ptr Function' -> IO ()
+casADi__Function__setFullJacobian
+  :: Function -> Function -> IO ()
+casADi__Function__setFullJacobian x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__setFullJacobian x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the Jacobian of all the input nonzeros with respect to all output
+>nonzeros NOTE: Does not take ownership, only weak references to the Jacobian
+>are kept internally
+-}
+function_setFullJacobian :: FunctionClass a => a -> Function -> IO ()
+function_setFullJacobian x = casADi__Function__setFullJacobian (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call" c_CasADi__Function__call
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> CInt -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
+casADi__Function__call
+  :: Function -> Vector DMatrix -> Bool -> Bool -> IO (Vector DMatrix)
+casADi__Function__call x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__call x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::vector<DMatrix> CasADi::Function::call(const std::vector< DMatrix > &arg, bool always_inline=false, bool never_inline=false)
+>
+>>  std::vector<SX> CasADi::Function::call(const std::vector< SX > &arg, bool always_inline=false, bool never_inline=false)
+>
+>>  std::vector<MX> CasADi::Function::call(const std::vector< MX > &arg, bool always_inline=false, bool never_inline=false)
+>------------------------------------------------------------------------
+>
+>Evaluate the function symbolically or numerically.
+>
+>>  std::vector<std::vector<MX> > CasADi::Function::call(const std::vector< std::vector< MX > > &arg, const Dictionary &paropt=Dictionary())
+>
+>>  void CasADi::Function::call(const MXVector &arg, MXVector &output_res, const MXVectorVector &fseed, MXVectorVector &output_fsens, const MXVectorVector &aseed, MXVectorVector &output_asens)
+>
+>>  std::vector<MX> CasADi::Function::call(const MX &arg)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+-}
+function_call :: FunctionClass a => a -> Vector DMatrix -> Bool -> Bool -> IO (Vector DMatrix)
+function_call x = casADi__Function__call (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC" c_CasADi__Function__call_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
+casADi__Function__call'
+  :: Function -> Vector DMatrix -> Bool -> IO (Vector DMatrix)
+casADi__Function__call' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__call_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_call' :: FunctionClass a => a -> Vector DMatrix -> Bool -> IO (Vector DMatrix)
+function_call' x = casADi__Function__call' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC" c_CasADi__Function__call_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr (CppVec (Ptr DMatrix')))
+casADi__Function__call''
+  :: Function -> Vector DMatrix -> IO (Vector DMatrix)
+casADi__Function__call'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__call_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_call'' :: FunctionClass a => a -> Vector DMatrix -> IO (Vector DMatrix)
+function_call'' x = casADi__Function__call'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC_TIC" c_CasADi__Function__call_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> CInt -> CInt -> IO (Ptr (CppVec (Ptr SX')))
+casADi__Function__call'''
+  :: Function -> Vector SX -> Bool -> Bool -> IO (Vector SX)
+casADi__Function__call''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__call_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_call''' :: FunctionClass a => a -> Vector SX -> Bool -> Bool -> IO (Vector SX)
+function_call''' x = casADi__Function__call''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC_TIC_TIC" c_CasADi__Function__call_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> CInt -> IO (Ptr (CppVec (Ptr SX')))
+casADi__Function__call''''
+  :: Function -> Vector SX -> Bool -> IO (Vector SX)
+casADi__Function__call'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__call_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_call'''' :: FunctionClass a => a -> Vector SX -> Bool -> IO (Vector SX)
+function_call'''' x = casADi__Function__call'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> IO (Ptr (CppVec (Ptr SX')))
+casADi__Function__call'''''
+  :: Function -> Vector SX -> IO (Vector SX)
+casADi__Function__call''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_call''''' :: FunctionClass a => a -> Vector SX -> IO (Vector SX)
+function_call''''' x = casADi__Function__call''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> CInt -> CInt -> IO (Ptr (CppVec (Ptr MX')))
+casADi__Function__call''''''
+  :: Function -> Vector MX -> Bool -> Bool -> IO (Vector MX)
+casADi__Function__call'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_call'''''' :: FunctionClass a => a -> Vector MX -> Bool -> Bool -> IO (Vector MX)
+function_call'''''' x = casADi__Function__call'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> CInt -> IO (Ptr (CppVec (Ptr MX')))
+casADi__Function__call'''''''
+  :: Function -> Vector MX -> Bool -> IO (Vector MX)
+casADi__Function__call''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_call''''''' :: FunctionClass a => a -> Vector MX -> Bool -> IO (Vector MX)
+function_call''''''' x = casADi__Function__call''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+casADi__Function__call''''''''
+  :: Function -> Vector MX -> IO (Vector MX)
+casADi__Function__call'''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__call_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_call'''''''' :: FunctionClass a => a -> Vector MX -> IO (Vector MX)
+function_call'''''''' x = casADi__Function__call'''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__operator_call" c_CasADi__Function__operator_call
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr (CppVec (Ptr DMatrix')))
+casADi__Function__operator_call
+  :: Function -> Vector DMatrix -> IO (Vector DMatrix)
+casADi__Function__operator_call x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__operator_call x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_operator_call :: FunctionClass a => a -> Vector DMatrix -> IO (Vector DMatrix)
+function_operator_call x = casADi__Function__operator_call (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__operator_call_TIC" c_CasADi__Function__operator_call_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> IO (Ptr (CppVec (Ptr SX')))
+casADi__Function__operator_call'
+  :: Function -> Vector SX -> IO (Vector SX)
+casADi__Function__operator_call' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__operator_call_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_operator_call' :: FunctionClass a => a -> Vector SX -> IO (Vector SX)
+function_operator_call' x = casADi__Function__operator_call' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__operator_call_TIC_TIC" c_CasADi__Function__operator_call_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+casADi__Function__operator_call''
+  :: Function -> Vector MX -> IO (Vector MX)
+casADi__Function__operator_call'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__operator_call_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_operator_call'' :: FunctionClass a => a -> Vector MX -> IO (Vector MX)
+function_operator_call'' x = casADi__Function__operator_call'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative" c_CasADi__Function__callDerivative
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> Ptr (CppVec (Ptr DMatrix')) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> CInt -> CInt -> IO ()
+casADi__Function__callDerivative
+  :: Function -> Vector DMatrix -> Vector DMatrix -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Bool -> Bool -> IO ()
+casADi__Function__callDerivative x0 x1 x2 x3 x4 x5 x6 x7 x8 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  c_CasADi__Function__callDerivative x0' x1' x2' x3' x4' x5' x6' x7' x8' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Evaluate the function symbolically or numerically with directional
+>derivatives The first two arguments are the nondifferentiated inputs and
+>results of the evaluation, the next two arguments are a set of forward
+>directional seeds and the resulting forward directional derivatives, the
+>length of the vector being the number of forward directions. The next two
+>arguments are a set of adjoint directional seeds and the resulting adjoint
+>directional derivatives, the length of the vector being the number of
+>adjoint directions.
+-}
+function_callDerivative :: FunctionClass a => a -> Vector DMatrix -> Vector DMatrix -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Bool -> Bool -> IO ()
+function_callDerivative x = casADi__Function__callDerivative (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC" c_CasADi__Function__callDerivative_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> Ptr (CppVec (Ptr DMatrix')) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> CInt -> IO ()
+casADi__Function__callDerivative'
+  :: Function -> Vector DMatrix -> Vector DMatrix -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Bool -> IO ()
+casADi__Function__callDerivative' x0 x1 x2 x3 x4 x5 x6 x7 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  c_CasADi__Function__callDerivative_TIC x0' x1' x2' x3' x4' x5' x6' x7' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative' :: FunctionClass a => a -> Vector DMatrix -> Vector DMatrix -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Bool -> IO ()
+function_callDerivative' x = casADi__Function__callDerivative' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr DMatrix')) -> Ptr (CppVec (Ptr DMatrix')) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> IO ()
+casADi__Function__callDerivative''
+  :: Function -> Vector DMatrix -> Vector DMatrix -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> IO ()
+casADi__Function__callDerivative'' x0 x1 x2 x3 x4 x5 x6 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  c_CasADi__Function__callDerivative_TIC_TIC x0' x1' x2' x3' x4' x5' x6' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative'' :: FunctionClass a => a -> Vector DMatrix -> Vector DMatrix -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> Vector (Vector DMatrix) -> IO ()
+function_callDerivative'' x = casADi__Function__callDerivative'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> CInt -> CInt -> IO ()
+casADi__Function__callDerivative'''
+  :: Function -> Vector SX -> Vector SX -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Bool -> Bool -> IO ()
+casADi__Function__callDerivative''' x0 x1 x2 x3 x4 x5 x6 x7 x8 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  c_CasADi__Function__callDerivative_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative''' :: FunctionClass a => a -> Vector SX -> Vector SX -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Bool -> Bool -> IO ()
+function_callDerivative''' x = casADi__Function__callDerivative''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> CInt -> IO ()
+casADi__Function__callDerivative''''
+  :: Function -> Vector SX -> Vector SX -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Bool -> IO ()
+casADi__Function__callDerivative'''' x0 x1 x2 x3 x4 x5 x6 x7 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative'''' :: FunctionClass a => a -> Vector SX -> Vector SX -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Bool -> IO ()
+function_callDerivative'''' x = casADi__Function__callDerivative'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> IO ()
+casADi__Function__callDerivative'''''
+  :: Function -> Vector SX -> Vector SX -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> IO ()
+casADi__Function__callDerivative''''' x0 x1 x2 x3 x4 x5 x6 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative''''' :: FunctionClass a => a -> Vector SX -> Vector SX -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> Vector (Vector SX) -> IO ()
+function_callDerivative''''' x = casADi__Function__callDerivative''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> CInt -> CInt -> IO ()
+casADi__Function__callDerivative''''''
+  :: Function -> Vector MX -> Vector MX -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Bool -> Bool -> IO ()
+casADi__Function__callDerivative'''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative'''''' :: FunctionClass a => a -> Vector MX -> Vector MX -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Bool -> Bool -> IO ()
+function_callDerivative'''''' x = casADi__Function__callDerivative'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> CInt -> IO ()
+casADi__Function__callDerivative'''''''
+  :: Function -> Vector MX -> Vector MX -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Bool -> IO ()
+casADi__Function__callDerivative''''''' x0 x1 x2 x3 x4 x5 x6 x7 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative''''''' :: FunctionClass a => a -> Vector MX -> Vector MX -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Bool -> IO ()
+function_callDerivative''''''' x = casADi__Function__callDerivative''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> IO ()
+casADi__Function__callDerivative''''''''
+  :: Function -> Vector MX -> Vector MX -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> IO ()
+casADi__Function__callDerivative'''''''' x0 x1 x2 x3 x4 x5 x6 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  c_CasADi__Function__callDerivative_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' >>= wrapReturn
+
+-- classy wrapper
+function_callDerivative'''''''' :: FunctionClass a => a -> Vector MX -> Vector MX -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> Vector (Vector MX) -> IO ()
+function_callDerivative'''''''' x = casADi__Function__callDerivative'''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__callParallel" c_CasADi__Function__callParallel
+  :: Ptr Function' -> Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+casADi__Function__callParallel
+  :: Function -> Vector (Vector MX) -> IO (Vector (Vector MX))
+casADi__Function__callParallel x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__callParallel x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Evaluate symbolically in parallel (matrix graph) paropt: Set of options to
+>be passed to the Parallelizer.
+-}
+function_callParallel :: FunctionClass a => a -> Vector (Vector MX) -> IO (Vector (Vector MX))
+function_callParallel x = casADi__Function__callParallel (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__derivative" c_CasADi__Function__derivative
+  :: Ptr Function' -> CInt -> CInt -> IO (Ptr Function')
+casADi__Function__derivative
+  :: Function -> Int -> Int -> IO Function
+casADi__Function__derivative x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__derivative x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get a function that calculates nfwd forward derivatives and nadj adjoint
+>derivatives.
+>
+>Returns a function with (1+nfwd)*n_in+nadj*n_out inputs and (1+nfwd)*n_out +
+>nadj*n_in outputs. The first n_in inputs corresponds to nondifferentiated
+>inputs. The next nfwd*n_in inputs corresponds to forward seeds, one
+>direction at a time and the last nadj*n_out inputs corresponds to adjoint
+>seeds, one direction at a time. The first n_out outputs corresponds to
+>nondifferentiated outputs. The next nfwd*n_out outputs corresponds to
+>forward sensitivities, one direction at a time and the last nadj*n_in
+>outputs corresponds to adjoint sensitivties, one direction at a time.
+>
+>(n_in = getNumInputs(), n_out = getNumOutputs())
+>
+>The functions returned are cached, meaning that if called multiple timed
+>with the same value, then multiple references to the same function will be
+>returned.
+-}
+function_derivative :: FunctionClass a => a -> Int -> Int -> IO Function
+function_derivative x = casADi__Function__derivative (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setDerivative" c_CasADi__Function__setDerivative
+  :: Ptr Function' -> Ptr Function' -> CInt -> CInt -> IO ()
+casADi__Function__setDerivative
+  :: Function -> Function -> Int -> Int -> IO ()
+casADi__Function__setDerivative x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__setDerivative x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set a function that calculates nfwd forward dedrivatives and nadj adjoint
+>derivatives NOTE: Does not take ownership, only weak references to the
+>derivatives are kept internally
+-}
+function_setDerivative :: FunctionClass a => a -> Function -> Int -> Int -> IO ()
+function_setDerivative x = casADi__Function__setDerivative (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity" c_CasADi__Function__jacSparsity
+  :: Ptr Function' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity
+  :: Function -> Int -> Int -> Bool -> Bool -> IO Sparsity
+casADi__Function__jacSparsity x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacSparsity x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get, if necessary generate, the sparsity of a Jacobian block.
+-}
+function_jacSparsity :: FunctionClass a => a -> Int -> Int -> Bool -> Bool -> IO Sparsity
+function_jacSparsity x = casADi__Function__jacSparsity (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC" c_CasADi__Function__jacSparsity_TIC
+  :: Ptr Function' -> CInt -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'
+  :: Function -> Int -> Int -> Bool -> IO Sparsity
+casADi__Function__jacSparsity' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacSparsity_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity' :: FunctionClass a => a -> Int -> Int -> Bool -> IO Sparsity
+function_jacSparsity' x = casADi__Function__jacSparsity' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC
+  :: Ptr Function' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''
+  :: Function -> Int -> Int -> IO Sparsity
+casADi__Function__jacSparsity'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'' :: FunctionClass a => a -> Int -> Int -> IO Sparsity
+function_jacSparsity'' x = casADi__Function__jacSparsity'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'''
+  :: Function -> Int -> IO Sparsity
+casADi__Function__jacSparsity''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity''' :: FunctionClass a => a -> Int -> IO Sparsity
+function_jacSparsity''' x = casADi__Function__jacSparsity''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''''
+  :: Function -> IO Sparsity
+casADi__Function__jacSparsity'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'''' :: FunctionClass a => a -> IO Sparsity
+function_jacSparsity'''' x = casADi__Function__jacSparsity'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'''''
+  :: Function -> String -> Int -> Bool -> Bool -> IO Sparsity
+casADi__Function__jacSparsity''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity''''' :: FunctionClass a => a -> String -> Int -> Bool -> Bool -> IO Sparsity
+function_jacSparsity''''' x = casADi__Function__jacSparsity''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''''''
+  :: Function -> String -> Int -> Bool -> IO Sparsity
+casADi__Function__jacSparsity'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'''''' :: FunctionClass a => a -> String -> Int -> Bool -> IO Sparsity
+function_jacSparsity'''''' x = casADi__Function__jacSparsity'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'''''''
+  :: Function -> String -> Int -> IO Sparsity
+casADi__Function__jacSparsity''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity''''''' :: FunctionClass a => a -> String -> Int -> IO Sparsity
+function_jacSparsity''''''' x = casADi__Function__jacSparsity''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''''''''
+  :: Function -> String -> IO Sparsity
+casADi__Function__jacSparsity'''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'''''''' :: FunctionClass a => a -> String -> IO Sparsity
+function_jacSparsity'''''''' x = casADi__Function__jacSparsity'''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'''''''''
+  :: Function -> Int -> String -> Bool -> Bool -> IO Sparsity
+casADi__Function__jacSparsity''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity''''''''' :: FunctionClass a => a -> Int -> String -> Bool -> Bool -> IO Sparsity
+function_jacSparsity''''''''' x = casADi__Function__jacSparsity''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''''''''''
+  :: Function -> Int -> String -> Bool -> IO Sparsity
+casADi__Function__jacSparsity'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'''''''''' :: FunctionClass a => a -> Int -> String -> Bool -> IO Sparsity
+function_jacSparsity'''''''''' x = casADi__Function__jacSparsity'''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> CInt -> Ptr StdString' -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'''''''''''
+  :: Function -> Int -> String -> IO Sparsity
+casADi__Function__jacSparsity''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity''''''''''' :: FunctionClass a => a -> Int -> String -> IO Sparsity
+function_jacSparsity''''''''''' x = casADi__Function__jacSparsity''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''''''''''''
+  :: Function -> String -> String -> Bool -> Bool -> IO Sparsity
+casADi__Function__jacSparsity'''''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'''''''''''' :: FunctionClass a => a -> String -> String -> Bool -> Bool -> IO Sparsity
+function_jacSparsity'''''''''''' x = casADi__Function__jacSparsity'''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> CInt -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity'''''''''''''
+  :: Function -> String -> String -> Bool -> IO Sparsity
+casADi__Function__jacSparsity''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity''''''''''''' :: FunctionClass a => a -> String -> String -> Bool -> IO Sparsity
+function_jacSparsity''''''''''''' x = casADi__Function__jacSparsity''''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr Sparsity')
+casADi__Function__jacSparsity''''''''''''''
+  :: Function -> String -> String -> IO Sparsity
+casADi__Function__jacSparsity'''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Function__jacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+function_jacSparsity'''''''''''''' :: FunctionClass a => a -> String -> String -> IO Sparsity
+function_jacSparsity'''''''''''''' x = casADi__Function__jacSparsity'''''''''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity" c_CasADi__Function__setJacSparsity
+  :: Ptr Function' -> Ptr Sparsity' -> CInt -> CInt -> CInt -> IO ()
+casADi__Function__setJacSparsity
+  :: Function -> Sparsity -> Int -> Int -> Bool -> IO ()
+casADi__Function__setJacSparsity x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__setJacSparsity x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate the sparsity of a Jacobian block.
+-}
+function_setJacSparsity :: FunctionClass a => a -> Sparsity -> Int -> Int -> Bool -> IO ()
+function_setJacSparsity x = casADi__Function__setJacSparsity (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC" c_CasADi__Function__setJacSparsity_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> CInt -> CInt -> IO ()
+casADi__Function__setJacSparsity'
+  :: Function -> Sparsity -> Int -> Int -> IO ()
+casADi__Function__setJacSparsity' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__setJacSparsity_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity' :: FunctionClass a => a -> Sparsity -> Int -> Int -> IO ()
+function_setJacSparsity' x = casADi__Function__setJacSparsity' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC_TIC" c_CasADi__Function__setJacSparsity_TIC_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> Ptr StdString' -> CInt -> CInt -> IO ()
+casADi__Function__setJacSparsity''
+  :: Function -> Sparsity -> String -> Int -> Bool -> IO ()
+casADi__Function__setJacSparsity'' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__setJacSparsity_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity'' :: FunctionClass a => a -> Sparsity -> String -> Int -> Bool -> IO ()
+function_setJacSparsity'' x = casADi__Function__setJacSparsity'' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC_TIC_TIC" c_CasADi__Function__setJacSparsity_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> Ptr StdString' -> CInt -> IO ()
+casADi__Function__setJacSparsity'''
+  :: Function -> Sparsity -> String -> Int -> IO ()
+casADi__Function__setJacSparsity''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__setJacSparsity_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity''' :: FunctionClass a => a -> Sparsity -> String -> Int -> IO ()
+function_setJacSparsity''' x = casADi__Function__setJacSparsity''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC" c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> CInt -> Ptr StdString' -> CInt -> IO ()
+casADi__Function__setJacSparsity''''
+  :: Function -> Sparsity -> Int -> String -> Bool -> IO ()
+casADi__Function__setJacSparsity'''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity'''' :: FunctionClass a => a -> Sparsity -> Int -> String -> Bool -> IO ()
+function_setJacSparsity'''' x = casADi__Function__setJacSparsity'''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> CInt -> Ptr StdString' -> IO ()
+casADi__Function__setJacSparsity'''''
+  :: Function -> Sparsity -> Int -> String -> IO ()
+casADi__Function__setJacSparsity''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity''''' :: FunctionClass a => a -> Sparsity -> Int -> String -> IO ()
+function_setJacSparsity''''' x = casADi__Function__setJacSparsity''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> Ptr StdString' -> Ptr StdString' -> CInt -> IO ()
+casADi__Function__setJacSparsity''''''
+  :: Function -> Sparsity -> String -> String -> Bool -> IO ()
+casADi__Function__setJacSparsity'''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity'''''' :: FunctionClass a => a -> Sparsity -> String -> String -> Bool -> IO ()
+function_setJacSparsity'''''' x = casADi__Function__setJacSparsity'''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> Ptr Sparsity' -> Ptr StdString' -> Ptr StdString' -> IO ()
+casADi__Function__setJacSparsity'''''''
+  :: Function -> Sparsity -> String -> String -> IO ()
+casADi__Function__setJacSparsity''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Function__setJacSparsity_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+function_setJacSparsity''''''' :: FunctionClass a => a -> Sparsity -> String -> String -> IO ()
+function_setJacSparsity''''''' x = casADi__Function__setJacSparsity''''''' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__generateCode" c_CasADi__Function__generateCode
+  :: Ptr Function' -> Ptr StdString' -> IO ()
+casADi__Function__generateCode
+  :: Function -> String -> IO ()
+casADi__Function__generateCode x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__generateCode x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Function::generateCode(const std::string &filename)
+>------------------------------------------------------------------------
+>
+>Export / Generate C code for the function.
+>
+>>  std::string CasADi::Function::generateCode()
+>
+>>  void CasADi::Function::generateCode(std::ostream &filename)
+>------------------------------------------------------------------------
+>
+>Generate C code for the function.
+-}
+function_generateCode :: FunctionClass a => a -> String -> IO ()
+function_generateCode x = casADi__Function__generateCode (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__generateCode_TIC" c_CasADi__Function__generateCode_TIC
+  :: Ptr Function' -> IO (Ptr StdString')
+casADi__Function__generateCode'
+  :: Function -> IO String
+casADi__Function__generateCode' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__generateCode_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+function_generateCode' :: FunctionClass a => a -> IO String
+function_generateCode' x = casADi__Function__generateCode' (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__checkNode" c_CasADi__Function__checkNode
+  :: Ptr Function' -> IO CInt
+casADi__Function__checkNode
+  :: Function -> IO Bool
+casADi__Function__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>node is pointing to the right type of object.
+-}
+function_checkNode :: FunctionClass a => a -> IO Bool
+function_checkNode x = casADi__Function__checkNode (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__getStat" c_CasADi__Function__getStat
+  :: Ptr Function' -> Ptr StdString' -> IO (Ptr GenericType')
+casADi__Function__getStat
+  :: Function -> String -> IO GenericType
+casADi__Function__getStat x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__getStat x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get a single statistic obtained at the end of the last evaluate call.
+-}
+function_getStat :: FunctionClass a => a -> String -> IO GenericType
+function_getStat x = casADi__Function__getStat (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__symbolicInput" c_CasADi__Function__symbolicInput
+  :: Ptr Function' -> IO (Ptr (CppVec (Ptr MX')))
+casADi__Function__symbolicInput
+  :: Function -> IO (Vector MX)
+casADi__Function__symbolicInput x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__symbolicInput x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get a vector of symbolic variables with the same dimensions as the inputs.
+>
+>There is no guarantee that consecutive calls return identical objects
+-}
+function_symbolicInput :: FunctionClass a => a -> IO (Vector MX)
+function_symbolicInput x = casADi__Function__symbolicInput (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__symbolicInputSX" c_CasADi__Function__symbolicInputSX
+  :: Ptr Function' -> IO (Ptr (CppVec (Ptr SX')))
+casADi__Function__symbolicInputSX
+  :: Function -> IO (Vector SX)
+casADi__Function__symbolicInputSX x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__symbolicInputSX x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get a vector of symbolic variables with the same dimensions as the inputs,
+>SX graph.
+>
+>There is no guarantee that consecutive calls return identical objects
+-}
+function_symbolicInputSX :: FunctionClass a => a -> IO (Vector SX)
+function_symbolicInputSX x = casADi__Function__symbolicInputSX (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__spCanEvaluate" c_CasADi__Function__spCanEvaluate
+  :: Ptr Function' -> CInt -> IO CInt
+casADi__Function__spCanEvaluate
+  :: Function -> Bool -> IO Bool
+casADi__Function__spCanEvaluate x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__spCanEvaluate x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Is the
+>class able to propate seeds through the algorithm? (for usage, see the
+>example propagating_sparsity.cpp)
+-}
+function_spCanEvaluate :: FunctionClass a => a -> Bool -> IO Bool
+function_spCanEvaluate x = casADi__Function__spCanEvaluate (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__spInit" c_CasADi__Function__spInit
+  :: Ptr Function' -> CInt -> IO ()
+casADi__Function__spInit
+  :: Function -> Bool -> IO ()
+casADi__Function__spInit x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__spInit x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Reset the
+>sparsity propagation (for usage, see the example propagating_sparsity.cpp)
+-}
+function_spInit :: FunctionClass a => a -> Bool -> IO ()
+function_spInit x = casADi__Function__spInit (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__spEvaluate" c_CasADi__Function__spEvaluate
+  :: Ptr Function' -> CInt -> IO ()
+casADi__Function__spEvaluate
+  :: Function -> Bool -> IO ()
+casADi__Function__spEvaluate x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__spEvaluate x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Propagate
+>the sparsity pattern through a set of directional derivatives forward or
+>backward (for usage, see the example propagating_sparsity.cpp)
+-}
+function_spEvaluate :: FunctionClass a => a -> Bool -> IO ()
+function_spEvaluate x = casADi__Function__spEvaluate (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__addMonitor" c_CasADi__Function__addMonitor
+  :: Ptr Function' -> Ptr StdString' -> IO ()
+casADi__Function__addMonitor
+  :: Function -> String -> IO ()
+casADi__Function__addMonitor x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__addMonitor x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Add modules to be monitored.
+-}
+function_addMonitor :: FunctionClass a => a -> String -> IO ()
+function_addMonitor x = casADi__Function__addMonitor (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__removeMonitor" c_CasADi__Function__removeMonitor
+  :: Ptr Function' -> Ptr StdString' -> IO ()
+casADi__Function__removeMonitor
+  :: Function -> String -> IO ()
+casADi__Function__removeMonitor x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Function__removeMonitor x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Remove modules to be monitored.
+-}
+function_removeMonitor :: FunctionClass a => a -> String -> IO ()
+function_removeMonitor x = casADi__Function__removeMonitor (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__checkInputs" c_CasADi__Function__checkInputs
+  :: Ptr Function' -> IO ()
+casADi__Function__checkInputs
+  :: Function -> IO ()
+casADi__Function__checkInputs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Function__checkInputs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>the numerical values of the supplied bounds make sense.
+-}
+function_checkInputs :: FunctionClass a => a -> IO ()
+function_checkInputs x = casADi__Function__checkInputs (castFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Function__Function" c_CasADi__Function__Function
+  :: IO (Ptr Function')
+casADi__Function__Function
+  :: IO Function
+casADi__Function__Function  =
+  c_CasADi__Function__Function  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>default constructor
+-}
+function :: IO Function
+function = casADi__Function__Function
+
diff --git a/Casadi/Wrappers/Classes/Functor.hs b/Casadi/Wrappers/Classes/Functor.hs
deleted file mode 100644
--- a/Casadi/Wrappers/Classes/Functor.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# Language ForeignFunctionInterface #-}
-{-# Language FlexibleInstances #-}
-{-# Language MultiParamTypeClasses #-}
-
-module Casadi.Wrappers.Classes.Functor
-       (
-         Functor,
-         FunctorClass(..),
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.Classes.PrintableObject
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-instance Show Functor where
-  show = unsafePerformIO . printableObject_getDescription
diff --git a/Casadi/Wrappers/Classes/GenDMatrix.hs b/Casadi/Wrappers/Classes/GenDMatrix.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/GenDMatrix.hs
@@ -0,0 +1,746 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.GenDMatrix
+       (
+         GenDMatrix,
+         GenDMatrixClass(..),
+         genDMatrix_dimString,
+         genDMatrix_isDense,
+         genDMatrix_isEmpty,
+         genDMatrix_isEmpty',
+         genDMatrix_isScalar,
+         genDMatrix_isScalar',
+         genDMatrix_isSquare,
+         genDMatrix_isTril,
+         genDMatrix_isTriu,
+         genDMatrix_isVector,
+         genDMatrix_mul_smart,
+         genDMatrix_numel,
+         genDMatrix_ones,
+         genDMatrix_ones',
+         genDMatrix_ones'',
+         genDMatrix_ones''',
+         genDMatrix_size,
+         genDMatrix_size',
+         genDMatrix_size1,
+         genDMatrix_size2,
+         genDMatrix_sizeD,
+         genDMatrix_sizeL,
+         genDMatrix_sizeU,
+         genDMatrix_sparse,
+         genDMatrix_sparse',
+         genDMatrix_sparse'',
+         genDMatrix_sparsityRef,
+         genDMatrix_sym,
+         genDMatrix_sym',
+         genDMatrix_sym'',
+         genDMatrix_sym''',
+         genDMatrix_sym'''',
+         genDMatrix_sym''''',
+         genDMatrix_sym'''''',
+         genDMatrix_sym''''''',
+         genDMatrix_zeros,
+         genDMatrix_zeros',
+         genDMatrix_zeros'',
+         genDMatrix_zeros''',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____size" c_CasADi__GenericMatrix_CasADi__Matrix_double____size
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____size
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____size x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____size x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  int CasADi::GenericMatrix< MatType >::size() const 
+>------------------------------------------------------------------------
+>
+>Get the number of (structural) non-zero elements.
+>
+>>  int CasADi::GenericMatrix< MatType >::size(SparsityType sp) const 
+>------------------------------------------------------------------------
+>
+>Get the number if non-zeros for a given sparsity pattern.
+-}
+genDMatrix_size :: GenDMatrixClass a => a -> IO Int
+genDMatrix_size x = casADi__GenericMatrix_CasADi__Matrix_double____size (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sizeL" c_CasADi__GenericMatrix_CasADi__Matrix_double____sizeL
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____sizeL
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____sizeL x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sizeL x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the lower triangular half.
+-}
+genDMatrix_sizeL :: GenDMatrixClass a => a -> IO Int
+genDMatrix_sizeL x = casADi__GenericMatrix_CasADi__Matrix_double____sizeL (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sizeU" c_CasADi__GenericMatrix_CasADi__Matrix_double____sizeU
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____sizeU
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____sizeU x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sizeU x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the upper triangular half.
+-}
+genDMatrix_sizeU :: GenDMatrixClass a => a -> IO Int
+genDMatrix_sizeU x = casADi__GenericMatrix_CasADi__Matrix_double____sizeU (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sizeD" c_CasADi__GenericMatrix_CasADi__Matrix_double____sizeD
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____sizeD
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____sizeD x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sizeD x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get get the number of non-zeros on the diagonal.
+-}
+genDMatrix_sizeD :: GenDMatrixClass a => a -> IO Int
+genDMatrix_sizeD x = casADi__GenericMatrix_CasADi__Matrix_double____sizeD (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____numel" c_CasADi__GenericMatrix_CasADi__Matrix_double____numel
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____numel
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____numel x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____numel x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of elements.
+-}
+genDMatrix_numel :: GenDMatrixClass a => a -> IO Int
+genDMatrix_numel x = casADi__GenericMatrix_CasADi__Matrix_double____numel (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____size1" c_CasADi__GenericMatrix_CasADi__Matrix_double____size1
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____size1
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____size1 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____size1 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the first dimension (i.e. number of rows)
+-}
+genDMatrix_size1 :: GenDMatrixClass a => a -> IO Int
+genDMatrix_size1 x = casADi__GenericMatrix_CasADi__Matrix_double____size1 (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____size2" c_CasADi__GenericMatrix_CasADi__Matrix_double____size2
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____size2
+  :: GenDMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____size2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____size2 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the second dimension (i.e. number of columns)
+-}
+genDMatrix_size2 :: GenDMatrixClass a => a -> IO Int
+genDMatrix_size2 x = casADi__GenericMatrix_CasADi__Matrix_double____size2 (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____size_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____size_TIC
+  :: Ptr GenDMatrix' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____size'
+  :: GenDMatrix -> SparsityType -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_double____size' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____size_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_size' :: GenDMatrixClass a => a -> SparsityType -> IO Int
+genDMatrix_size' x = casADi__GenericMatrix_CasADi__Matrix_double____size' (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____dimString" c_CasADi__GenericMatrix_CasADi__Matrix_double____dimString
+  :: Ptr GenDMatrix' -> IO (Ptr StdString')
+casADi__GenericMatrix_CasADi__Matrix_double____dimString
+  :: GenDMatrix -> IO String
+casADi__GenericMatrix_CasADi__Matrix_double____dimString x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____dimString x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get string representation of dimensions. The representation is (nrow x ncol
+>= numel | size)
+-}
+genDMatrix_dimString :: GenDMatrixClass a => a -> IO String
+genDMatrix_dimString x = casADi__GenericMatrix_CasADi__Matrix_double____dimString (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isEmpty" c_CasADi__GenericMatrix_CasADi__Matrix_double____isEmpty
+  :: Ptr GenDMatrix' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isEmpty
+  :: GenDMatrix -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isEmpty x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isEmpty x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is empty, i.e. if one of the dimensions is zero (or
+>optionally both dimensions)
+-}
+genDMatrix_isEmpty :: GenDMatrixClass a => a -> Bool -> IO Bool
+genDMatrix_isEmpty x = casADi__GenericMatrix_CasADi__Matrix_double____isEmpty (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isEmpty_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____isEmpty_TIC
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isEmpty'
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isEmpty' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isEmpty_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_isEmpty' :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isEmpty' x = casADi__GenericMatrix_CasADi__Matrix_double____isEmpty' (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isDense" c_CasADi__GenericMatrix_CasADi__Matrix_double____isDense
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isDense
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isDense x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isDense x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is dense.
+-}
+genDMatrix_isDense :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isDense x = casADi__GenericMatrix_CasADi__Matrix_double____isDense (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isScalar" c_CasADi__GenericMatrix_CasADi__Matrix_double____isScalar
+  :: Ptr GenDMatrix' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isScalar
+  :: GenDMatrix -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isScalar x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isScalar x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is scalar.
+-}
+genDMatrix_isScalar :: GenDMatrixClass a => a -> Bool -> IO Bool
+genDMatrix_isScalar x = casADi__GenericMatrix_CasADi__Matrix_double____isScalar (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isScalar_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____isScalar_TIC
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isScalar'
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_isScalar' :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isScalar' x = casADi__GenericMatrix_CasADi__Matrix_double____isScalar' (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isSquare" c_CasADi__GenericMatrix_CasADi__Matrix_double____isSquare
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isSquare
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isSquare x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isSquare x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is square.
+-}
+genDMatrix_isSquare :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isSquare x = casADi__GenericMatrix_CasADi__Matrix_double____isSquare (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isVector" c_CasADi__GenericMatrix_CasADi__Matrix_double____isVector
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isVector
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isVector x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isVector x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is a vector (i.e. size2()==1)
+-}
+genDMatrix_isVector :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isVector x = casADi__GenericMatrix_CasADi__Matrix_double____isVector (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isTriu" c_CasADi__GenericMatrix_CasADi__Matrix_double____isTriu
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isTriu
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isTriu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isTriu x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is upper triangular.
+-}
+genDMatrix_isTriu :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isTriu x = casADi__GenericMatrix_CasADi__Matrix_double____isTriu (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____isTril" c_CasADi__GenericMatrix_CasADi__Matrix_double____isTril
+  :: Ptr GenDMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_double____isTril
+  :: GenDMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_double____isTril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____isTril x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is lower triangular.
+-}
+genDMatrix_isTril :: GenDMatrixClass a => a -> IO Bool
+genDMatrix_isTril x = casADi__GenericMatrix_CasADi__Matrix_double____isTril (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sparsityRef" c_CasADi__GenericMatrix_CasADi__Matrix_double____sparsityRef
+  :: Ptr GenDMatrix' -> IO (Ptr Sparsity')
+casADi__GenericMatrix_CasADi__Matrix_double____sparsityRef
+  :: GenDMatrix -> IO Sparsity
+casADi__GenericMatrix_CasADi__Matrix_double____sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the sparsity, make a copy if there are multiple references to it.
+-}
+genDMatrix_sparsityRef :: GenDMatrixClass a => a -> IO Sparsity
+genDMatrix_sparsityRef x = casADi__GenericMatrix_CasADi__Matrix_double____sparsityRef (castGenDMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym
+  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sym
+  :: String -> Int -> Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sym x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow=1, int ncol=1)
+>------------------------------------------------------------------------
+>
+>Create an nrow-by-ncol symbolic primitive.
+>
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const std::pair< int, int > &rc)
+>------------------------------------------------------------------------
+>
+>Construct a symbolic primitive with given dimensions.
+>
+>>  MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp)
+>------------------------------------------------------------------------
+>
+>Create symbolic primitive with a given sparsity pattern.
+>
+>>  std::vector< MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with with matrices with symbolic primitives of
+>given sparsity.
+>
+>>  static std::vector<MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with nrow-by-ncol symbolic primitives.
+>
+>>  std::vector< std::vector< MatType > > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with symbolic primitives
+>with given sparsity.
+>
+>>  static std::vector<std::vector<MatType> > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with nrow-by-ncol
+>symbolic primitives.
+-}
+genDMatrix_sym :: String -> Int -> Int -> IO DMatrix
+genDMatrix_sym = casADi__GenericMatrix_CasADi__Matrix_double____sym
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC
+  :: Ptr StdString' -> CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sym'
+  :: String -> Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sym' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym' :: String -> Int -> IO DMatrix
+genDMatrix_sym' = casADi__GenericMatrix_CasADi__Matrix_double____sym'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC
+  :: Ptr StdString' -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sym''
+  :: String -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sym'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym'' :: String -> IO DMatrix
+genDMatrix_sym'' = casADi__GenericMatrix_CasADi__Matrix_double____sym''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sym'''
+  :: String -> Sparsity -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sym''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym''' :: String -> Sparsity -> IO DMatrix
+genDMatrix_sym''' = casADi__GenericMatrix_CasADi__Matrix_double____sym'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
+casADi__GenericMatrix_CasADi__Matrix_double____sym''''
+  :: String -> Sparsity -> Int -> IO (Vector DMatrix)
+casADi__GenericMatrix_CasADi__Matrix_double____sym'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym'''' :: String -> Sparsity -> Int -> IO (Vector DMatrix)
+genDMatrix_sym'''' = casADi__GenericMatrix_CasADi__Matrix_double____sym''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
+casADi__GenericMatrix_CasADi__Matrix_double____sym'''''
+  :: String -> Int -> Int -> Int -> IO (Vector DMatrix)
+casADi__GenericMatrix_CasADi__Matrix_double____sym''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym''''' :: String -> Int -> Int -> Int -> IO (Vector DMatrix)
+genDMatrix_sym''''' = casADi__GenericMatrix_CasADi__Matrix_double____sym'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
+casADi__GenericMatrix_CasADi__Matrix_double____sym''''''
+  :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector DMatrix))
+casADi__GenericMatrix_CasADi__Matrix_double____sym'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym'''''' :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector DMatrix))
+genDMatrix_sym'''''' = casADi__GenericMatrix_CasADi__Matrix_double____sym''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
+casADi__GenericMatrix_CasADi__Matrix_double____sym'''''''
+  :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector DMatrix))
+casADi__GenericMatrix_CasADi__Matrix_double____sym''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sym''''''' :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector DMatrix))
+genDMatrix_sym''''''' = casADi__GenericMatrix_CasADi__Matrix_double____sym'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sparse" c_CasADi__GenericMatrix_CasADi__Matrix_double____sparse
+  :: CInt -> CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sparse
+  :: Int -> Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sparse x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sparse x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a sparse matrix with all zeros
+-}
+genDMatrix_sparse :: Int -> Int -> IO DMatrix
+genDMatrix_sparse = casADi__GenericMatrix_CasADi__Matrix_double____sparse
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sparse_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sparse_TIC
+  :: CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sparse'
+  :: Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sparse' :: Int -> IO DMatrix
+genDMatrix_sparse' = casADi__GenericMatrix_CasADi__Matrix_double____sparse'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____sparse_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____sparse_TIC_TIC
+  :: IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____sparse''
+  :: IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____sparse''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____sparse_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_sparse'' :: IO DMatrix
+genDMatrix_sparse'' = casADi__GenericMatrix_CasADi__Matrix_double____sparse''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____zeros" c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros
+  :: CInt -> CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____zeros
+  :: Int -> Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____zeros x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>zero.
+-}
+genDMatrix_zeros :: Int -> Int -> IO DMatrix
+genDMatrix_zeros = casADi__GenericMatrix_CasADi__Matrix_double____zeros
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC
+  :: CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____zeros'
+  :: Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____zeros' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_zeros' :: Int -> IO DMatrix
+genDMatrix_zeros' = casADi__GenericMatrix_CasADi__Matrix_double____zeros'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC_TIC
+  :: IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____zeros''
+  :: IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____zeros''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_zeros'' :: IO DMatrix
+genDMatrix_zeros'' = casADi__GenericMatrix_CasADi__Matrix_double____zeros''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____zeros'''
+  :: Sparsity -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____zeros''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____zeros_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_zeros''' :: Sparsity -> IO DMatrix
+genDMatrix_zeros''' = casADi__GenericMatrix_CasADi__Matrix_double____zeros'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____ones" c_CasADi__GenericMatrix_CasADi__Matrix_double____ones
+  :: CInt -> CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____ones
+  :: Int -> Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____ones x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____ones x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>one.
+-}
+genDMatrix_ones :: Int -> Int -> IO DMatrix
+genDMatrix_ones = casADi__GenericMatrix_CasADi__Matrix_double____ones
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC
+  :: CInt -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____ones'
+  :: Int -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____ones' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_ones' :: Int -> IO DMatrix
+genDMatrix_ones' = casADi__GenericMatrix_CasADi__Matrix_double____ones'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC_TIC
+  :: IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____ones''
+  :: IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____ones''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_ones'' :: IO DMatrix
+genDMatrix_ones'' = casADi__GenericMatrix_CasADi__Matrix_double____ones''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____ones'''
+  :: Sparsity -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____ones''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____ones_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genDMatrix_ones''' :: Sparsity -> IO DMatrix
+genDMatrix_ones''' = casADi__GenericMatrix_CasADi__Matrix_double____ones'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_double____mul_smart" c_CasADi__GenericMatrix_CasADi__Matrix_double____mul_smart
+  :: Ptr GenDMatrix' -> Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+casADi__GenericMatrix_CasADi__Matrix_double____mul_smart
+  :: GenDMatrix -> DMatrix -> Sparsity -> IO DMatrix
+casADi__GenericMatrix_CasADi__Matrix_double____mul_smart x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_double____mul_smart x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix-matrix multiplication. Attempts to identify quick returns on matrix-
+>level and delegates to MatType::mul_full if no such quick returns are found.
+-}
+genDMatrix_mul_smart :: GenDMatrixClass a => a -> DMatrix -> Sparsity -> IO DMatrix
+genDMatrix_mul_smart x = casADi__GenericMatrix_CasADi__Matrix_double____mul_smart (castGenDMatrix x)
+
diff --git a/Casadi/Wrappers/Classes/GenIMatrix.hs b/Casadi/Wrappers/Classes/GenIMatrix.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/GenIMatrix.hs
@@ -0,0 +1,746 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.GenIMatrix
+       (
+         GenIMatrix,
+         GenIMatrixClass(..),
+         genIMatrix_dimString,
+         genIMatrix_isDense,
+         genIMatrix_isEmpty,
+         genIMatrix_isEmpty',
+         genIMatrix_isScalar,
+         genIMatrix_isScalar',
+         genIMatrix_isSquare,
+         genIMatrix_isTril,
+         genIMatrix_isTriu,
+         genIMatrix_isVector,
+         genIMatrix_mul_smart,
+         genIMatrix_numel,
+         genIMatrix_ones,
+         genIMatrix_ones',
+         genIMatrix_ones'',
+         genIMatrix_ones''',
+         genIMatrix_size,
+         genIMatrix_size',
+         genIMatrix_size1,
+         genIMatrix_size2,
+         genIMatrix_sizeD,
+         genIMatrix_sizeL,
+         genIMatrix_sizeU,
+         genIMatrix_sparse,
+         genIMatrix_sparse',
+         genIMatrix_sparse'',
+         genIMatrix_sparsityRef,
+         genIMatrix_sym,
+         genIMatrix_sym',
+         genIMatrix_sym'',
+         genIMatrix_sym''',
+         genIMatrix_sym'''',
+         genIMatrix_sym''''',
+         genIMatrix_sym'''''',
+         genIMatrix_sym''''''',
+         genIMatrix_zeros,
+         genIMatrix_zeros',
+         genIMatrix_zeros'',
+         genIMatrix_zeros''',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____size" c_CasADi__GenericMatrix_CasADi__Matrix_int____size
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____size
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____size x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____size x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  int CasADi::GenericMatrix< MatType >::size() const 
+>------------------------------------------------------------------------
+>
+>Get the number of (structural) non-zero elements.
+>
+>>  int CasADi::GenericMatrix< MatType >::size(SparsityType sp) const 
+>------------------------------------------------------------------------
+>
+>Get the number if non-zeros for a given sparsity pattern.
+-}
+genIMatrix_size :: GenIMatrixClass a => a -> IO Int
+genIMatrix_size x = casADi__GenericMatrix_CasADi__Matrix_int____size (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sizeL" c_CasADi__GenericMatrix_CasADi__Matrix_int____sizeL
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____sizeL
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____sizeL x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sizeL x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the lower triangular half.
+-}
+genIMatrix_sizeL :: GenIMatrixClass a => a -> IO Int
+genIMatrix_sizeL x = casADi__GenericMatrix_CasADi__Matrix_int____sizeL (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sizeU" c_CasADi__GenericMatrix_CasADi__Matrix_int____sizeU
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____sizeU
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____sizeU x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sizeU x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the upper triangular half.
+-}
+genIMatrix_sizeU :: GenIMatrixClass a => a -> IO Int
+genIMatrix_sizeU x = casADi__GenericMatrix_CasADi__Matrix_int____sizeU (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sizeD" c_CasADi__GenericMatrix_CasADi__Matrix_int____sizeD
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____sizeD
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____sizeD x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sizeD x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get get the number of non-zeros on the diagonal.
+-}
+genIMatrix_sizeD :: GenIMatrixClass a => a -> IO Int
+genIMatrix_sizeD x = casADi__GenericMatrix_CasADi__Matrix_int____sizeD (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____numel" c_CasADi__GenericMatrix_CasADi__Matrix_int____numel
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____numel
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____numel x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____numel x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of elements.
+-}
+genIMatrix_numel :: GenIMatrixClass a => a -> IO Int
+genIMatrix_numel x = casADi__GenericMatrix_CasADi__Matrix_int____numel (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____size1" c_CasADi__GenericMatrix_CasADi__Matrix_int____size1
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____size1
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____size1 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____size1 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the first dimension (i.e. number of rows)
+-}
+genIMatrix_size1 :: GenIMatrixClass a => a -> IO Int
+genIMatrix_size1 x = casADi__GenericMatrix_CasADi__Matrix_int____size1 (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____size2" c_CasADi__GenericMatrix_CasADi__Matrix_int____size2
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____size2
+  :: GenIMatrix -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____size2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____size2 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the second dimension (i.e. number of columns)
+-}
+genIMatrix_size2 :: GenIMatrixClass a => a -> IO Int
+genIMatrix_size2 x = casADi__GenericMatrix_CasADi__Matrix_int____size2 (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____size_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____size_TIC
+  :: Ptr GenIMatrix' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____size'
+  :: GenIMatrix -> SparsityType -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_int____size' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____size_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_size' :: GenIMatrixClass a => a -> SparsityType -> IO Int
+genIMatrix_size' x = casADi__GenericMatrix_CasADi__Matrix_int____size' (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____dimString" c_CasADi__GenericMatrix_CasADi__Matrix_int____dimString
+  :: Ptr GenIMatrix' -> IO (Ptr StdString')
+casADi__GenericMatrix_CasADi__Matrix_int____dimString
+  :: GenIMatrix -> IO String
+casADi__GenericMatrix_CasADi__Matrix_int____dimString x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____dimString x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get string representation of dimensions. The representation is (nrow x ncol
+>= numel | size)
+-}
+genIMatrix_dimString :: GenIMatrixClass a => a -> IO String
+genIMatrix_dimString x = casADi__GenericMatrix_CasADi__Matrix_int____dimString (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isEmpty" c_CasADi__GenericMatrix_CasADi__Matrix_int____isEmpty
+  :: Ptr GenIMatrix' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isEmpty
+  :: GenIMatrix -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isEmpty x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isEmpty x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is empty, i.e. if one of the dimensions is zero (or
+>optionally both dimensions)
+-}
+genIMatrix_isEmpty :: GenIMatrixClass a => a -> Bool -> IO Bool
+genIMatrix_isEmpty x = casADi__GenericMatrix_CasADi__Matrix_int____isEmpty (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isEmpty_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____isEmpty_TIC
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isEmpty'
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isEmpty' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isEmpty_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_isEmpty' :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isEmpty' x = casADi__GenericMatrix_CasADi__Matrix_int____isEmpty' (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isDense" c_CasADi__GenericMatrix_CasADi__Matrix_int____isDense
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isDense
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isDense x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isDense x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is dense.
+-}
+genIMatrix_isDense :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isDense x = casADi__GenericMatrix_CasADi__Matrix_int____isDense (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isScalar" c_CasADi__GenericMatrix_CasADi__Matrix_int____isScalar
+  :: Ptr GenIMatrix' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isScalar
+  :: GenIMatrix -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isScalar x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isScalar x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is scalar.
+-}
+genIMatrix_isScalar :: GenIMatrixClass a => a -> Bool -> IO Bool
+genIMatrix_isScalar x = casADi__GenericMatrix_CasADi__Matrix_int____isScalar (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isScalar_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____isScalar_TIC
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isScalar'
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_isScalar' :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isScalar' x = casADi__GenericMatrix_CasADi__Matrix_int____isScalar' (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isSquare" c_CasADi__GenericMatrix_CasADi__Matrix_int____isSquare
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isSquare
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isSquare x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isSquare x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is square.
+-}
+genIMatrix_isSquare :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isSquare x = casADi__GenericMatrix_CasADi__Matrix_int____isSquare (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isVector" c_CasADi__GenericMatrix_CasADi__Matrix_int____isVector
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isVector
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isVector x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isVector x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is a vector (i.e. size2()==1)
+-}
+genIMatrix_isVector :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isVector x = casADi__GenericMatrix_CasADi__Matrix_int____isVector (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isTriu" c_CasADi__GenericMatrix_CasADi__Matrix_int____isTriu
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isTriu
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isTriu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isTriu x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is upper triangular.
+-}
+genIMatrix_isTriu :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isTriu x = casADi__GenericMatrix_CasADi__Matrix_int____isTriu (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____isTril" c_CasADi__GenericMatrix_CasADi__Matrix_int____isTril
+  :: Ptr GenIMatrix' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_int____isTril
+  :: GenIMatrix -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_int____isTril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____isTril x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is lower triangular.
+-}
+genIMatrix_isTril :: GenIMatrixClass a => a -> IO Bool
+genIMatrix_isTril x = casADi__GenericMatrix_CasADi__Matrix_int____isTril (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sparsityRef" c_CasADi__GenericMatrix_CasADi__Matrix_int____sparsityRef
+  :: Ptr GenIMatrix' -> IO (Ptr Sparsity')
+casADi__GenericMatrix_CasADi__Matrix_int____sparsityRef
+  :: GenIMatrix -> IO Sparsity
+casADi__GenericMatrix_CasADi__Matrix_int____sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the sparsity, make a copy if there are multiple references to it.
+-}
+genIMatrix_sparsityRef :: GenIMatrixClass a => a -> IO Sparsity
+genIMatrix_sparsityRef x = casADi__GenericMatrix_CasADi__Matrix_int____sparsityRef (castGenIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym
+  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sym
+  :: String -> Int -> Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sym x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow=1, int ncol=1)
+>------------------------------------------------------------------------
+>
+>Create an nrow-by-ncol symbolic primitive.
+>
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const std::pair< int, int > &rc)
+>------------------------------------------------------------------------
+>
+>Construct a symbolic primitive with given dimensions.
+>
+>>  MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp)
+>------------------------------------------------------------------------
+>
+>Create symbolic primitive with a given sparsity pattern.
+>
+>>  std::vector< MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with with matrices with symbolic primitives of
+>given sparsity.
+>
+>>  static std::vector<MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with nrow-by-ncol symbolic primitives.
+>
+>>  std::vector< std::vector< MatType > > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with symbolic primitives
+>with given sparsity.
+>
+>>  static std::vector<std::vector<MatType> > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with nrow-by-ncol
+>symbolic primitives.
+-}
+genIMatrix_sym :: String -> Int -> Int -> IO IMatrix
+genIMatrix_sym = casADi__GenericMatrix_CasADi__Matrix_int____sym
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC
+  :: Ptr StdString' -> CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sym'
+  :: String -> Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sym' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym' :: String -> Int -> IO IMatrix
+genIMatrix_sym' = casADi__GenericMatrix_CasADi__Matrix_int____sym'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC
+  :: Ptr StdString' -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sym''
+  :: String -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sym'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym'' :: String -> IO IMatrix
+genIMatrix_sym'' = casADi__GenericMatrix_CasADi__Matrix_int____sym''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sym'''
+  :: String -> Sparsity -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sym''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym''' :: String -> Sparsity -> IO IMatrix
+genIMatrix_sym''' = casADi__GenericMatrix_CasADi__Matrix_int____sym'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> IO (Ptr (CppVec (Ptr IMatrix')))
+casADi__GenericMatrix_CasADi__Matrix_int____sym''''
+  :: String -> Sparsity -> Int -> IO (Vector IMatrix)
+casADi__GenericMatrix_CasADi__Matrix_int____sym'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym'''' :: String -> Sparsity -> Int -> IO (Vector IMatrix)
+genIMatrix_sym'''' = casADi__GenericMatrix_CasADi__Matrix_int____sym''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr IMatrix')))
+casADi__GenericMatrix_CasADi__Matrix_int____sym'''''
+  :: String -> Int -> Int -> Int -> IO (Vector IMatrix)
+casADi__GenericMatrix_CasADi__Matrix_int____sym''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym''''' :: String -> Int -> Int -> Int -> IO (Vector IMatrix)
+genIMatrix_sym''''' = casADi__GenericMatrix_CasADi__Matrix_int____sym'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))))
+casADi__GenericMatrix_CasADi__Matrix_int____sym''''''
+  :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector IMatrix))
+casADi__GenericMatrix_CasADi__Matrix_int____sym'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym'''''' :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector IMatrix))
+genIMatrix_sym'''''' = casADi__GenericMatrix_CasADi__Matrix_int____sym''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))))
+casADi__GenericMatrix_CasADi__Matrix_int____sym'''''''
+  :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector IMatrix))
+casADi__GenericMatrix_CasADi__Matrix_int____sym''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sym''''''' :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector IMatrix))
+genIMatrix_sym''''''' = casADi__GenericMatrix_CasADi__Matrix_int____sym'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sparse" c_CasADi__GenericMatrix_CasADi__Matrix_int____sparse
+  :: CInt -> CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sparse
+  :: Int -> Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sparse x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sparse x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a sparse matrix with all zeros
+-}
+genIMatrix_sparse :: Int -> Int -> IO IMatrix
+genIMatrix_sparse = casADi__GenericMatrix_CasADi__Matrix_int____sparse
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sparse_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sparse_TIC
+  :: CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sparse'
+  :: Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sparse' :: Int -> IO IMatrix
+genIMatrix_sparse' = casADi__GenericMatrix_CasADi__Matrix_int____sparse'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____sparse_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____sparse_TIC_TIC
+  :: IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____sparse''
+  :: IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____sparse''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____sparse_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_sparse'' :: IO IMatrix
+genIMatrix_sparse'' = casADi__GenericMatrix_CasADi__Matrix_int____sparse''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____zeros" c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros
+  :: CInt -> CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____zeros
+  :: Int -> Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____zeros x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>zero.
+-}
+genIMatrix_zeros :: Int -> Int -> IO IMatrix
+genIMatrix_zeros = casADi__GenericMatrix_CasADi__Matrix_int____zeros
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC
+  :: CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____zeros'
+  :: Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____zeros' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_zeros' :: Int -> IO IMatrix
+genIMatrix_zeros' = casADi__GenericMatrix_CasADi__Matrix_int____zeros'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC_TIC
+  :: IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____zeros''
+  :: IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____zeros''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_zeros'' :: IO IMatrix
+genIMatrix_zeros'' = casADi__GenericMatrix_CasADi__Matrix_int____zeros''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____zeros'''
+  :: Sparsity -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____zeros''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____zeros_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_zeros''' :: Sparsity -> IO IMatrix
+genIMatrix_zeros''' = casADi__GenericMatrix_CasADi__Matrix_int____zeros'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____ones" c_CasADi__GenericMatrix_CasADi__Matrix_int____ones
+  :: CInt -> CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____ones
+  :: Int -> Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____ones x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____ones x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>one.
+-}
+genIMatrix_ones :: Int -> Int -> IO IMatrix
+genIMatrix_ones = casADi__GenericMatrix_CasADi__Matrix_int____ones
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC
+  :: CInt -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____ones'
+  :: Int -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____ones' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_ones' :: Int -> IO IMatrix
+genIMatrix_ones' = casADi__GenericMatrix_CasADi__Matrix_int____ones'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC_TIC
+  :: IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____ones''
+  :: IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____ones''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_ones'' :: IO IMatrix
+genIMatrix_ones'' = casADi__GenericMatrix_CasADi__Matrix_int____ones''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____ones'''
+  :: Sparsity -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____ones''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____ones_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genIMatrix_ones''' :: Sparsity -> IO IMatrix
+genIMatrix_ones''' = casADi__GenericMatrix_CasADi__Matrix_int____ones'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_int____mul_smart" c_CasADi__GenericMatrix_CasADi__Matrix_int____mul_smart
+  :: Ptr GenIMatrix' -> Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__GenericMatrix_CasADi__Matrix_int____mul_smart
+  :: GenIMatrix -> IMatrix -> Sparsity -> IO IMatrix
+casADi__GenericMatrix_CasADi__Matrix_int____mul_smart x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_int____mul_smart x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix-matrix multiplication. Attempts to identify quick returns on matrix-
+>level and delegates to MatType::mul_full if no such quick returns are found.
+-}
+genIMatrix_mul_smart :: GenIMatrixClass a => a -> IMatrix -> Sparsity -> IO IMatrix
+genIMatrix_mul_smart x = casADi__GenericMatrix_CasADi__Matrix_int____mul_smart (castGenIMatrix x)
+
diff --git a/Casadi/Wrappers/Classes/GenMX.hs b/Casadi/Wrappers/Classes/GenMX.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/GenMX.hs
@@ -0,0 +1,746 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.GenMX
+       (
+         GenMX,
+         GenMXClass(..),
+         genMX_dimString,
+         genMX_isDense,
+         genMX_isEmpty,
+         genMX_isEmpty',
+         genMX_isScalar,
+         genMX_isScalar',
+         genMX_isSquare,
+         genMX_isTril,
+         genMX_isTriu,
+         genMX_isVector,
+         genMX_mul_smart,
+         genMX_numel,
+         genMX_ones,
+         genMX_ones',
+         genMX_ones'',
+         genMX_ones''',
+         genMX_size,
+         genMX_size',
+         genMX_size1,
+         genMX_size2,
+         genMX_sizeD,
+         genMX_sizeL,
+         genMX_sizeU,
+         genMX_sparse,
+         genMX_sparse',
+         genMX_sparse'',
+         genMX_sparsityRef,
+         genMX_sym,
+         genMX_sym',
+         genMX_sym'',
+         genMX_sym''',
+         genMX_sym'''',
+         genMX_sym''''',
+         genMX_sym'''''',
+         genMX_sym''''''',
+         genMX_zeros,
+         genMX_zeros',
+         genMX_zeros'',
+         genMX_zeros''',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___size" c_CasADi__GenericMatrix_CasADi__MX___size
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___size
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___size x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___size x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  int CasADi::GenericMatrix< MatType >::size() const 
+>------------------------------------------------------------------------
+>
+>Get the number of (structural) non-zero elements.
+>
+>>  int CasADi::GenericMatrix< MatType >::size(SparsityType sp) const 
+>------------------------------------------------------------------------
+>
+>Get the number if non-zeros for a given sparsity pattern.
+-}
+genMX_size :: GenMXClass a => a -> IO Int
+genMX_size x = casADi__GenericMatrix_CasADi__MX___size (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sizeL" c_CasADi__GenericMatrix_CasADi__MX___sizeL
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___sizeL
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___sizeL x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sizeL x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the lower triangular half.
+-}
+genMX_sizeL :: GenMXClass a => a -> IO Int
+genMX_sizeL x = casADi__GenericMatrix_CasADi__MX___sizeL (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sizeU" c_CasADi__GenericMatrix_CasADi__MX___sizeU
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___sizeU
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___sizeU x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sizeU x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the upper triangular half.
+-}
+genMX_sizeU :: GenMXClass a => a -> IO Int
+genMX_sizeU x = casADi__GenericMatrix_CasADi__MX___sizeU (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sizeD" c_CasADi__GenericMatrix_CasADi__MX___sizeD
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___sizeD
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___sizeD x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sizeD x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get get the number of non-zeros on the diagonal.
+-}
+genMX_sizeD :: GenMXClass a => a -> IO Int
+genMX_sizeD x = casADi__GenericMatrix_CasADi__MX___sizeD (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___numel" c_CasADi__GenericMatrix_CasADi__MX___numel
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___numel
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___numel x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___numel x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of elements.
+-}
+genMX_numel :: GenMXClass a => a -> IO Int
+genMX_numel x = casADi__GenericMatrix_CasADi__MX___numel (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___size1" c_CasADi__GenericMatrix_CasADi__MX___size1
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___size1
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___size1 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___size1 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the first dimension (i.e. number of rows)
+-}
+genMX_size1 :: GenMXClass a => a -> IO Int
+genMX_size1 x = casADi__GenericMatrix_CasADi__MX___size1 (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___size2" c_CasADi__GenericMatrix_CasADi__MX___size2
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___size2
+  :: GenMX -> IO Int
+casADi__GenericMatrix_CasADi__MX___size2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___size2 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the second dimension (i.e. number of columns)
+-}
+genMX_size2 :: GenMXClass a => a -> IO Int
+genMX_size2 x = casADi__GenericMatrix_CasADi__MX___size2 (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___size_TIC" c_CasADi__GenericMatrix_CasADi__MX___size_TIC
+  :: Ptr GenMX' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__MX___size'
+  :: GenMX -> SparsityType -> IO Int
+casADi__GenericMatrix_CasADi__MX___size' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___size_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genMX_size' :: GenMXClass a => a -> SparsityType -> IO Int
+genMX_size' x = casADi__GenericMatrix_CasADi__MX___size' (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___dimString" c_CasADi__GenericMatrix_CasADi__MX___dimString
+  :: Ptr GenMX' -> IO (Ptr StdString')
+casADi__GenericMatrix_CasADi__MX___dimString
+  :: GenMX -> IO String
+casADi__GenericMatrix_CasADi__MX___dimString x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___dimString x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get string representation of dimensions. The representation is (nrow x ncol
+>= numel | size)
+-}
+genMX_dimString :: GenMXClass a => a -> IO String
+genMX_dimString x = casADi__GenericMatrix_CasADi__MX___dimString (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isEmpty" c_CasADi__GenericMatrix_CasADi__MX___isEmpty
+  :: Ptr GenMX' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isEmpty
+  :: GenMX -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isEmpty x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isEmpty x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is empty, i.e. if one of the dimensions is zero (or
+>optionally both dimensions)
+-}
+genMX_isEmpty :: GenMXClass a => a -> Bool -> IO Bool
+genMX_isEmpty x = casADi__GenericMatrix_CasADi__MX___isEmpty (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isEmpty_TIC" c_CasADi__GenericMatrix_CasADi__MX___isEmpty_TIC
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isEmpty'
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isEmpty' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isEmpty_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_isEmpty' :: GenMXClass a => a -> IO Bool
+genMX_isEmpty' x = casADi__GenericMatrix_CasADi__MX___isEmpty' (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isDense" c_CasADi__GenericMatrix_CasADi__MX___isDense
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isDense
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isDense x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isDense x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is dense.
+-}
+genMX_isDense :: GenMXClass a => a -> IO Bool
+genMX_isDense x = casADi__GenericMatrix_CasADi__MX___isDense (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isScalar" c_CasADi__GenericMatrix_CasADi__MX___isScalar
+  :: Ptr GenMX' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isScalar
+  :: GenMX -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isScalar x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isScalar x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is scalar.
+-}
+genMX_isScalar :: GenMXClass a => a -> Bool -> IO Bool
+genMX_isScalar x = casADi__GenericMatrix_CasADi__MX___isScalar (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isScalar_TIC" c_CasADi__GenericMatrix_CasADi__MX___isScalar_TIC
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isScalar'
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_isScalar' :: GenMXClass a => a -> IO Bool
+genMX_isScalar' x = casADi__GenericMatrix_CasADi__MX___isScalar' (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isSquare" c_CasADi__GenericMatrix_CasADi__MX___isSquare
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isSquare
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isSquare x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isSquare x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is square.
+-}
+genMX_isSquare :: GenMXClass a => a -> IO Bool
+genMX_isSquare x = casADi__GenericMatrix_CasADi__MX___isSquare (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isVector" c_CasADi__GenericMatrix_CasADi__MX___isVector
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isVector
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isVector x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isVector x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is a vector (i.e. size2()==1)
+-}
+genMX_isVector :: GenMXClass a => a -> IO Bool
+genMX_isVector x = casADi__GenericMatrix_CasADi__MX___isVector (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isTriu" c_CasADi__GenericMatrix_CasADi__MX___isTriu
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isTriu
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isTriu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isTriu x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is upper triangular.
+-}
+genMX_isTriu :: GenMXClass a => a -> IO Bool
+genMX_isTriu x = casADi__GenericMatrix_CasADi__MX___isTriu (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___isTril" c_CasADi__GenericMatrix_CasADi__MX___isTril
+  :: Ptr GenMX' -> IO CInt
+casADi__GenericMatrix_CasADi__MX___isTril
+  :: GenMX -> IO Bool
+casADi__GenericMatrix_CasADi__MX___isTril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___isTril x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is lower triangular.
+-}
+genMX_isTril :: GenMXClass a => a -> IO Bool
+genMX_isTril x = casADi__GenericMatrix_CasADi__MX___isTril (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sparsityRef" c_CasADi__GenericMatrix_CasADi__MX___sparsityRef
+  :: Ptr GenMX' -> IO (Ptr Sparsity')
+casADi__GenericMatrix_CasADi__MX___sparsityRef
+  :: GenMX -> IO Sparsity
+casADi__GenericMatrix_CasADi__MX___sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the sparsity, make a copy if there are multiple references to it.
+-}
+genMX_sparsityRef :: GenMXClass a => a -> IO Sparsity
+genMX_sparsityRef x = casADi__GenericMatrix_CasADi__MX___sparsityRef (castGenMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym" c_CasADi__GenericMatrix_CasADi__MX___sym
+  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sym
+  :: String -> Int -> Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___sym x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow=1, int ncol=1)
+>------------------------------------------------------------------------
+>
+>Create an nrow-by-ncol symbolic primitive.
+>
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const std::pair< int, int > &rc)
+>------------------------------------------------------------------------
+>
+>Construct a symbolic primitive with given dimensions.
+>
+>>  MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp)
+>------------------------------------------------------------------------
+>
+>Create symbolic primitive with a given sparsity pattern.
+>
+>>  std::vector< MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with with matrices with symbolic primitives of
+>given sparsity.
+>
+>>  static std::vector<MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with nrow-by-ncol symbolic primitives.
+>
+>>  std::vector< std::vector< MatType > > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with symbolic primitives
+>with given sparsity.
+>
+>>  static std::vector<std::vector<MatType> > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with nrow-by-ncol
+>symbolic primitives.
+-}
+genMX_sym :: String -> Int -> Int -> IO MX
+genMX_sym = casADi__GenericMatrix_CasADi__MX___sym
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC
+  :: Ptr StdString' -> CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sym'
+  :: String -> Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___sym' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym' :: String -> Int -> IO MX
+genMX_sym' = casADi__GenericMatrix_CasADi__MX___sym'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC
+  :: Ptr StdString' -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sym''
+  :: String -> IO MX
+casADi__GenericMatrix_CasADi__MX___sym'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym'' :: String -> IO MX
+genMX_sym'' = casADi__GenericMatrix_CasADi__MX___sym''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sym'''
+  :: String -> Sparsity -> IO MX
+casADi__GenericMatrix_CasADi__MX___sym''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym''' :: String -> Sparsity -> IO MX
+genMX_sym''' = casADi__GenericMatrix_CasADi__MX___sym'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> IO (Ptr (CppVec (Ptr MX')))
+casADi__GenericMatrix_CasADi__MX___sym''''
+  :: String -> Sparsity -> Int -> IO (Vector MX)
+casADi__GenericMatrix_CasADi__MX___sym'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym'''' :: String -> Sparsity -> Int -> IO (Vector MX)
+genMX_sym'''' = casADi__GenericMatrix_CasADi__MX___sym''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr MX')))
+casADi__GenericMatrix_CasADi__MX___sym'''''
+  :: String -> Int -> Int -> Int -> IO (Vector MX)
+casADi__GenericMatrix_CasADi__MX___sym''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym''''' :: String -> Int -> Int -> Int -> IO (Vector MX)
+genMX_sym''''' = casADi__GenericMatrix_CasADi__MX___sym'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+casADi__GenericMatrix_CasADi__MX___sym''''''
+  :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector MX))
+casADi__GenericMatrix_CasADi__MX___sym'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym'''''' :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector MX))
+genMX_sym'''''' = casADi__GenericMatrix_CasADi__MX___sym''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+casADi__GenericMatrix_CasADi__MX___sym'''''''
+  :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector MX))
+casADi__GenericMatrix_CasADi__MX___sym''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+genMX_sym''''''' :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector MX))
+genMX_sym''''''' = casADi__GenericMatrix_CasADi__MX___sym'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sparse" c_CasADi__GenericMatrix_CasADi__MX___sparse
+  :: CInt -> CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sparse
+  :: Int -> Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___sparse x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sparse x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a sparse matrix with all zeros
+-}
+genMX_sparse :: Int -> Int -> IO MX
+genMX_sparse = casADi__GenericMatrix_CasADi__MX___sparse
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sparse_TIC" c_CasADi__GenericMatrix_CasADi__MX___sparse_TIC
+  :: CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sparse'
+  :: Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___sparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___sparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_sparse' :: Int -> IO MX
+genMX_sparse' = casADi__GenericMatrix_CasADi__MX___sparse'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___sparse_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___sparse_TIC_TIC
+  :: IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___sparse''
+  :: IO MX
+casADi__GenericMatrix_CasADi__MX___sparse''  =
+  c_CasADi__GenericMatrix_CasADi__MX___sparse_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genMX_sparse'' :: IO MX
+genMX_sparse'' = casADi__GenericMatrix_CasADi__MX___sparse''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___zeros" c_CasADi__GenericMatrix_CasADi__MX___zeros
+  :: CInt -> CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___zeros
+  :: Int -> Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___zeros x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___zeros x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>zero.
+-}
+genMX_zeros :: Int -> Int -> IO MX
+genMX_zeros = casADi__GenericMatrix_CasADi__MX___zeros
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___zeros_TIC" c_CasADi__GenericMatrix_CasADi__MX___zeros_TIC
+  :: CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___zeros'
+  :: Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___zeros' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___zeros_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_zeros' :: Int -> IO MX
+genMX_zeros' = casADi__GenericMatrix_CasADi__MX___zeros'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___zeros_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___zeros_TIC_TIC
+  :: IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___zeros''
+  :: IO MX
+casADi__GenericMatrix_CasADi__MX___zeros''  =
+  c_CasADi__GenericMatrix_CasADi__MX___zeros_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genMX_zeros'' :: IO MX
+genMX_zeros'' = casADi__GenericMatrix_CasADi__MX___zeros''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___zeros_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___zeros_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___zeros'''
+  :: Sparsity -> IO MX
+casADi__GenericMatrix_CasADi__MX___zeros''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___zeros_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_zeros''' :: Sparsity -> IO MX
+genMX_zeros''' = casADi__GenericMatrix_CasADi__MX___zeros'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___ones" c_CasADi__GenericMatrix_CasADi__MX___ones
+  :: CInt -> CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___ones
+  :: Int -> Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___ones x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__MX___ones x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>one.
+-}
+genMX_ones :: Int -> Int -> IO MX
+genMX_ones = casADi__GenericMatrix_CasADi__MX___ones
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___ones_TIC" c_CasADi__GenericMatrix_CasADi__MX___ones_TIC
+  :: CInt -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___ones'
+  :: Int -> IO MX
+casADi__GenericMatrix_CasADi__MX___ones' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___ones_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_ones' :: Int -> IO MX
+genMX_ones' = casADi__GenericMatrix_CasADi__MX___ones'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___ones_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___ones_TIC_TIC
+  :: IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___ones''
+  :: IO MX
+casADi__GenericMatrix_CasADi__MX___ones''  =
+  c_CasADi__GenericMatrix_CasADi__MX___ones_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genMX_ones'' :: IO MX
+genMX_ones'' = casADi__GenericMatrix_CasADi__MX___ones''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___ones_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__MX___ones_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___ones'''
+  :: Sparsity -> IO MX
+casADi__GenericMatrix_CasADi__MX___ones''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__MX___ones_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genMX_ones''' :: Sparsity -> IO MX
+genMX_ones''' = casADi__GenericMatrix_CasADi__MX___ones'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__MX___mul_smart" c_CasADi__GenericMatrix_CasADi__MX___mul_smart
+  :: Ptr GenMX' -> Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+casADi__GenericMatrix_CasADi__MX___mul_smart
+  :: GenMX -> MX -> Sparsity -> IO MX
+casADi__GenericMatrix_CasADi__MX___mul_smart x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__MX___mul_smart x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix-matrix multiplication. Attempts to identify quick returns on matrix-
+>level and delegates to MatType::mul_full if no such quick returns are found.
+-}
+genMX_mul_smart :: GenMXClass a => a -> MX -> Sparsity -> IO MX
+genMX_mul_smart x = casADi__GenericMatrix_CasADi__MX___mul_smart (castGenMX x)
+
diff --git a/Casadi/Wrappers/Classes/GenSX.hs b/Casadi/Wrappers/Classes/GenSX.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/GenSX.hs
@@ -0,0 +1,746 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.GenSX
+       (
+         GenSX,
+         GenSXClass(..),
+         genSX_dimString,
+         genSX_isDense,
+         genSX_isEmpty,
+         genSX_isEmpty',
+         genSX_isScalar,
+         genSX_isScalar',
+         genSX_isSquare,
+         genSX_isTril,
+         genSX_isTriu,
+         genSX_isVector,
+         genSX_mul_smart,
+         genSX_numel,
+         genSX_ones,
+         genSX_ones',
+         genSX_ones'',
+         genSX_ones''',
+         genSX_size,
+         genSX_size',
+         genSX_size1,
+         genSX_size2,
+         genSX_sizeD,
+         genSX_sizeL,
+         genSX_sizeU,
+         genSX_sparse,
+         genSX_sparse',
+         genSX_sparse'',
+         genSX_sparsityRef,
+         genSX_sym,
+         genSX_sym',
+         genSX_sym'',
+         genSX_sym''',
+         genSX_sym'''',
+         genSX_sym''''',
+         genSX_sym'''''',
+         genSX_sym''''''',
+         genSX_zeros,
+         genSX_zeros',
+         genSX_zeros'',
+         genSX_zeros''',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  int CasADi::GenericMatrix< MatType >::size() const 
+>------------------------------------------------------------------------
+>
+>Get the number of (structural) non-zero elements.
+>
+>>  int CasADi::GenericMatrix< MatType >::size(SparsityType sp) const 
+>------------------------------------------------------------------------
+>
+>Get the number if non-zeros for a given sparsity pattern.
+-}
+genSX_size :: GenSXClass a => a -> IO Int
+genSX_size x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeL" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeL
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeL
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeL x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeL x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the lower triangular half.
+-}
+genSX_sizeL :: GenSXClass a => a -> IO Int
+genSX_sizeL x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeL (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeU" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeU
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeU
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeU x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeU x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of non-zeros in the upper triangular half.
+-}
+genSX_sizeU :: GenSXClass a => a -> IO Int
+genSX_sizeU x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeU (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeD" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeD
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeD
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeD x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeD x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get get the number of non-zeros on the diagonal.
+-}
+genSX_sizeD :: GenSXClass a => a -> IO Int
+genSX_sizeD x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sizeD (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____numel" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____numel
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____numel
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____numel x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____numel x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of elements.
+-}
+genSX_numel :: GenSXClass a => a -> IO Int
+genSX_numel x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____numel (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size1" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size1
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size1
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size1 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size1 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the first dimension (i.e. number of rows)
+-}
+genSX_size1 :: GenSXClass a => a -> IO Int
+genSX_size1 x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size1 (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size2" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size2
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size2
+  :: GenSX -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size2 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the second dimension (i.e. number of columns)
+-}
+genSX_size2 :: GenSXClass a => a -> IO Int
+genSX_size2 x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size2 (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size_TIC
+  :: Ptr GenSX' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size'
+  :: GenSX -> SparsityType -> IO Int
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genSX_size' :: GenSXClass a => a -> SparsityType -> IO Int
+genSX_size' x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____size' (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____dimString" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____dimString
+  :: Ptr GenSX' -> IO (Ptr StdString')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____dimString
+  :: GenSX -> IO String
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____dimString x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____dimString x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get string representation of dimensions. The representation is (nrow x ncol
+>= numel | size)
+-}
+genSX_dimString :: GenSXClass a => a -> IO String
+genSX_dimString x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____dimString (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty
+  :: Ptr GenSX' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty
+  :: GenSX -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is empty, i.e. if one of the dimensions is zero (or
+>optionally both dimensions)
+-}
+genSX_isEmpty :: GenSXClass a => a -> Bool -> IO Bool
+genSX_isEmpty x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty_TIC
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty'
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_isEmpty' :: GenSXClass a => a -> IO Bool
+genSX_isEmpty' x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isEmpty' (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isDense" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isDense
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isDense
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isDense x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isDense x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is dense.
+-}
+genSX_isDense :: GenSXClass a => a -> IO Bool
+genSX_isDense x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isDense (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar
+  :: Ptr GenSX' -> CInt -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar
+  :: GenSX -> Bool -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is scalar.
+-}
+genSX_isScalar :: GenSXClass a => a -> Bool -> IO Bool
+genSX_isScalar x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar_TIC
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar'
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_isScalar' :: GenSXClass a => a -> IO Bool
+genSX_isScalar' x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isScalar' (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isSquare" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isSquare
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isSquare
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isSquare x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isSquare x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix expression is square.
+-}
+genSX_isSquare :: GenSXClass a => a -> IO Bool
+genSX_isSquare x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isSquare (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isVector" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isVector
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isVector
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isVector x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isVector x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is a vector (i.e. size2()==1)
+-}
+genSX_isVector :: GenSXClass a => a -> IO Bool
+genSX_isVector x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isVector (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTriu" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTriu
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTriu
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTriu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTriu x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is upper triangular.
+-}
+genSX_isTriu :: GenSXClass a => a -> IO Bool
+genSX_isTriu x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTriu (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTril" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTril
+  :: Ptr GenSX' -> IO CInt
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTril
+  :: GenSX -> IO Bool
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTril x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the matrix is lower triangular.
+-}
+genSX_isTril :: GenSXClass a => a -> IO Bool
+genSX_isTril x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____isTril (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparsityRef" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparsityRef
+  :: Ptr GenSX' -> IO (Ptr Sparsity')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparsityRef
+  :: GenSX -> IO Sparsity
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the sparsity, make a copy if there are multiple references to it.
+-}
+genSX_sparsityRef :: GenSXClass a => a -> IO Sparsity
+genSX_sparsityRef x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparsityRef (castGenSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym
+  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym
+  :: String -> Int -> Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow=1, int ncol=1)
+>------------------------------------------------------------------------
+>
+>Create an nrow-by-ncol symbolic primitive.
+>
+>>  static MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const std::pair< int, int > &rc)
+>------------------------------------------------------------------------
+>
+>Construct a symbolic primitive with given dimensions.
+>
+>>  MatType CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp)
+>------------------------------------------------------------------------
+>
+>Create symbolic primitive with a given sparsity pattern.
+>
+>>  std::vector< MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with with matrices with symbolic primitives of
+>given sparsity.
+>
+>>  static std::vector<MatType > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p)
+>------------------------------------------------------------------------
+>
+>Create a vector of length p with nrow-by-ncol symbolic primitives.
+>
+>>  std::vector< std::vector< MatType > > CasADi::GenericMatrix< MatType >::sym(const std::string &name, const Sparsity &sp, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with symbolic primitives
+>with given sparsity.
+>
+>>  static std::vector<std::vector<MatType> > CasADi::GenericMatrix< MatType >::sym(const std::string &name, int nrow, int ncol, int p, int r)
+>------------------------------------------------------------------------
+>
+>Create a vector of length r of vectors of length p with nrow-by-ncol
+>symbolic primitives.
+-}
+genSX_sym :: String -> Int -> Int -> IO SX
+genSX_sym = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC
+  :: Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'
+  :: String -> Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym' :: String -> Int -> IO SX
+genSX_sym' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC
+  :: Ptr StdString' -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''
+  :: String -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym'' :: String -> IO SX
+genSX_sym'' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''
+  :: String -> Sparsity -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym''' :: String -> Sparsity -> IO SX
+genSX_sym''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> IO (Ptr (CppVec (Ptr SX')))
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''''
+  :: String -> Sparsity -> Int -> IO (Vector SX)
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym'''' :: String -> Sparsity -> Int -> IO (Vector SX)
+genSX_sym'''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr SX')))
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''''
+  :: String -> Int -> Int -> Int -> IO (Vector SX)
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym''''' :: String -> Int -> Int -> Int -> IO (Vector SX)
+genSX_sym''''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr Sparsity' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SX')))))
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''''''
+  :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector SX))
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym'''''' :: String -> Sparsity -> Int -> Int -> IO (Vector (Vector SX))
+genSX_sym'''''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SX')))))
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''''''
+  :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector SX))
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+genSX_sym''''''' :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector SX))
+genSX_sym''''''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sym'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse
+  :: CInt -> CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse
+  :: Int -> Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a sparse matrix with all zeros
+-}
+genSX_sparse :: Int -> Int -> IO SX
+genSX_sparse = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse_TIC
+  :: CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse'
+  :: Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_sparse' :: Int -> IO SX
+genSX_sparse' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse_TIC_TIC
+  :: IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse''
+  :: IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genSX_sparse'' :: IO SX
+genSX_sparse'' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____sparse''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros
+  :: CInt -> CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros
+  :: Int -> Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>zero.
+-}
+genSX_zeros :: Int -> Int -> IO SX
+genSX_zeros = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC
+  :: CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros'
+  :: Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_zeros' :: Int -> IO SX
+genSX_zeros' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC_TIC
+  :: IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros''
+  :: IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genSX_zeros'' :: IO SX
+genSX_zeros'' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros'''
+  :: Sparsity -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_zeros''' :: Sparsity -> IO SX
+genSX_zeros''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____zeros'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones
+  :: CInt -> CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones
+  :: Int -> Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense matrix or a matrix with specified sparsity with all entries
+>one.
+-}
+genSX_ones :: Int -> Int -> IO SX
+genSX_ones = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC
+  :: CInt -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones'
+  :: Int -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_ones' :: Int -> IO SX
+genSX_ones' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC_TIC
+  :: IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones''
+  :: IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones''  =
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+genSX_ones'' :: IO SX
+genSX_ones'' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC_TIC_TIC" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones'''
+  :: Sparsity -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genSX_ones''' :: Sparsity -> IO SX
+genSX_ones''' = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____ones'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____mul_smart" c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____mul_smart
+  :: Ptr GenSX' -> Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____mul_smart
+  :: GenSX -> SX -> Sparsity -> IO SX
+casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____mul_smart x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____mul_smart x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Matrix-matrix multiplication. Attempts to identify quick returns on matrix-
+>level and delegates to MatType::mul_full if no such quick returns are found.
+-}
+genSX_mul_smart :: GenSXClass a => a -> SX -> Sparsity -> IO SX
+genSX_mul_smart x = casADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement____mul_smart (castGenSX x)
+
diff --git a/Casadi/Wrappers/Classes/GenericType.hs b/Casadi/Wrappers/Classes/GenericType.hs
--- a/Casadi/Wrappers/Classes/GenericType.hs
+++ b/Casadi/Wrappers/Classes/GenericType.hs
@@ -10,16 +10,18 @@
          GenericType,
          GenericTypeClass(..),
          genericType,
-         genericTypeBool,
-         genericTypeBoolVec,
-         genericTypeCallback,
-         genericTypeDouble,
-         genericTypeDoubleVec,
-         genericTypeFX,
-         genericTypeInt,
-         genericTypeIntVec,
-         genericTypeString,
-         genericTypeStringVec,
+         genericType',
+         genericType'',
+         genericType''',
+         genericType'''',
+         genericType''''',
+         genericType'''''',
+         genericType''''''',
+         genericType'''''''',
+         genericType''''''''',
+         genericType'''''''''',
+         genericType''''''''''',
+         genericType'''''''''''',
          genericType_can_cast_to,
          genericType_can_cast_to',
          genericType_from_type,
@@ -31,7 +33,7 @@
          genericType_isDouble,
          genericType_isDoubleVector,
          genericType_isEmptyVector,
-         genericType_isFX,
+         genericType_isFunction,
          genericType_isInt,
          genericType_isIntVector,
          genericType_isSharedObject,
@@ -323,20 +325,20 @@
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__isFX" c_CasADi__GenericType__isFX
+foreign import ccall unsafe "CasADi__GenericType__isFunction" c_CasADi__GenericType__isFunction
   :: Ptr GenericType' -> IO CInt
-casADi__GenericType__isFX
+casADi__GenericType__isFunction
   :: GenericType -> IO Bool
-casADi__GenericType__isFX x0 =
+casADi__GenericType__isFunction x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__isFX x0' >>= wrapReturn
+  c_CasADi__GenericType__isFunction x0' >>= wrapReturn
 
 -- classy wrapper
 {-|
 >Is a shared object?
 -}
-genericType_isFX :: GenericTypeClass a => a -> IO Bool
-genericType_isFX x = casADi__GenericType__isFX (castGenericType x)
+genericType_isFunction :: GenericTypeClass a => a -> IO Bool
+genericType_isFunction x = casADi__GenericType__isFunction (castGenericType x)
 
 
 -- direct wrapper
@@ -421,154 +423,192 @@
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeBool" c_CasADi__GenericType__GenericTypeBool
+foreign import ccall unsafe "CasADi__GenericType__GenericType" c_CasADi__GenericType__GenericType
+  :: IO (Ptr GenericType')
+casADi__GenericType__GenericType
+  :: IO GenericType
+casADi__GenericType__GenericType  =
+  c_CasADi__GenericType__GenericType  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::GenericType::GenericType(void *ptr)
+>------------------------------------------------------------------------
+>[INTERNAL]
+>
+>>  CasADi::GenericType::GenericType(NLPSolverCreator ptr)
+>------------------------------------------------------------------------
+>
+>Creator functions.
+-}
+genericType :: IO GenericType
+genericType = casADi__GenericType__GenericType
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC" c_CasADi__GenericType__GenericType_TIC
   :: CInt -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeBool
+casADi__GenericType__GenericType'
   :: Bool -> IO GenericType
-casADi__GenericType__GenericTypeBool x0 =
+casADi__GenericType__GenericType' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeBool x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeBool :: Bool -> IO GenericType
-genericTypeBool = casADi__GenericType__GenericTypeBool
+genericType' :: Bool -> IO GenericType
+genericType' = casADi__GenericType__GenericType'
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeInt" c_CasADi__GenericType__GenericTypeInt
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC
   :: CInt -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeInt
+casADi__GenericType__GenericType''
   :: Int -> IO GenericType
-casADi__GenericType__GenericTypeInt x0 =
+casADi__GenericType__GenericType'' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeInt x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeInt :: Int -> IO GenericType
-genericTypeInt = casADi__GenericType__GenericTypeInt
+genericType'' :: Int -> IO GenericType
+genericType'' = casADi__GenericType__GenericType''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeDouble" c_CasADi__GenericType__GenericTypeDouble
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC
   :: CDouble -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeDouble
+casADi__GenericType__GenericType'''
   :: Double -> IO GenericType
-casADi__GenericType__GenericTypeDouble x0 =
+casADi__GenericType__GenericType''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeDouble x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeDouble :: Double -> IO GenericType
-genericTypeDouble = casADi__GenericType__GenericTypeDouble
+genericType''' :: Double -> IO GenericType
+genericType''' = casADi__GenericType__GenericType'''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeString" c_CasADi__GenericType__GenericTypeString
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC
   :: Ptr StdString' -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeString
+casADi__GenericType__GenericType''''
   :: String -> IO GenericType
-casADi__GenericType__GenericTypeString x0 =
+casADi__GenericType__GenericType'''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeString x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeString :: String -> IO GenericType
-genericTypeString = casADi__GenericType__GenericTypeString
+genericType'''' :: String -> IO GenericType
+genericType'''' = casADi__GenericType__GenericType''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeBoolVec" c_CasADi__GenericType__GenericTypeBoolVec
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC
   :: Ptr (CppVec CInt) -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeBoolVec
+casADi__GenericType__GenericType'''''
   :: Vector Bool -> IO GenericType
-casADi__GenericType__GenericTypeBoolVec x0 =
+casADi__GenericType__GenericType''''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeBoolVec x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeBoolVec :: Vector Bool -> IO GenericType
-genericTypeBoolVec = casADi__GenericType__GenericTypeBoolVec
+genericType''''' :: Vector Bool -> IO GenericType
+genericType''''' = casADi__GenericType__GenericType'''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeIntVec" c_CasADi__GenericType__GenericTypeIntVec
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC
   :: Ptr (CppVec CInt) -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeIntVec
+casADi__GenericType__GenericType''''''
   :: Vector Int -> IO GenericType
-casADi__GenericType__GenericTypeIntVec x0 =
+casADi__GenericType__GenericType'''''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeIntVec x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeIntVec :: Vector Int -> IO GenericType
-genericTypeIntVec = casADi__GenericType__GenericTypeIntVec
+genericType'''''' :: Vector Int -> IO GenericType
+genericType'''''' = casADi__GenericType__GenericType''''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeDoubleVec" c_CasADi__GenericType__GenericTypeDoubleVec
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC
   :: Ptr (CppVec CDouble) -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeDoubleVec
+casADi__GenericType__GenericType'''''''
   :: Vector Double -> IO GenericType
-casADi__GenericType__GenericTypeDoubleVec x0 =
+casADi__GenericType__GenericType''''''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeDoubleVec x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeDoubleVec :: Vector Double -> IO GenericType
-genericTypeDoubleVec = casADi__GenericType__GenericTypeDoubleVec
+genericType''''''' :: Vector Double -> IO GenericType
+genericType''''''' = casADi__GenericType__GenericType'''''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeStringVec" c_CasADi__GenericType__GenericTypeStringVec
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
   :: Ptr (CppVec (Ptr StdString')) -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeStringVec
+casADi__GenericType__GenericType''''''''
   :: Vector String -> IO GenericType
-casADi__GenericType__GenericTypeStringVec x0 =
+casADi__GenericType__GenericType'''''''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeStringVec x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeStringVec :: Vector String -> IO GenericType
-genericTypeStringVec = casADi__GenericType__GenericTypeStringVec
+genericType'''''''' :: Vector String -> IO GenericType
+genericType'''''''' = casADi__GenericType__GenericType''''''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeFX" c_CasADi__GenericType__GenericTypeFX
-  :: Ptr FX' -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeFX
-  :: FX -> IO GenericType
-casADi__GenericType__GenericTypeFX x0 =
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr GenericType')
+casADi__GenericType__GenericType'''''''''
+  :: Function -> IO GenericType
+casADi__GenericType__GenericType''''''''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeFX x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeFX :: FX -> IO GenericType
-genericTypeFX = casADi__GenericType__GenericTypeFX
+genericType''''''''' :: Function -> IO GenericType
+genericType''''''''' = casADi__GenericType__GenericType'''''''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericTypeCallback" c_CasADi__GenericType__GenericTypeCallback
-  :: Ptr Callback' -> IO (Ptr GenericType')
-casADi__GenericType__GenericTypeCallback
-  :: Callback -> IO GenericType
-casADi__GenericType__GenericTypeCallback x0 =
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SharedObject' -> IO (Ptr GenericType')
+casADi__GenericType__GenericType''''''''''
+  :: SharedObject -> IO GenericType
+casADi__GenericType__GenericType'''''''''' x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__GenericType__GenericTypeCallback x0' >>= wrapReturn
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericTypeCallback :: Callback -> IO GenericType
-genericTypeCallback = casADi__GenericType__GenericTypeCallback
+genericType'''''''''' :: SharedObject -> IO GenericType
+genericType'''''''''' = casADi__GenericType__GenericType''''''''''
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__GenericType__GenericType" c_CasADi__GenericType__GenericType
-  :: IO (Ptr GenericType')
-casADi__GenericType__GenericType
-  :: IO GenericType
-casADi__GenericType__GenericType  =
-  c_CasADi__GenericType__GenericType  >>= wrapReturn
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DerivativeGenerator' -> IO (Ptr GenericType')
+casADi__GenericType__GenericType'''''''''''
+  :: DerivativeGenerator -> IO GenericType
+casADi__GenericType__GenericType''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-genericType :: IO GenericType
-genericType = casADi__GenericType__GenericType
+genericType''''''''''' :: DerivativeGenerator -> IO GenericType
+genericType''''''''''' = casADi__GenericType__GenericType'''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Callback' -> IO (Ptr GenericType')
+casADi__GenericType__GenericType''''''''''''
+  :: Callback -> IO GenericType
+casADi__GenericType__GenericType'''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__GenericType__GenericType_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+genericType'''''''''''' :: Callback -> IO GenericType
+genericType'''''''''''' = casADi__GenericType__GenericType''''''''''''
 
diff --git a/Casadi/Wrappers/Classes/HomotopyNLPSolver.hs b/Casadi/Wrappers/Classes/HomotopyNLPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/HomotopyNLPSolver.hs
@@ -0,0 +1,66 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.HomotopyNLPSolver
+       (
+         HomotopyNLPSolver,
+         HomotopyNLPSolverClass(..),
+         homotopyNLPSolver,
+         homotopyNLPSolver_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show HomotopyNLPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__HomotopyNLPSolver__checkNode" c_CasADi__HomotopyNLPSolver__checkNode
+  :: Ptr HomotopyNLPSolver' -> IO CInt
+casADi__HomotopyNLPSolver__checkNode
+  :: HomotopyNLPSolver -> IO Bool
+casADi__HomotopyNLPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__HomotopyNLPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+homotopyNLPSolver_checkNode :: HomotopyNLPSolverClass a => a -> IO Bool
+homotopyNLPSolver_checkNode x = casADi__HomotopyNLPSolver__checkNode (castHomotopyNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__HomotopyNLPSolver__HomotopyNLPSolver" c_CasADi__HomotopyNLPSolver__HomotopyNLPSolver
+  :: IO (Ptr HomotopyNLPSolver')
+casADi__HomotopyNLPSolver__HomotopyNLPSolver
+  :: IO HomotopyNLPSolver
+casADi__HomotopyNLPSolver__HomotopyNLPSolver  =
+  c_CasADi__HomotopyNLPSolver__HomotopyNLPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+homotopyNLPSolver :: IO HomotopyNLPSolver
+homotopyNLPSolver = casADi__HomotopyNLPSolver__HomotopyNLPSolver
+
diff --git a/Casadi/Wrappers/Classes/IMatrix.hs b/Casadi/Wrappers/Classes/IMatrix.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/IMatrix.hs
@@ -0,0 +1,3776 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.IMatrix
+       (
+         IMatrix,
+         IMatrixClass(..),
+         imatrix,
+         imatrix',
+         imatrix'',
+         imatrix''',
+         imatrix'''',
+         imatrix''''',
+         imatrix'''''',
+         imatrix''''''',
+         imatrix'''''''',
+         imatrix___add__,
+         imatrix___constpow__,
+         imatrix___copysign__,
+         imatrix___div__,
+         imatrix___eq__,
+         imatrix___le__,
+         imatrix___lt__,
+         imatrix___mpower__,
+         imatrix___mrdivide__,
+         imatrix___mul__,
+         imatrix___ne__,
+         imatrix___nonzero__,
+         imatrix___pow__,
+         imatrix___sub__,
+         imatrix___truediv__,
+         imatrix_append,
+         imatrix_appendColumns,
+         imatrix_arccos,
+         imatrix_arccosh,
+         imatrix_arcsin,
+         imatrix_arcsinh,
+         imatrix_arctan,
+         imatrix_arctan2,
+         imatrix_arctanh,
+         imatrix_at,
+         imatrix_binary,
+         imatrix_ceil,
+         imatrix_className,
+         imatrix_clear,
+         imatrix_colind,
+         imatrix_cos,
+         imatrix_cosh,
+         imatrix_data,
+         imatrix_densify,
+         imatrix_densify',
+         imatrix_elem,
+         imatrix_elem',
+         imatrix_enlarge,
+         imatrix_erase,
+         imatrix_erf,
+         imatrix_erfinv,
+         imatrix_exp,
+         imatrix_eye,
+         imatrix_fabs,
+         imatrix_floor,
+         imatrix_fmax,
+         imatrix_fmin,
+         imatrix_get,
+         imatrix_get',
+         imatrix_get'',
+         imatrix_get''',
+         imatrix_get'''',
+         imatrix_get''''',
+         imatrix_getEqualityCheckingDepth,
+         imatrix_getMaxNumCallsInPrint,
+         imatrix_getName,
+         imatrix_getValue,
+         imatrix_hasNZ,
+         imatrix_hasNonStructuralZeros,
+         imatrix_if_else_zero,
+         imatrix_indexed_assignment,
+         imatrix_indexed_assignment',
+         imatrix_indexed_assignment'',
+         imatrix_indexed_assignment''',
+         imatrix_indexed_assignment'''',
+         imatrix_indexed_assignment''''',
+         imatrix_indexed_assignment'''''',
+         imatrix_indexed_assignment''''''',
+         imatrix_indexed_assignment'''''''',
+         imatrix_indexed_assignment''''''''',
+         imatrix_indexed_one_based_assignment,
+         imatrix_indexed_one_based_assignment',
+         imatrix_indexed_one_based_assignment'',
+         imatrix_indexed_zero_based_assignment,
+         imatrix_indexed_zero_based_assignment',
+         imatrix_indexed_zero_based_assignment'',
+         imatrix_inf,
+         imatrix_inf',
+         imatrix_inf'',
+         imatrix_inf''',
+         imatrix_isConstant,
+         imatrix_isEqual,
+         imatrix_isIdentity,
+         imatrix_isInteger,
+         imatrix_isMinusOne,
+         imatrix_isOne,
+         imatrix_isRegular,
+         imatrix_isSmooth,
+         imatrix_isSymbolic,
+         imatrix_isSymbolicSparse,
+         imatrix_isZero,
+         imatrix_log,
+         imatrix_log10,
+         imatrix_logic_and,
+         imatrix_logic_not,
+         imatrix_logic_or,
+         imatrix_matrix_matrix,
+         imatrix_matrix_scalar,
+         imatrix_mul,
+         imatrix_mul',
+         imatrix_mul_full,
+         imatrix_mul_full',
+         imatrix_mul_no_alloc_nn,
+         imatrix_mul_no_alloc_nn',
+         imatrix_mul_no_alloc_nt,
+         imatrix_mul_no_alloc_tn,
+         imatrix_mul_no_alloc_tn',
+         imatrix_nan,
+         imatrix_nan',
+         imatrix_nan'',
+         imatrix_nan''',
+         imatrix_nz_indexed_assignment,
+         imatrix_nz_indexed_assignment',
+         imatrix_nz_indexed_one_based_assignment,
+         imatrix_nz_indexed_one_based_assignment',
+         imatrix_nz_indexed_zero_based_assignment,
+         imatrix_nz_indexed_zero_based_assignment',
+         imatrix_operator_minus,
+         imatrix_operator_plus,
+         imatrix_printDense',
+         imatrix_printScalar',
+         imatrix_printSparse',
+         imatrix_printVector',
+         imatrix_printme,
+         imatrix_quad_form,
+         imatrix_remove,
+         imatrix_repmat,
+         imatrix_repmat',
+         imatrix_repmat'',
+         imatrix_repmat''',
+         imatrix_reserve,
+         imatrix_reserve',
+         imatrix_resize,
+         imatrix_row,
+         imatrix_sanityCheck,
+         imatrix_sanityCheck',
+         imatrix_scalar_matrix,
+         imatrix_set,
+         imatrix_set',
+         imatrix_set'',
+         imatrix_set''',
+         imatrix_set'''',
+         imatrix_set''''',
+         imatrix_setAll,
+         imatrix_setEqualityCheckingDepth,
+         imatrix_setEqualityCheckingDepth',
+         imatrix_setMaxNumCallsInPrint,
+         imatrix_setMaxNumCallsInPrint',
+         imatrix_setNZ,
+         imatrix_setNZ',
+         imatrix_setNZ'',
+         imatrix_setNZ''',
+         imatrix_setPrecision,
+         imatrix_setScientific,
+         imatrix_setSparse,
+         imatrix_setSparse',
+         imatrix_setSub,
+         imatrix_setSub',
+         imatrix_setSub'',
+         imatrix_setSub''',
+         imatrix_setSub'''',
+         imatrix_setSub''''',
+         imatrix_setSub'''''',
+         imatrix_setSub''''''',
+         imatrix_setSub'''''''',
+         imatrix_setSub''''''''',
+         imatrix_setSub'''''''''',
+         imatrix_setSub''''''''''',
+         imatrix_setSub'''''''''''',
+         imatrix_setSub''''''''''''',
+         imatrix_setWidth,
+         imatrix_setZero,
+         imatrix_sign,
+         imatrix_sin,
+         imatrix_sinh,
+         imatrix_sparsify,
+         imatrix_sparsify',
+         imatrix_sparsityRef,
+         imatrix_sqrt,
+         imatrix_tan,
+         imatrix_tanh,
+         imatrix_trans,
+         imatrix_triplet,
+         imatrix_triplet',
+         imatrix_unary,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show IMatrix where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sanityCheck" c_CasADi__Matrix_int___sanityCheck
+  :: Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___sanityCheck
+  :: IMatrix -> Bool -> IO ()
+casADi__Matrix_int___sanityCheck x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___sanityCheck x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>dimensions and colind,row vectors are compatible.
+>
+>Parameters:
+>-----------
+>
+>complete:  set to true to also check elementwise throws an error as possible
+>result
+-}
+imatrix_sanityCheck :: IMatrixClass a => a -> Bool -> IO ()
+imatrix_sanityCheck x = casADi__Matrix_int___sanityCheck (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sanityCheck_TIC" c_CasADi__Matrix_int___sanityCheck_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___sanityCheck'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___sanityCheck' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sanityCheck_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_sanityCheck' :: IMatrixClass a => a -> IO ()
+imatrix_sanityCheck' x = casADi__Matrix_int___sanityCheck' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___at" c_CasADi__Matrix_int___at
+  :: Ptr IMatrix' -> CInt -> IO CInt
+casADi__Matrix_int___at
+  :: IMatrix -> Int -> IO Int
+casADi__Matrix_int___at x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___at x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const DataType& CasADi::Matrix< T >::at(int k) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get a non-zero element.
+>
+>>  DataType& CasADi::Matrix< T >::at(int k)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Access a non-zero element.
+-}
+imatrix_at :: IMatrixClass a => a -> Int -> IO Int
+imatrix_at x = casADi__Matrix_int___at (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___elem" c_CasADi__Matrix_int___elem
+  :: Ptr IMatrix' -> CInt -> CInt -> IO CInt
+casADi__Matrix_int___elem
+  :: IMatrix -> Int -> Int -> IO Int
+casADi__Matrix_int___elem x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___elem x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const DataType & CasADi::Matrix< DataType >::elem(int rr, int cc=0) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>get an element
+>
+>>  DataType & CasADi::Matrix< DataType >::elem(int rr, int cc=0)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>get a reference to an element
+-}
+imatrix_elem :: IMatrixClass a => a -> Int -> Int -> IO Int
+imatrix_elem x = casADi__Matrix_int___elem (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___elem_TIC" c_CasADi__Matrix_int___elem_TIC
+  :: Ptr IMatrix' -> CInt -> IO CInt
+casADi__Matrix_int___elem'
+  :: IMatrix -> Int -> IO Int
+casADi__Matrix_int___elem' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___elem_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_elem' :: IMatrixClass a => a -> Int -> IO Int
+imatrix_elem' x = casADi__Matrix_int___elem' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___hasNZ" c_CasADi__Matrix_int___hasNZ
+  :: Ptr IMatrix' -> CInt -> CInt -> IO CInt
+casADi__Matrix_int___hasNZ
+  :: IMatrix -> Int -> Int -> IO Bool
+casADi__Matrix_int___hasNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___hasNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns true if the matrix has a non-zero at location rr,cc.
+-}
+imatrix_hasNZ :: IMatrixClass a => a -> Int -> Int -> IO Bool
+imatrix_hasNZ x = casADi__Matrix_int___hasNZ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____nonzero__" c_CasADi__Matrix_int_____nonzero__
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int_____nonzero__
+  :: IMatrix -> IO Bool
+casADi__Matrix_int_____nonzero__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int_____nonzero__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Returns the
+>truth value of a Matrix.
+-}
+imatrix___nonzero__ :: IMatrixClass a => a -> IO Bool
+imatrix___nonzero__ x = casADi__Matrix_int_____nonzero__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub" c_CasADi__Matrix_int___setSub
+  :: Ptr IMatrix' -> Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___setSub
+  :: IMatrix -> IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___setSub x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set a submatrix.
+-}
+imatrix_setSub :: IMatrixClass a => a -> IMatrix -> Int -> Int -> IO ()
+imatrix_setSub x = casADi__Matrix_int___setSub (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC" c_CasADi__Matrix_int___setSub_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__Matrix_int___setSub'
+  :: IMatrix -> IMatrix -> Vector Int -> Int -> IO ()
+casADi__Matrix_int___setSub' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub' :: IMatrixClass a => a -> IMatrix -> Vector Int -> Int -> IO ()
+imatrix_setSub' x = casADi__Matrix_int___setSub' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> CInt -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___setSub''
+  :: IMatrix -> IMatrix -> Int -> Vector Int -> IO ()
+casADi__Matrix_int___setSub'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub'' :: IMatrixClass a => a -> IMatrix -> Int -> Vector Int -> IO ()
+imatrix_setSub'' x = casADi__Matrix_int___setSub'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___setSub'''
+  :: IMatrix -> IMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_int___setSub''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub''' :: IMatrixClass a => a -> IMatrix -> Vector Int -> Vector Int -> IO ()
+imatrix_setSub''' x = casADi__Matrix_int___setSub''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Slice' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___setSub''''
+  :: IMatrix -> IMatrix -> Slice -> Vector Int -> IO ()
+casADi__Matrix_int___setSub'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub'''' :: IMatrixClass a => a -> IMatrix -> Slice -> Vector Int -> IO ()
+imatrix_setSub'''' x = casADi__Matrix_int___setSub'''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr Slice' -> IO ()
+casADi__Matrix_int___setSub'''''
+  :: IMatrix -> IMatrix -> Vector Int -> Slice -> IO ()
+casADi__Matrix_int___setSub''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub''''' :: IMatrixClass a => a -> IMatrix -> Vector Int -> Slice -> IO ()
+imatrix_setSub''''' x = casADi__Matrix_int___setSub''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Slice' -> Ptr Slice' -> IO ()
+casADi__Matrix_int___setSub''''''
+  :: IMatrix -> IMatrix -> Slice -> Slice -> IO ()
+casADi__Matrix_int___setSub'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub'''''' :: IMatrixClass a => a -> IMatrix -> Slice -> Slice -> IO ()
+imatrix_setSub'''''' x = casADi__Matrix_int___setSub'''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___setSub'''''''
+  :: IMatrix -> IMatrix -> IMatrix -> Vector Int -> IO ()
+casADi__Matrix_int___setSub''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub''''''' :: IMatrixClass a => a -> IMatrix -> IMatrix -> Vector Int -> IO ()
+imatrix_setSub''''''' x = casADi__Matrix_int___setSub''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setSub''''''''
+  :: IMatrix -> IMatrix -> Vector Int -> IMatrix -> IO ()
+casADi__Matrix_int___setSub'''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub'''''''' :: IMatrixClass a => a -> IMatrix -> Vector Int -> IMatrix -> IO ()
+imatrix_setSub'''''''' x = casADi__Matrix_int___setSub'''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr Slice' -> IO ()
+casADi__Matrix_int___setSub'''''''''
+  :: IMatrix -> IMatrix -> IMatrix -> Slice -> IO ()
+casADi__Matrix_int___setSub''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub''''''''' :: IMatrixClass a => a -> IMatrix -> IMatrix -> Slice -> IO ()
+imatrix_setSub''''''''' x = casADi__Matrix_int___setSub''''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setSub''''''''''
+  :: IMatrix -> IMatrix -> Slice -> IMatrix -> IO ()
+casADi__Matrix_int___setSub'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub'''''''''' :: IMatrixClass a => a -> IMatrix -> Slice -> IMatrix -> IO ()
+imatrix_setSub'''''''''' x = casADi__Matrix_int___setSub'''''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setSub'''''''''''
+  :: IMatrix -> IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___setSub''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub''''''''''' :: IMatrixClass a => a -> IMatrix -> IMatrix -> IMatrix -> IO ()
+imatrix_setSub''''''''''' x = casADi__Matrix_int___setSub''''''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Slice' -> CInt -> IO ()
+casADi__Matrix_int___setSub''''''''''''
+  :: IMatrix -> IMatrix -> Slice -> Int -> IO ()
+casADi__Matrix_int___setSub'''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub'''''''''''' :: IMatrixClass a => a -> IMatrix -> Slice -> Int -> IO ()
+imatrix_setSub'''''''''''' x = casADi__Matrix_int___setSub'''''''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Sparsity' -> CInt -> IO ()
+casADi__Matrix_int___setSub'''''''''''''
+  :: IMatrix -> IMatrix -> Sparsity -> Int -> IO ()
+casADi__Matrix_int___setSub''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSub''''''''''''' :: IMatrixClass a => a -> IMatrix -> Sparsity -> Int -> IO ()
+imatrix_setSub''''''''''''' x = casADi__Matrix_int___setSub''''''''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setNZ" c_CasADi__Matrix_int___setNZ
+  :: Ptr IMatrix' -> CInt -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setNZ
+  :: IMatrix -> Int -> IMatrix -> IO ()
+casADi__Matrix_int___setNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___setNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::setNZ(int k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< DataType >::setNZ(const std::vector< int > &k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< DataType >::setNZ(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set a set of nonzeros.
+>
+>>  void CasADi::Matrix< T >::setNZ(const Slice &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>
+>Set a set of nonzeros.
+-}
+imatrix_setNZ :: IMatrixClass a => a -> Int -> IMatrix -> IO ()
+imatrix_setNZ x = casADi__Matrix_int___setNZ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setNZ_TIC" c_CasADi__Matrix_int___setNZ_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setNZ'
+  :: IMatrix -> Vector Int -> IMatrix -> IO ()
+casADi__Matrix_int___setNZ' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___setNZ_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setNZ' :: IMatrixClass a => a -> Vector Int -> IMatrix -> IO ()
+imatrix_setNZ' x = casADi__Matrix_int___setNZ' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setNZ_TIC_TIC" c_CasADi__Matrix_int___setNZ_TIC_TIC
+  :: Ptr IMatrix' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setNZ''
+  :: IMatrix -> Slice -> IMatrix -> IO ()
+casADi__Matrix_int___setNZ'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___setNZ_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setNZ'' :: IMatrixClass a => a -> Slice -> IMatrix -> IO ()
+imatrix_setNZ'' x = casADi__Matrix_int___setNZ'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setNZ_TIC_TIC_TIC" c_CasADi__Matrix_int___setNZ_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setNZ'''
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___setNZ''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___setNZ_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setNZ''' :: IMatrixClass a => a -> IMatrix -> IMatrix -> IO ()
+imatrix_setNZ''' x = casADi__Matrix_int___setNZ''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___append" c_CasADi__Matrix_int___append
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___append
+  :: IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___append x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___append x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Append a matrix
+>vertically (NOTE: only efficient if vector)
+-}
+imatrix_append :: IMatrixClass a => a -> IMatrix -> IO ()
+imatrix_append x = casADi__Matrix_int___append (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___appendColumns" c_CasADi__Matrix_int___appendColumns
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___appendColumns
+  :: IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___appendColumns x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___appendColumns x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Append a
+>matrix horizontally.
+-}
+imatrix_appendColumns :: IMatrixClass a => a -> IMatrix -> IO ()
+imatrix_appendColumns x = casADi__Matrix_int___appendColumns (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nz_indexed_one_based_assignment" c_CasADi__Matrix_int___nz_indexed_one_based_assignment
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___nz_indexed_one_based_assignment
+  :: IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___nz_indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___nz_indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::nz_indexed_one_based_assignment(int k, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a non-zero
+>
+>>  void CasADi::Matrix< T >::nz_indexed_one_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+-}
+imatrix_nz_indexed_one_based_assignment :: IMatrixClass a => a -> Int -> Int -> IO ()
+imatrix_nz_indexed_one_based_assignment x = casADi__Matrix_int___nz_indexed_one_based_assignment (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nz_indexed_zero_based_assignment" c_CasADi__Matrix_int___nz_indexed_zero_based_assignment
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___nz_indexed_zero_based_assignment
+  :: IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___nz_indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___nz_indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Indexing for interfaced languages get a non-zero
+-}
+imatrix_nz_indexed_zero_based_assignment :: IMatrixClass a => a -> Int -> Int -> IO ()
+imatrix_nz_indexed_zero_based_assignment x = casADi__Matrix_int___nz_indexed_zero_based_assignment (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nz_indexed_assignment" c_CasADi__Matrix_int___nz_indexed_assignment
+  :: Ptr IMatrix' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___nz_indexed_assignment
+  :: IMatrix -> Slice -> IMatrix -> IO ()
+casADi__Matrix_int___nz_indexed_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___nz_indexed_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Indexing for interfaced languages get a non-zero
+-}
+imatrix_nz_indexed_assignment :: IMatrixClass a => a -> Slice -> IMatrix -> IO ()
+imatrix_nz_indexed_assignment x = casADi__Matrix_int___nz_indexed_assignment (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_one_based_assignment" c_CasADi__Matrix_int___indexed_one_based_assignment
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_one_based_assignment
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(int rr, int cc, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a matrix element
+>
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(int rr, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a vector element
+-}
+imatrix_indexed_one_based_assignment :: IMatrixClass a => a -> IMatrix -> IMatrix -> IO ()
+imatrix_indexed_one_based_assignment x = casADi__Matrix_int___indexed_one_based_assignment (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_zero_based_assignment" c_CasADi__Matrix_int___indexed_zero_based_assignment
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_zero_based_assignment
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(int rr, int cc, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(int rr, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+imatrix_indexed_zero_based_assignment :: IMatrixClass a => a -> IMatrix -> IMatrix -> IO ()
+imatrix_indexed_zero_based_assignment x = casADi__Matrix_int___indexed_zero_based_assignment (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nz_indexed_one_based_assignment_TIC" c_CasADi__Matrix_int___nz_indexed_one_based_assignment_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___nz_indexed_one_based_assignment'
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___nz_indexed_one_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___nz_indexed_one_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_nz_indexed_one_based_assignment' :: IMatrixClass a => a -> IMatrix -> IMatrix -> IO ()
+imatrix_nz_indexed_one_based_assignment' x = casADi__Matrix_int___nz_indexed_one_based_assignment' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nz_indexed_zero_based_assignment_TIC" c_CasADi__Matrix_int___nz_indexed_zero_based_assignment_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___nz_indexed_zero_based_assignment'
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___nz_indexed_zero_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___nz_indexed_zero_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_nz_indexed_zero_based_assignment' :: IMatrixClass a => a -> IMatrix -> IMatrix -> IO ()
+imatrix_nz_indexed_zero_based_assignment' x = casADi__Matrix_int___nz_indexed_zero_based_assignment' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nz_indexed_assignment_TIC" c_CasADi__Matrix_int___nz_indexed_assignment_TIC
+  :: Ptr IMatrix' -> Ptr IndexList' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___nz_indexed_assignment'
+  :: IMatrix -> IndexList -> IMatrix -> IO ()
+casADi__Matrix_int___nz_indexed_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___nz_indexed_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_nz_indexed_assignment' :: IMatrixClass a => a -> IndexList -> IMatrix -> IO ()
+imatrix_nz_indexed_assignment' x = casADi__Matrix_int___nz_indexed_assignment' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_one_based_assignment_TIC" c_CasADi__Matrix_int___indexed_one_based_assignment_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> CInt -> IO ()
+casADi__Matrix_int___indexed_one_based_assignment'
+  :: IMatrix -> Int -> Int -> Int -> IO ()
+casADi__Matrix_int___indexed_one_based_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_one_based_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_one_based_assignment' :: IMatrixClass a => a -> Int -> Int -> Int -> IO ()
+imatrix_indexed_one_based_assignment' x = casADi__Matrix_int___indexed_one_based_assignment' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_zero_based_assignment_TIC" c_CasADi__Matrix_int___indexed_zero_based_assignment_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> CInt -> IO ()
+casADi__Matrix_int___indexed_zero_based_assignment'
+  :: IMatrix -> Int -> Int -> Int -> IO ()
+casADi__Matrix_int___indexed_zero_based_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_zero_based_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_zero_based_assignment' :: IMatrixClass a => a -> Int -> Int -> Int -> IO ()
+imatrix_indexed_zero_based_assignment' x = casADi__Matrix_int___indexed_zero_based_assignment' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment" c_CasADi__Matrix_int___indexed_assignment
+  :: Ptr IMatrix' -> Ptr Slice' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment
+  :: IMatrix -> Slice -> Slice -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Slice &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const IndexList &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const Slice &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const IndexList &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Sparsity &sp, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+imatrix_indexed_assignment :: IMatrixClass a => a -> Slice -> Slice -> IMatrix -> IO ()
+imatrix_indexed_assignment x = casADi__Matrix_int___indexed_assignment (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC
+  :: Ptr IMatrix' -> Ptr IndexList' -> Ptr IndexList' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment'
+  :: IMatrix -> IndexList -> IndexList -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment' :: IMatrixClass a => a -> IndexList -> IndexList -> IMatrix -> IO ()
+imatrix_indexed_assignment' x = casADi__Matrix_int___indexed_assignment' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC
+  :: Ptr IMatrix' -> Ptr Slice' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment''
+  :: IMatrix -> Slice -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment'' :: IMatrixClass a => a -> Slice -> IMatrix -> IMatrix -> IO ()
+imatrix_indexed_assignment'' x = casADi__Matrix_int___indexed_assignment'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment'''
+  :: IMatrix -> IMatrix -> Slice -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment''' :: IMatrixClass a => a -> IMatrix -> Slice -> IMatrix -> IO ()
+imatrix_indexed_assignment''' x = casADi__Matrix_int___indexed_assignment''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IndexList' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment''''
+  :: IMatrix -> IMatrix -> IndexList -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment'''' :: IMatrixClass a => a -> IMatrix -> IndexList -> IMatrix -> IO ()
+imatrix_indexed_assignment'''' x = casADi__Matrix_int___indexed_assignment'''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IndexList' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment'''''
+  :: IMatrix -> IndexList -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment''''' :: IMatrixClass a => a -> IndexList -> IMatrix -> IMatrix -> IO ()
+imatrix_indexed_assignment''''' x = casADi__Matrix_int___indexed_assignment''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment''''''
+  :: IMatrix -> IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment'''''' :: IMatrixClass a => a -> IMatrix -> IMatrix -> IMatrix -> IO ()
+imatrix_indexed_assignment'''''' x = casADi__Matrix_int___indexed_assignment'''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr Sparsity' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment'''''''
+  :: IMatrix -> Sparsity -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment''''''' :: IMatrixClass a => a -> Sparsity -> IMatrix -> IO ()
+imatrix_indexed_assignment''''''' x = casADi__Matrix_int___indexed_assignment''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_one_based_assignment_TIC_TIC" c_CasADi__Matrix_int___indexed_one_based_assignment_TIC_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___indexed_one_based_assignment''
+  :: IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___indexed_one_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_one_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_one_based_assignment'' :: IMatrixClass a => a -> Int -> Int -> IO ()
+imatrix_indexed_one_based_assignment'' x = casADi__Matrix_int___indexed_one_based_assignment'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_zero_based_assignment_TIC_TIC" c_CasADi__Matrix_int___indexed_zero_based_assignment_TIC_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___indexed_zero_based_assignment''
+  :: IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___indexed_zero_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_zero_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_zero_based_assignment'' :: IMatrixClass a => a -> Int -> Int -> IO ()
+imatrix_indexed_zero_based_assignment'' x = casADi__Matrix_int___indexed_zero_based_assignment'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment''''''''
+  :: IMatrix -> Slice -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment'''''''' :: IMatrixClass a => a -> Slice -> IMatrix -> IO ()
+imatrix_indexed_assignment'''''''' x = casADi__Matrix_int___indexed_assignment'''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IndexList' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___indexed_assignment'''''''''
+  :: IMatrix -> IndexList -> IMatrix -> IO ()
+casADi__Matrix_int___indexed_assignment''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_indexed_assignment''''''''' :: IMatrixClass a => a -> IndexList -> IMatrix -> IO ()
+imatrix_indexed_assignment''''''''' x = casADi__Matrix_int___indexed_assignment''''''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setZero" c_CasADi__Matrix_int___setZero
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___setZero
+  :: IMatrix -> IO ()
+casADi__Matrix_int___setZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___setZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set all elements
+>to zero.
+-}
+imatrix_setZero :: IMatrixClass a => a -> IO ()
+imatrix_setZero x = casADi__Matrix_int___setZero (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setAll" c_CasADi__Matrix_int___setAll
+  :: Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___setAll
+  :: IMatrix -> Int -> IO ()
+casADi__Matrix_int___setAll x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___setAll x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set all elements
+>to a value.
+-}
+imatrix_setAll :: IMatrixClass a => a -> Int -> IO ()
+imatrix_setAll x = casADi__Matrix_int___setAll (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSparse" c_CasADi__Matrix_int___setSparse
+  :: Ptr IMatrix' -> Ptr Sparsity' -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___setSparse
+  :: IMatrix -> Sparsity -> Bool -> IO IMatrix
+casADi__Matrix_int___setSparse x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___setSparse x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set sparse.
+-}
+imatrix_setSparse :: IMatrixClass a => a -> Sparsity -> Bool -> IO IMatrix
+imatrix_setSparse x = casADi__Matrix_int___setSparse (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setSparse_TIC" c_CasADi__Matrix_int___setSparse_TIC
+  :: Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___setSparse'
+  :: IMatrix -> Sparsity -> IO IMatrix
+casADi__Matrix_int___setSparse' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___setSparse_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setSparse' :: IMatrixClass a => a -> Sparsity -> IO IMatrix
+imatrix_setSparse' x = casADi__Matrix_int___setSparse' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___densify" c_CasADi__Matrix_int___densify
+  :: Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___densify
+  :: IMatrix -> Int -> IO ()
+casADi__Matrix_int___densify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___densify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Make the matrix
+>dense.
+-}
+imatrix_densify :: IMatrixClass a => a -> Int -> IO ()
+imatrix_densify x = casADi__Matrix_int___densify (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___densify_TIC" c_CasADi__Matrix_int___densify_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___densify'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___densify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___densify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_densify' :: IMatrixClass a => a -> IO ()
+imatrix_densify' x = casADi__Matrix_int___densify' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sparsify" c_CasADi__Matrix_int___sparsify
+  :: Ptr IMatrix' -> CDouble -> IO ()
+casADi__Matrix_int___sparsify
+  :: IMatrix -> Double -> IO ()
+casADi__Matrix_int___sparsify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___sparsify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Make a matrix
+>sparse by removing numerical zeros smaller in absolute value than a
+>specified tolerance.
+-}
+imatrix_sparsify :: IMatrixClass a => a -> Double -> IO ()
+imatrix_sparsify x = casADi__Matrix_int___sparsify (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sparsify_TIC" c_CasADi__Matrix_int___sparsify_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___sparsify'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___sparsify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sparsify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_sparsify' :: IMatrixClass a => a -> IO ()
+imatrix_sparsify' x = casADi__Matrix_int___sparsify' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___operator_plus" c_CasADi__Matrix_int___operator_plus
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___operator_plus
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___operator_plus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___operator_plus x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_operator_plus :: IMatrixClass a => a -> IO IMatrix
+imatrix_operator_plus x = casADi__Matrix_int___operator_plus (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___operator_minus" c_CasADi__Matrix_int___operator_minus
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___operator_minus
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___operator_minus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___operator_minus x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_operator_minus :: IMatrixClass a => a -> IO IMatrix
+imatrix_operator_minus x = casADi__Matrix_int___operator_minus (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___binary" c_CasADi__Matrix_int___binary
+  :: CInt -> Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___binary
+  :: Int -> IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___binary x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___binary x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create nodes by
+>their ID.
+-}
+imatrix_binary :: Int -> IMatrix -> IMatrix -> IO IMatrix
+imatrix_binary = casADi__Matrix_int___binary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___unary" c_CasADi__Matrix_int___unary
+  :: CInt -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___unary
+  :: Int -> IMatrix -> IO IMatrix
+casADi__Matrix_int___unary x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___unary x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create nodes by
+>their ID.
+-}
+imatrix_unary :: Int -> IMatrix -> IO IMatrix
+imatrix_unary = casADi__Matrix_int___unary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___scalar_matrix" c_CasADi__Matrix_int___scalar_matrix
+  :: CInt -> Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___scalar_matrix
+  :: Int -> IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___scalar_matrix x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___scalar_matrix x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+imatrix_scalar_matrix :: Int -> IMatrix -> IMatrix -> IO IMatrix
+imatrix_scalar_matrix = casADi__Matrix_int___scalar_matrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___matrix_scalar" c_CasADi__Matrix_int___matrix_scalar
+  :: CInt -> Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___matrix_scalar
+  :: Int -> IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___matrix_scalar x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___matrix_scalar x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+imatrix_matrix_scalar :: Int -> IMatrix -> IMatrix -> IO IMatrix
+imatrix_matrix_scalar = casADi__Matrix_int___matrix_scalar
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___matrix_matrix" c_CasADi__Matrix_int___matrix_matrix
+  :: CInt -> Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___matrix_matrix
+  :: Int -> IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___matrix_matrix x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___matrix_matrix x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+imatrix_matrix_matrix :: Int -> IMatrix -> IMatrix -> IO IMatrix
+imatrix_matrix_matrix = casADi__Matrix_int___matrix_matrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____add__" c_CasADi__Matrix_int_____add__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____add__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____add__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____add__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___add__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___add__ x = casADi__Matrix_int_____add__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____sub__" c_CasADi__Matrix_int_____sub__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____sub__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____sub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____sub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___sub__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___sub__ x = casADi__Matrix_int_____sub__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____mul__" c_CasADi__Matrix_int_____mul__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____mul__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____mul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____mul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___mul__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___mul__ x = casADi__Matrix_int_____mul__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____div__" c_CasADi__Matrix_int_____div__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____div__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____div__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____div__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___div__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___div__ x = casADi__Matrix_int_____div__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____lt__" c_CasADi__Matrix_int_____lt__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____lt__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____lt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____lt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___lt__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___lt__ x = casADi__Matrix_int_____lt__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____le__" c_CasADi__Matrix_int_____le__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____le__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____le__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____le__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___le__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___le__ x = casADi__Matrix_int_____le__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____eq__" c_CasADi__Matrix_int_____eq__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____eq__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____eq__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____eq__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___eq__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___eq__ x = casADi__Matrix_int_____eq__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____ne__" c_CasADi__Matrix_int_____ne__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____ne__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____ne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____ne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___ne__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___ne__ x = casADi__Matrix_int_____ne__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____truediv__" c_CasADi__Matrix_int_____truediv__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____truediv__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___truediv__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___truediv__ x = casADi__Matrix_int_____truediv__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____pow__" c_CasADi__Matrix_int_____pow__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____pow__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____pow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____pow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___pow__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___pow__ x = casADi__Matrix_int_____pow__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____constpow__" c_CasADi__Matrix_int_____constpow__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____constpow__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____constpow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____constpow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___constpow__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___constpow__ x = casADi__Matrix_int_____constpow__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____mpower__" c_CasADi__Matrix_int_____mpower__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____mpower__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____mpower__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____mpower__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___mpower__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___mpower__ x = casADi__Matrix_int_____mpower__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____mrdivide__" c_CasADi__Matrix_int_____mrdivide__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____mrdivide__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____mrdivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____mrdivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+imatrix___mrdivide__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___mrdivide__ x = casADi__Matrix_int_____mrdivide__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_full" c_CasADi__Matrix_int___mul_full
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___mul_full
+  :: IMatrix -> IMatrix -> Sparsity -> IO IMatrix
+casADi__Matrix_int___mul_full x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul_full x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Matrix-matrix
+>product.
+-}
+imatrix_mul_full :: IMatrixClass a => a -> IMatrix -> Sparsity -> IO IMatrix
+imatrix_mul_full x = casADi__Matrix_int___mul_full (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_full_TIC" c_CasADi__Matrix_int___mul_full_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___mul_full'
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___mul_full' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___mul_full_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul_full' :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_mul_full' x = casADi__Matrix_int___mul_full' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul" c_CasADi__Matrix_int___mul
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___mul
+  :: IMatrix -> IMatrix -> Sparsity -> IO IMatrix
+casADi__Matrix_int___mul x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Matrix-matrix
+>product.
+-}
+imatrix_mul :: IMatrixClass a => a -> IMatrix -> Sparsity -> IO IMatrix
+imatrix_mul x = casADi__Matrix_int___mul (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_TIC" c_CasADi__Matrix_int___mul_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___mul'
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___mul' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___mul_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul' :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_mul' x = casADi__Matrix_int___mul' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_no_alloc_nn" c_CasADi__Matrix_int___mul_no_alloc_nn
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___mul_no_alloc_nn
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___mul_no_alloc_nn x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul_no_alloc_nn x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul_no_alloc_nn :: IMatrix -> IMatrix -> IMatrix -> IO ()
+imatrix_mul_no_alloc_nn = casADi__Matrix_int___mul_no_alloc_nn
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_no_alloc_tn" c_CasADi__Matrix_int___mul_no_alloc_tn
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___mul_no_alloc_tn
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___mul_no_alloc_tn x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul_no_alloc_tn x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul_no_alloc_tn :: IMatrix -> IMatrix -> IMatrix -> IO ()
+imatrix_mul_no_alloc_tn = casADi__Matrix_int___mul_no_alloc_tn
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_no_alloc_nt" c_CasADi__Matrix_int___mul_no_alloc_nt
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___mul_no_alloc_nt
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___mul_no_alloc_nt x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul_no_alloc_nt x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul_no_alloc_nt :: IMatrix -> IMatrix -> IMatrix -> IO ()
+imatrix_mul_no_alloc_nt = casADi__Matrix_int___mul_no_alloc_nt
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_no_alloc_tn_TIC" c_CasADi__Matrix_int___mul_no_alloc_tn_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___mul_no_alloc_tn'
+  :: IMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_int___mul_no_alloc_tn' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul_no_alloc_tn_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul_no_alloc_tn' :: IMatrix -> Vector Int -> Vector Int -> IO ()
+imatrix_mul_no_alloc_tn' = casADi__Matrix_int___mul_no_alloc_tn'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___mul_no_alloc_nn_TIC" c_CasADi__Matrix_int___mul_no_alloc_nn_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___mul_no_alloc_nn'
+  :: IMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_int___mul_no_alloc_nn' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___mul_no_alloc_nn_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_mul_no_alloc_nn' :: IMatrix -> Vector Int -> Vector Int -> IO ()
+imatrix_mul_no_alloc_nn' = casADi__Matrix_int___mul_no_alloc_nn'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___quad_form" c_CasADi__Matrix_int___quad_form
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> IO CInt
+casADi__Matrix_int___quad_form
+  :: IMatrix -> Vector Int -> IO Int
+casADi__Matrix_int___quad_form x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___quad_form x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_quad_form :: IMatrix -> Vector Int -> IO Int
+imatrix_quad_form = casADi__Matrix_int___quad_form
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___trans" c_CasADi__Matrix_int___trans
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___trans
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___trans x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___trans x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]   Transpose the
+>matrix.
+-}
+imatrix_trans :: IMatrixClass a => a -> IO IMatrix
+imatrix_trans x = casADi__Matrix_int___trans (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sin" c_CasADi__Matrix_int___sin
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___sin
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___sin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sin x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_sin :: IMatrixClass a => a -> IO IMatrix
+imatrix_sin x = casADi__Matrix_int___sin (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___cos" c_CasADi__Matrix_int___cos
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___cos
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___cos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___cos x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_cos :: IMatrixClass a => a -> IO IMatrix
+imatrix_cos x = casADi__Matrix_int___cos (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___tan" c_CasADi__Matrix_int___tan
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___tan
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___tan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___tan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_tan :: IMatrixClass a => a -> IO IMatrix
+imatrix_tan x = casADi__Matrix_int___tan (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arcsin" c_CasADi__Matrix_int___arcsin
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arcsin
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___arcsin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___arcsin x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arcsin :: IMatrixClass a => a -> IO IMatrix
+imatrix_arcsin x = casADi__Matrix_int___arcsin (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arccos" c_CasADi__Matrix_int___arccos
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arccos
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___arccos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___arccos x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arccos :: IMatrixClass a => a -> IO IMatrix
+imatrix_arccos x = casADi__Matrix_int___arccos (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arctan" c_CasADi__Matrix_int___arctan
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arctan
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___arctan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___arctan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arctan :: IMatrixClass a => a -> IO IMatrix
+imatrix_arctan x = casADi__Matrix_int___arctan (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___exp" c_CasADi__Matrix_int___exp
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___exp
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___exp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___exp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_exp :: IMatrixClass a => a -> IO IMatrix
+imatrix_exp x = casADi__Matrix_int___exp (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___log" c_CasADi__Matrix_int___log
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___log
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___log x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___log x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_log :: IMatrixClass a => a -> IO IMatrix
+imatrix_log x = casADi__Matrix_int___log (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sqrt" c_CasADi__Matrix_int___sqrt
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___sqrt
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___sqrt x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sqrt x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_sqrt :: IMatrixClass a => a -> IO IMatrix
+imatrix_sqrt x = casADi__Matrix_int___sqrt (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___floor" c_CasADi__Matrix_int___floor
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___floor
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___floor x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___floor x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_floor :: IMatrixClass a => a -> IO IMatrix
+imatrix_floor x = casADi__Matrix_int___floor (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___ceil" c_CasADi__Matrix_int___ceil
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___ceil
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___ceil x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___ceil x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_ceil :: IMatrixClass a => a -> IO IMatrix
+imatrix_ceil x = casADi__Matrix_int___ceil (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___fabs" c_CasADi__Matrix_int___fabs
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___fabs
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___fabs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___fabs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_fabs :: IMatrixClass a => a -> IO IMatrix
+imatrix_fabs x = casADi__Matrix_int___fabs (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sign" c_CasADi__Matrix_int___sign
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___sign
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___sign x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sign x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_sign :: IMatrixClass a => a -> IO IMatrix
+imatrix_sign x = casADi__Matrix_int___sign (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int_____copysign__" c_CasADi__Matrix_int_____copysign__
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int_____copysign__
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int_____copysign__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int_____copysign__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix___copysign__ :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix___copysign__ x = casADi__Matrix_int_____copysign__ (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___erfinv" c_CasADi__Matrix_int___erfinv
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___erfinv
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___erfinv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___erfinv x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_erfinv :: IMatrixClass a => a -> IO IMatrix
+imatrix_erfinv x = casADi__Matrix_int___erfinv (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___fmin" c_CasADi__Matrix_int___fmin
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___fmin
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___fmin x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___fmin x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_fmin :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_fmin x = casADi__Matrix_int___fmin (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___fmax" c_CasADi__Matrix_int___fmax
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___fmax
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___fmax x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___fmax x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_fmax :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_fmax x = casADi__Matrix_int___fmax (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___erf" c_CasADi__Matrix_int___erf
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___erf
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___erf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___erf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_erf :: IMatrixClass a => a -> IO IMatrix
+imatrix_erf x = casADi__Matrix_int___erf (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sinh" c_CasADi__Matrix_int___sinh
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___sinh
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___sinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sinh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_sinh :: IMatrixClass a => a -> IO IMatrix
+imatrix_sinh x = casADi__Matrix_int___sinh (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___cosh" c_CasADi__Matrix_int___cosh
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___cosh
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___cosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___cosh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_cosh :: IMatrixClass a => a -> IO IMatrix
+imatrix_cosh x = casADi__Matrix_int___cosh (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___tanh" c_CasADi__Matrix_int___tanh
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___tanh
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___tanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___tanh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_tanh :: IMatrixClass a => a -> IO IMatrix
+imatrix_tanh x = casADi__Matrix_int___tanh (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arcsinh" c_CasADi__Matrix_int___arcsinh
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arcsinh
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___arcsinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___arcsinh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arcsinh :: IMatrixClass a => a -> IO IMatrix
+imatrix_arcsinh x = casADi__Matrix_int___arcsinh (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arccosh" c_CasADi__Matrix_int___arccosh
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arccosh
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___arccosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___arccosh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arccosh :: IMatrixClass a => a -> IO IMatrix
+imatrix_arccosh x = casADi__Matrix_int___arccosh (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arctanh" c_CasADi__Matrix_int___arctanh
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arctanh
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___arctanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___arctanh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arctanh :: IMatrixClass a => a -> IO IMatrix
+imatrix_arctanh x = casADi__Matrix_int___arctanh (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___arctan2" c_CasADi__Matrix_int___arctan2
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___arctan2
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___arctan2 x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___arctan2 x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_arctan2 :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_arctan2 x = casADi__Matrix_int___arctan2 (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___log10" c_CasADi__Matrix_int___log10
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___log10
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___log10 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___log10 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+imatrix_log10 :: IMatrixClass a => a -> IO IMatrix
+imatrix_log10 x = casADi__Matrix_int___log10 (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___printme" c_CasADi__Matrix_int___printme
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___printme
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___printme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___printme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_printme :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_printme x = casADi__Matrix_int___printme (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___logic_not" c_CasADi__Matrix_int___logic_not
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___logic_not
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___logic_not x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___logic_not x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_logic_not :: IMatrixClass a => a -> IO IMatrix
+imatrix_logic_not x = casADi__Matrix_int___logic_not (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___logic_and" c_CasADi__Matrix_int___logic_and
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___logic_and
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___logic_and x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___logic_and x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_logic_and :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_logic_and x = casADi__Matrix_int___logic_and (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___logic_or" c_CasADi__Matrix_int___logic_or
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___logic_or
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___logic_or x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___logic_or x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_logic_or :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_logic_or x = casADi__Matrix_int___logic_or (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___if_else_zero" c_CasADi__Matrix_int___if_else_zero
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___if_else_zero
+  :: IMatrix -> IMatrix -> IO IMatrix
+casADi__Matrix_int___if_else_zero x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___if_else_zero x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+imatrix_if_else_zero :: IMatrixClass a => a -> IMatrix -> IO IMatrix
+imatrix_if_else_zero x = casADi__Matrix_int___if_else_zero (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setMaxNumCallsInPrint" c_CasADi__Matrix_int___setMaxNumCallsInPrint
+  :: CLong -> IO ()
+casADi__Matrix_int___setMaxNumCallsInPrint
+  :: Int -> IO ()
+casADi__Matrix_int___setMaxNumCallsInPrint x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___setMaxNumCallsInPrint x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setMaxNumCallsInPrint :: Int -> IO ()
+imatrix_setMaxNumCallsInPrint = casADi__Matrix_int___setMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setMaxNumCallsInPrint_TIC" c_CasADi__Matrix_int___setMaxNumCallsInPrint_TIC
+  :: IO ()
+casADi__Matrix_int___setMaxNumCallsInPrint'
+  :: IO ()
+casADi__Matrix_int___setMaxNumCallsInPrint'  =
+  c_CasADi__Matrix_int___setMaxNumCallsInPrint_TIC  >>= wrapReturn
+
+-- classy wrapper
+imatrix_setMaxNumCallsInPrint' :: IO ()
+imatrix_setMaxNumCallsInPrint' = casADi__Matrix_int___setMaxNumCallsInPrint'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___getMaxNumCallsInPrint" c_CasADi__Matrix_int___getMaxNumCallsInPrint
+  :: IO CLong
+casADi__Matrix_int___getMaxNumCallsInPrint
+  :: IO Int
+casADi__Matrix_int___getMaxNumCallsInPrint  =
+  c_CasADi__Matrix_int___getMaxNumCallsInPrint  >>= wrapReturn
+
+-- classy wrapper
+imatrix_getMaxNumCallsInPrint :: IO Int
+imatrix_getMaxNumCallsInPrint = casADi__Matrix_int___getMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setEqualityCheckingDepth" c_CasADi__Matrix_int___setEqualityCheckingDepth
+  :: CInt -> IO ()
+casADi__Matrix_int___setEqualityCheckingDepth
+  :: Int -> IO ()
+casADi__Matrix_int___setEqualityCheckingDepth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___setEqualityCheckingDepth x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_setEqualityCheckingDepth :: Int -> IO ()
+imatrix_setEqualityCheckingDepth = casADi__Matrix_int___setEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setEqualityCheckingDepth_TIC" c_CasADi__Matrix_int___setEqualityCheckingDepth_TIC
+  :: IO ()
+casADi__Matrix_int___setEqualityCheckingDepth'
+  :: IO ()
+casADi__Matrix_int___setEqualityCheckingDepth'  =
+  c_CasADi__Matrix_int___setEqualityCheckingDepth_TIC  >>= wrapReturn
+
+-- classy wrapper
+imatrix_setEqualityCheckingDepth' :: IO ()
+imatrix_setEqualityCheckingDepth' = casADi__Matrix_int___setEqualityCheckingDepth'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___getEqualityCheckingDepth" c_CasADi__Matrix_int___getEqualityCheckingDepth
+  :: IO CInt
+casADi__Matrix_int___getEqualityCheckingDepth
+  :: IO Int
+casADi__Matrix_int___getEqualityCheckingDepth  =
+  c_CasADi__Matrix_int___getEqualityCheckingDepth  >>= wrapReturn
+
+-- classy wrapper
+imatrix_getEqualityCheckingDepth :: IO Int
+imatrix_getEqualityCheckingDepth = casADi__Matrix_int___getEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___className" c_CasADi__Matrix_int___className
+  :: IO (Ptr StdString')
+casADi__Matrix_int___className
+  :: IO String
+casADi__Matrix_int___className  =
+  c_CasADi__Matrix_int___className  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Printing.
+-}
+imatrix_className :: IO String
+imatrix_className = casADi__Matrix_int___className
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___printScalar_TIC" c_CasADi__Matrix_int___printScalar_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___printScalar'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___printScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___printScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_printScalar' :: IMatrixClass a => a -> IO ()
+imatrix_printScalar' x = casADi__Matrix_int___printScalar' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___printVector_TIC" c_CasADi__Matrix_int___printVector_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___printVector'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___printVector' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___printVector_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_printVector' :: IMatrixClass a => a -> IO ()
+imatrix_printVector' x = casADi__Matrix_int___printVector' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___printDense_TIC" c_CasADi__Matrix_int___printDense_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___printDense'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___printDense' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___printDense_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_printDense' :: IMatrixClass a => a -> IO ()
+imatrix_printDense' x = casADi__Matrix_int___printDense' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___printSparse_TIC" c_CasADi__Matrix_int___printSparse_TIC
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___printSparse'
+  :: IMatrix -> IO ()
+casADi__Matrix_int___printSparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___printSparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_printSparse' :: IMatrixClass a => a -> IO ()
+imatrix_printSparse' x = casADi__Matrix_int___printSparse' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___row" c_CasADi__Matrix_int___row
+  :: Ptr IMatrix' -> CInt -> IO CInt
+casADi__Matrix_int___row
+  :: IMatrix -> Int -> IO Int
+casADi__Matrix_int___row x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___row x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+imatrix_row :: IMatrixClass a => a -> Int -> IO Int
+imatrix_row x = casADi__Matrix_int___row (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___colind" c_CasADi__Matrix_int___colind
+  :: Ptr IMatrix' -> CInt -> IO CInt
+casADi__Matrix_int___colind
+  :: IMatrix -> Int -> IO Int
+casADi__Matrix_int___colind x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___colind x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+imatrix_colind :: IMatrixClass a => a -> Int -> IO Int
+imatrix_colind x = casADi__Matrix_int___colind (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___clear" c_CasADi__Matrix_int___clear
+  :: Ptr IMatrix' -> IO ()
+casADi__Matrix_int___clear
+  :: IMatrix -> IO ()
+casADi__Matrix_int___clear x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___clear x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+imatrix_clear :: IMatrixClass a => a -> IO ()
+imatrix_clear x = casADi__Matrix_int___clear (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___resize" c_CasADi__Matrix_int___resize
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___resize
+  :: IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___resize x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___resize x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+imatrix_resize :: IMatrixClass a => a -> Int -> Int -> IO ()
+imatrix_resize x = casADi__Matrix_int___resize (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___reserve" c_CasADi__Matrix_int___reserve
+  :: Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___reserve
+  :: IMatrix -> Int -> IO ()
+casADi__Matrix_int___reserve x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___reserve x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+imatrix_reserve :: IMatrixClass a => a -> Int -> IO ()
+imatrix_reserve x = casADi__Matrix_int___reserve (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___reserve_TIC" c_CasADi__Matrix_int___reserve_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___reserve'
+  :: IMatrix -> Int -> Int -> IO ()
+casADi__Matrix_int___reserve' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___reserve_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_reserve' :: IMatrixClass a => a -> Int -> Int -> IO ()
+imatrix_reserve' x = casADi__Matrix_int___reserve' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___erase" c_CasADi__Matrix_int___erase
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___erase
+  :: IMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_int___erase x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___erase x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Erase a submatrix
+>Erase rows and/or columns of a matrix.
+-}
+imatrix_erase :: IMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
+imatrix_erase x = casADi__Matrix_int___erase (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___remove" c_CasADi__Matrix_int___remove
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___remove
+  :: IMatrix -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_int___remove x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___remove x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+> [INTERNAL]  Remove cols or
+>rows Rremove/delete rows and/or columns of a matrix.
+-}
+imatrix_remove :: IMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
+imatrix_remove x = casADi__Matrix_int___remove (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___enlarge" c_CasADi__Matrix_int___enlarge
+  :: Ptr IMatrix' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___enlarge
+  :: IMatrix -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_int___enlarge x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Matrix_int___enlarge x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Enlarge matrix
+>Make the matrix larger by inserting empty rows and columns, keeping the
+>existing non-zeros.
+-}
+imatrix_enlarge :: IMatrixClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+imatrix_enlarge x = casADi__Matrix_int___enlarge (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___data" c_CasADi__Matrix_int___data
+  :: Ptr IMatrix' -> IO (Ptr (CppVec CInt))
+casADi__Matrix_int___data
+  :: IMatrix -> IO (Vector Int)
+casADi__Matrix_int___data x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___data x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::vector< DataType > & CasADi::Matrix< DataType >::data()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Access the non-zero elements.
+>
+>>  const std::vector< DataType > & CasADi::Matrix< DataType >::data() const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Const access the non-zero elements.
+-}
+imatrix_data :: IMatrixClass a => a -> IO (Vector Int)
+imatrix_data x = casADi__Matrix_int___data (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___sparsityRef" c_CasADi__Matrix_int___sparsityRef
+  :: Ptr IMatrix' -> IO (Ptr Sparsity')
+casADi__Matrix_int___sparsityRef
+  :: IMatrix -> IO Sparsity
+casADi__Matrix_int___sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Access the
+>sparsity, make a copy if there are multiple references to it.
+-}
+imatrix_sparsityRef :: IMatrixClass a => a -> IO Sparsity
+imatrix_sparsityRef x = casADi__Matrix_int___sparsityRef (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___set" c_CasADi__Matrix_int___set
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___set
+  :: IMatrix -> Int -> SparsityType -> IO ()
+casADi__Matrix_int___set x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___set x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::set(DataType val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, scalar.
+>
+>>  void CasADi::Matrix< DataType >::set(const std::vector< DataType > &val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, vector.
+>
+>>  void CasADi::Matrix< DataType >::set(const Matrix< DataType > &val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, Matrix.
+>
+>>  void CasADi::Matrix< DataType >::set(const DataType *val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Legacy - use setArray instead.
+-}
+imatrix_set :: IMatrixClass a => a -> Int -> SparsityType -> IO ()
+imatrix_set x = casADi__Matrix_int___set (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___set_TIC" c_CasADi__Matrix_int___set_TIC
+  :: Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___set'
+  :: IMatrix -> Int -> IO ()
+casADi__Matrix_int___set' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___set_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_set' :: IMatrixClass a => a -> Int -> IO ()
+imatrix_set' x = casADi__Matrix_int___set' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___get" c_CasADi__Matrix_int___get
+  :: Ptr IMatrix' -> CInt -> CInt -> IO ()
+casADi__Matrix_int___get
+  :: IMatrix -> Int -> SparsityType -> IO ()
+casADi__Matrix_int___get x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___get x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::get(DataType &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, scalar.
+>
+>>  void CasADi::Matrix< DataType >::get(std::vector< DataType > &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, vector.
+>
+>>  void CasADi::Matrix< DataType >::get(Matrix< DataType > &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, Matrix.
+>
+>>  void CasADi::Matrix< DataType >::get(DataType *val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Legacy - use getArray instead.
+-}
+imatrix_get :: IMatrixClass a => a -> Int -> SparsityType -> IO ()
+imatrix_get x = casADi__Matrix_int___get (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___get_TIC" c_CasADi__Matrix_int___get_TIC
+  :: Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___get'
+  :: IMatrix -> Int -> IO ()
+casADi__Matrix_int___get' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___get_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_get' :: IMatrixClass a => a -> Int -> IO ()
+imatrix_get' x = casADi__Matrix_int___get' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___set_TIC_TIC" c_CasADi__Matrix_int___set_TIC_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__Matrix_int___set''
+  :: IMatrix -> Vector Int -> SparsityType -> IO ()
+casADi__Matrix_int___set'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___set_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_set'' :: IMatrixClass a => a -> Vector Int -> SparsityType -> IO ()
+imatrix_set'' x = casADi__Matrix_int___set'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___set_TIC_TIC_TIC" c_CasADi__Matrix_int___set_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___set'''
+  :: IMatrix -> Vector Int -> IO ()
+casADi__Matrix_int___set''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___set_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_set''' :: IMatrixClass a => a -> Vector Int -> IO ()
+imatrix_set''' x = casADi__Matrix_int___set''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___get_TIC_TIC" c_CasADi__Matrix_int___get_TIC_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__Matrix_int___get''
+  :: IMatrix -> Vector Int -> SparsityType -> IO ()
+casADi__Matrix_int___get'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___get_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_get'' :: IMatrixClass a => a -> Vector Int -> SparsityType -> IO ()
+imatrix_get'' x = casADi__Matrix_int___get'' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___get_TIC_TIC_TIC" c_CasADi__Matrix_int___get_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_int___get'''
+  :: IMatrix -> Vector Int -> IO ()
+casADi__Matrix_int___get''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___get_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_get''' :: IMatrixClass a => a -> Vector Int -> IO ()
+imatrix_get''' x = casADi__Matrix_int___get''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___set_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___set_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___set''''
+  :: IMatrix -> IMatrix -> SparsityType -> IO ()
+casADi__Matrix_int___set'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___set_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_set'''' :: IMatrixClass a => a -> IMatrix -> SparsityType -> IO ()
+imatrix_set'''' x = casADi__Matrix_int___set'''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___set_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___set_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___set'''''
+  :: IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___set''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___set_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_set''''' :: IMatrixClass a => a -> IMatrix -> IO ()
+imatrix_set''''' x = casADi__Matrix_int___set''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___get_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___get_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> CInt -> IO ()
+casADi__Matrix_int___get''''
+  :: IMatrix -> IMatrix -> SparsityType -> IO ()
+casADi__Matrix_int___get'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___get_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_get'''' :: IMatrixClass a => a -> IMatrix -> SparsityType -> IO ()
+imatrix_get'''' x = casADi__Matrix_int___get'''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___get_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___get_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_int___get'''''
+  :: IMatrix -> IMatrix -> IO ()
+casADi__Matrix_int___get''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___get_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_get''''' :: IMatrixClass a => a -> IMatrix -> IO ()
+imatrix_get''''' x = casADi__Matrix_int___get''''' (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___triplet" c_CasADi__Matrix_int___triplet
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr IMatrix')
+casADi__Matrix_int___triplet
+  :: Vector Int -> Vector Int -> Vector Int -> IO IMatrix
+casADi__Matrix_int___triplet x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___triplet x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+imatrix_triplet :: Vector Int -> Vector Int -> Vector Int -> IO IMatrix
+imatrix_triplet = casADi__Matrix_int___triplet
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___triplet_TIC" c_CasADi__Matrix_int___triplet_TIC
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___triplet'
+  :: Vector Int -> Vector Int -> Vector Int -> Int -> Int -> IO IMatrix
+casADi__Matrix_int___triplet' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Matrix_int___triplet_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+imatrix_triplet' :: Vector Int -> Vector Int -> Vector Int -> Int -> Int -> IO IMatrix
+imatrix_triplet' = casADi__Matrix_int___triplet'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___inf" c_CasADi__Matrix_int___inf
+  :: Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___inf
+  :: Sparsity -> IO IMatrix
+casADi__Matrix_int___inf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___inf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix with
+>all inf
+-}
+imatrix_inf :: Sparsity -> IO IMatrix
+imatrix_inf = casADi__Matrix_int___inf
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___inf_TIC" c_CasADi__Matrix_int___inf_TIC
+  :: CInt -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___inf'
+  :: Int -> Int -> IO IMatrix
+casADi__Matrix_int___inf' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___inf_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_inf' :: Int -> Int -> IO IMatrix
+imatrix_inf' = casADi__Matrix_int___inf'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___inf_TIC_TIC" c_CasADi__Matrix_int___inf_TIC_TIC
+  :: CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___inf''
+  :: Int -> IO IMatrix
+casADi__Matrix_int___inf'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___inf_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_inf'' :: Int -> IO IMatrix
+imatrix_inf'' = casADi__Matrix_int___inf''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___inf_TIC_TIC_TIC" c_CasADi__Matrix_int___inf_TIC_TIC_TIC
+  :: IO (Ptr IMatrix')
+casADi__Matrix_int___inf'''
+  :: IO IMatrix
+casADi__Matrix_int___inf'''  =
+  c_CasADi__Matrix_int___inf_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+imatrix_inf''' :: IO IMatrix
+imatrix_inf''' = casADi__Matrix_int___inf'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nan" c_CasADi__Matrix_int___nan
+  :: Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___nan
+  :: Sparsity -> IO IMatrix
+casADi__Matrix_int___nan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___nan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix with
+>all nan
+-}
+imatrix_nan :: Sparsity -> IO IMatrix
+imatrix_nan = casADi__Matrix_int___nan
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nan_TIC" c_CasADi__Matrix_int___nan_TIC
+  :: CInt -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___nan'
+  :: Int -> Int -> IO IMatrix
+casADi__Matrix_int___nan' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___nan_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_nan' :: Int -> Int -> IO IMatrix
+imatrix_nan' = casADi__Matrix_int___nan'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nan_TIC_TIC" c_CasADi__Matrix_int___nan_TIC_TIC
+  :: CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___nan''
+  :: Int -> IO IMatrix
+casADi__Matrix_int___nan'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___nan_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_nan'' :: Int -> IO IMatrix
+imatrix_nan'' = casADi__Matrix_int___nan''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___nan_TIC_TIC_TIC" c_CasADi__Matrix_int___nan_TIC_TIC_TIC
+  :: IO (Ptr IMatrix')
+casADi__Matrix_int___nan'''
+  :: IO IMatrix
+casADi__Matrix_int___nan'''  =
+  c_CasADi__Matrix_int___nan_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+imatrix_nan''' :: IO IMatrix
+imatrix_nan''' = casADi__Matrix_int___nan'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___repmat" c_CasADi__Matrix_int___repmat
+  :: CInt -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___repmat
+  :: Int -> Sparsity -> IO IMatrix
+casADi__Matrix_int___repmat x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___repmat x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix
+>by repeating an existing matrix
+-}
+imatrix_repmat :: Int -> Sparsity -> IO IMatrix
+imatrix_repmat = casADi__Matrix_int___repmat
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___repmat_TIC" c_CasADi__Matrix_int___repmat_TIC
+  :: Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___repmat'
+  :: IMatrix -> Sparsity -> IO IMatrix
+casADi__Matrix_int___repmat' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___repmat_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_repmat' :: IMatrix -> Sparsity -> IO IMatrix
+imatrix_repmat' = casADi__Matrix_int___repmat'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___repmat_TIC_TIC" c_CasADi__Matrix_int___repmat_TIC_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___repmat''
+  :: IMatrix -> Int -> Int -> IO IMatrix
+casADi__Matrix_int___repmat'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___repmat_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix_repmat'' :: IMatrix -> Int -> Int -> IO IMatrix
+imatrix_repmat'' = casADi__Matrix_int___repmat''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___repmat_TIC_TIC_TIC" c_CasADi__Matrix_int___repmat_TIC_TIC_TIC
+  :: Ptr IMatrix' -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___repmat'''
+  :: IMatrix -> Int -> IO IMatrix
+casADi__Matrix_int___repmat''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___repmat_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix_repmat''' :: IMatrix -> Int -> IO IMatrix
+imatrix_repmat''' = casADi__Matrix_int___repmat'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___eye" c_CasADi__Matrix_int___eye
+  :: CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___eye
+  :: Int -> IO IMatrix
+casADi__Matrix_int___eye x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___eye x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix_eye :: Int -> IO IMatrix
+imatrix_eye = casADi__Matrix_int___eye
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isRegular" c_CasADi__Matrix_int___isRegular
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isRegular
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isRegular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isRegular x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Checks if
+>expression does not contain NaN or Inf.
+-}
+imatrix_isRegular :: IMatrixClass a => a -> IO Bool
+imatrix_isRegular x = casADi__Matrix_int___isRegular (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isSmooth" c_CasADi__Matrix_int___isSmooth
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isSmooth
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isSmooth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isSmooth x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>smooth.
+-}
+imatrix_isSmooth :: IMatrixClass a => a -> IO Bool
+imatrix_isSmooth x = casADi__Matrix_int___isSmooth (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isSymbolic" c_CasADi__Matrix_int___isSymbolic
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isSymbolic
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isSymbolic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isSymbolic x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>symbolic (Dense) Sparse matrices invariable return false.
+-}
+imatrix_isSymbolic :: IMatrixClass a => a -> IO Bool
+imatrix_isSymbolic x = casADi__Matrix_int___isSymbolic (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isSymbolicSparse" c_CasADi__Matrix_int___isSymbolicSparse
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isSymbolicSparse
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isSymbolicSparse x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isSymbolicSparse x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check
+>if symbolic Sparse matrices can return true if all non-zero elements are
+>symbolic.
+-}
+imatrix_isSymbolicSparse :: IMatrixClass a => a -> IO Bool
+imatrix_isSymbolicSparse x = casADi__Matrix_int___isSymbolicSparse (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isConstant" c_CasADi__Matrix_int___isConstant
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isConstant
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isConstant x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isConstant x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>matrix is constant (note that false negative answers are possible)
+-}
+imatrix_isConstant :: IMatrixClass a => a -> IO Bool
+imatrix_isConstant x = casADi__Matrix_int___isConstant (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isInteger" c_CasADi__Matrix_int___isInteger
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isInteger
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isInteger x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isInteger x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>matrix is integer-valued (note that false negative answers are possible)
+-}
+imatrix_isInteger :: IMatrixClass a => a -> IO Bool
+imatrix_isInteger x = casADi__Matrix_int___isInteger (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isZero" c_CasADi__Matrix_int___isZero
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isZero
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is 0 (note that false negative answers are possible)
+-}
+imatrix_isZero :: IMatrixClass a => a -> IO Bool
+imatrix_isZero x = casADi__Matrix_int___isZero (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isOne" c_CasADi__Matrix_int___isOne
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isOne
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is 1 (note that false negative answers are possible)
+-}
+imatrix_isOne :: IMatrixClass a => a -> IO Bool
+imatrix_isOne x = casADi__Matrix_int___isOne (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isMinusOne" c_CasADi__Matrix_int___isMinusOne
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isMinusOne
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isMinusOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isMinusOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is -1 (note that false negative answers are possible)
+-}
+imatrix_isMinusOne :: IMatrixClass a => a -> IO Bool
+imatrix_isMinusOne x = casADi__Matrix_int___isMinusOne (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isIdentity" c_CasADi__Matrix_int___isIdentity
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isIdentity
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___isIdentity x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___isIdentity x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is an identity matrix (note that false negative answers are possible)
+-}
+imatrix_isIdentity :: IMatrixClass a => a -> IO Bool
+imatrix_isIdentity x = casADi__Matrix_int___isIdentity (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___isEqual" c_CasADi__Matrix_int___isEqual
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___isEqual
+  :: IMatrix -> IMatrix -> IO Bool
+casADi__Matrix_int___isEqual x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___isEqual x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if two
+>expressions are equal May give false negatives.
+>
+>Note: does not work when CasadiOptions.setSimplificationOnTheFly(False) was
+>called
+-}
+imatrix_isEqual :: IMatrixClass a => a -> IMatrix -> IO Bool
+imatrix_isEqual x = casADi__Matrix_int___isEqual (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___hasNonStructuralZeros" c_CasADi__Matrix_int___hasNonStructuralZeros
+  :: Ptr IMatrix' -> IO CInt
+casADi__Matrix_int___hasNonStructuralZeros
+  :: IMatrix -> IO Bool
+casADi__Matrix_int___hasNonStructuralZeros x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___hasNonStructuralZeros x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Check if the matrix has any zero entries which are not structural zeros.
+-}
+imatrix_hasNonStructuralZeros :: IMatrixClass a => a -> IO Bool
+imatrix_hasNonStructuralZeros x = casADi__Matrix_int___hasNonStructuralZeros (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___getValue" c_CasADi__Matrix_int___getValue
+  :: Ptr IMatrix' -> IO CDouble
+casADi__Matrix_int___getValue
+  :: IMatrix -> IO Double
+casADi__Matrix_int___getValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___getValue x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get double
+>value (only if constant)
+-}
+imatrix_getValue :: IMatrixClass a => a -> IO Double
+imatrix_getValue x = casADi__Matrix_int___getValue (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___getName" c_CasADi__Matrix_int___getName
+  :: Ptr IMatrix' -> IO (Ptr StdString')
+casADi__Matrix_int___getName
+  :: IMatrix -> IO String
+casADi__Matrix_int___getName x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___getName x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get name (only
+>if symbolic scalar)
+-}
+imatrix_getName :: IMatrixClass a => a -> IO String
+imatrix_getName x = casADi__Matrix_int___getName (castIMatrix x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setPrecision" c_CasADi__Matrix_int___setPrecision
+  :: CInt -> IO ()
+casADi__Matrix_int___setPrecision
+  :: Int -> IO ()
+casADi__Matrix_int___setPrecision x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___setPrecision x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+imatrix_setPrecision :: Int -> IO ()
+imatrix_setPrecision = casADi__Matrix_int___setPrecision
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setWidth" c_CasADi__Matrix_int___setWidth
+  :: CInt -> IO ()
+casADi__Matrix_int___setWidth
+  :: Int -> IO ()
+casADi__Matrix_int___setWidth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___setWidth x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+imatrix_setWidth :: Int -> IO ()
+imatrix_setWidth = casADi__Matrix_int___setWidth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___setScientific" c_CasADi__Matrix_int___setScientific
+  :: CInt -> IO ()
+casADi__Matrix_int___setScientific
+  :: Bool -> IO ()
+casADi__Matrix_int___setScientific x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___setScientific x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+imatrix_setScientific :: Bool -> IO ()
+imatrix_setScientific = casADi__Matrix_int___setScientific
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix" c_CasADi__Matrix_int___IMatrix
+  :: IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix
+  :: IO IMatrix
+casADi__Matrix_int___IMatrix  =
+  c_CasADi__Matrix_int___IMatrix  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol)
+>
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol, const DataType &val)
+>
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol, const std::vector< int > &colind, const std::vector< int > &row, const std::vector< DataType > &d=std::vector< DataType >())
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Sparsity &sparsity, const DataType &val=DataType(0))
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Sparse matrix with a given sparsity.
+>
+>>  CasADi::Matrix< DataType >::Matrix()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>constructors
+>
+>empty 0-by-0 matrix constructor
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Copy constructor.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< std::vector< DataType > > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Dense matrix constructor with data given as vector of vectors.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Sparsity &sparsity, const std::vector< DataType > &d)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Sparse matrix with a given sparsity and non-zero elements.
+>
+>>  CasADi::Matrix< DataType >::Matrix(double val)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>This constructor enables implicit type conversion from a numeric type.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< DataType > &x)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct from a vector.
+>
+>Thanks to implicit conversion, you can pretend that Matrix(const SXElement&
+>x); exists. Note: above remark applies only to C++, not python or octave
+>interfaces
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< DataType > &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct dense matrix from a vector with the elements in column major
+>ordering.
+>
+>>  CasADi::Matrix< T >::Matrix(const Matrix< A > &x)
+>------------------------------------------------------------------------
+>
+>Create a matrix from a matrix with a different type of matrix entries
+>(assuming that the scalar conversion is valid)
+>
+>>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x)
+>------------------------------------------------------------------------
+>
+>Create an expression from an stl vector.
+>
+>>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>
+>Create a non-vector expression from an stl vector.
+-}
+imatrix :: IO IMatrix
+imatrix = casADi__Matrix_int___IMatrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC" c_CasADi__Matrix_int___IMatrix_TIC
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix'
+  :: IMatrix -> IO IMatrix
+casADi__Matrix_int___IMatrix' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___IMatrix_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix' :: IMatrix -> IO IMatrix
+imatrix' = casADi__Matrix_int___IMatrix'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC
+  :: Ptr (CppVec (Ptr (CppVec CInt))) -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix''
+  :: Vector (Vector Int) -> IO IMatrix
+casADi__Matrix_int___IMatrix'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix'' :: Vector (Vector Int) -> IO IMatrix
+imatrix'' = casADi__Matrix_int___IMatrix''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix'''
+  :: Sparsity -> Int -> IO IMatrix
+casADi__Matrix_int___IMatrix''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix''' :: Sparsity -> Int -> IO IMatrix
+imatrix''' = casADi__Matrix_int___IMatrix'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix''''
+  :: Sparsity -> IO IMatrix
+casADi__Matrix_int___IMatrix'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix'''' :: Sparsity -> IO IMatrix
+imatrix'''' = casADi__Matrix_int___IMatrix''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix'''''
+  :: Sparsity -> Vector Int -> IO IMatrix
+casADi__Matrix_int___IMatrix''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+imatrix''''' :: Sparsity -> Vector Int -> IO IMatrix
+imatrix''''' = casADi__Matrix_int___IMatrix'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC
+  :: CDouble -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix''''''
+  :: Double -> IO IMatrix
+casADi__Matrix_int___IMatrix'''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix'''''' :: Double -> IO IMatrix
+imatrix'''''' = casADi__Matrix_int___IMatrix''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix'''''''
+  :: Vector Int -> IO IMatrix
+casADi__Matrix_int___IMatrix''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+imatrix''''''' :: Vector Int -> IO IMatrix
+imatrix''''''' = casADi__Matrix_int___IMatrix'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr IMatrix')
+casADi__Matrix_int___IMatrix''''''''
+  :: Vector Int -> Int -> Int -> IO IMatrix
+casADi__Matrix_int___IMatrix'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_int___IMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+imatrix'''''''' :: Vector Int -> Int -> Int -> IO IMatrix
+imatrix'''''''' = casADi__Matrix_int___IMatrix''''''''
+
diff --git a/Casadi/Wrappers/Classes/IOInterfaceFX.hs b/Casadi/Wrappers/Classes/IOInterfaceFX.hs
deleted file mode 100644
--- a/Casadi/Wrappers/Classes/IOInterfaceFX.hs
+++ /dev/null
@@ -1,556 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# Language ForeignFunctionInterface #-}
-{-# Language FlexibleInstances #-}
-{-# Language MultiParamTypeClasses #-}
-
-module Casadi.Wrappers.Classes.IOInterfaceFX
-       (
-         IOInterfaceFX,
-         IOInterfaceFXClass(..),
-         ioInterfaceFX_getInputScheme,
-         ioInterfaceFX_getNumInputs,
-         ioInterfaceFX_getNumOutputs,
-         ioInterfaceFX_getOutputScheme,
-         ioInterfaceFX_input,
-         ioInterfaceFX_input',
-         ioInterfaceFX_input'',
-         ioInterfaceFX_inputSchemeEntry,
-         ioInterfaceFX_output,
-         ioInterfaceFX_output',
-         ioInterfaceFX_output'',
-         ioInterfaceFX_outputSchemeEntry,
-         ioInterfaceFX_schemeEntry,
-         ioInterfaceFX_setInput,
-         ioInterfaceFX_setInput',
-         ioInterfaceFX_setInput''',
-         ioInterfaceFX_setInput'''',
-         ioInterfaceFX_setInput''''',
-         ioInterfaceFX_setInput'''''',
-         ioInterfaceFX_setInput''''''',
-         ioInterfaceFX_setInput'''''''',
-         ioInterfaceFX_setOutput,
-         ioInterfaceFX_setOutput',
-         ioInterfaceFX_setOutput'',
-         ioInterfaceFX_setOutput''',
-         ioInterfaceFX_setOutput'''',
-         ioInterfaceFX_setOutput''''',
-         ioInterfaceFX_setOutput'''''',
-         ioInterfaceFX_setOutput''''''',
-         ioInterfaceFX_setOutput'''''''',
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___input" c_CasADi__IOInterface_CasADi__FX___input
-  :: Ptr IOInterfaceFX' -> CInt -> IO (Ptr DMatrix')
-casADi__IOInterface_CasADi__FX___input
-  :: IOInterfaceFX -> Int -> IO DMatrix
-casADi__IOInterface_CasADi__FX___input x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___input x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access input argument.
--}
-ioInterfaceFX_input :: IOInterfaceFXClass a => a -> Int -> IO DMatrix
-ioInterfaceFX_input x = casADi__IOInterface_CasADi__FX___input (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___input_TIC" c_CasADi__IOInterface_CasADi__FX___input_TIC
-  :: Ptr IOInterfaceFX' -> IO (Ptr DMatrix')
-casADi__IOInterface_CasADi__FX___input'
-  :: IOInterfaceFX -> IO DMatrix
-casADi__IOInterface_CasADi__FX___input' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IOInterface_CasADi__FX___input_TIC x0' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_input' :: IOInterfaceFXClass a => a -> IO DMatrix
-ioInterfaceFX_input' x = casADi__IOInterface_CasADi__FX___input' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___input_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___input_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr StdString' -> IO (Ptr DMatrix')
-casADi__IOInterface_CasADi__FX___input''
-  :: IOInterfaceFX -> String -> IO DMatrix
-casADi__IOInterface_CasADi__FX___input'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___input_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_input'' :: IOInterfaceFXClass a => a -> String -> IO DMatrix
-ioInterfaceFX_input'' x = casADi__IOInterface_CasADi__FX___input'' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___output" c_CasADi__IOInterface_CasADi__FX___output
-  :: Ptr IOInterfaceFX' -> CInt -> IO (Ptr DMatrix')
-casADi__IOInterface_CasADi__FX___output
-  :: IOInterfaceFX -> Int -> IO DMatrix
-casADi__IOInterface_CasADi__FX___output x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___output x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access output argument.
--}
-ioInterfaceFX_output :: IOInterfaceFXClass a => a -> Int -> IO DMatrix
-ioInterfaceFX_output x = casADi__IOInterface_CasADi__FX___output (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___output_TIC" c_CasADi__IOInterface_CasADi__FX___output_TIC
-  :: Ptr IOInterfaceFX' -> IO (Ptr DMatrix')
-casADi__IOInterface_CasADi__FX___output'
-  :: IOInterfaceFX -> IO DMatrix
-casADi__IOInterface_CasADi__FX___output' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IOInterface_CasADi__FX___output_TIC x0' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_output' :: IOInterfaceFXClass a => a -> IO DMatrix
-ioInterfaceFX_output' x = casADi__IOInterface_CasADi__FX___output' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___output_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___output_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr StdString' -> IO (Ptr DMatrix')
-casADi__IOInterface_CasADi__FX___output''
-  :: IOInterfaceFX -> String -> IO DMatrix
-casADi__IOInterface_CasADi__FX___output'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___output_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_output'' :: IOInterfaceFXClass a => a -> String -> IO DMatrix
-ioInterfaceFX_output'' x = casADi__IOInterface_CasADi__FX___output'' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___getNumInputs" c_CasADi__IOInterface_CasADi__FX___getNumInputs
-  :: Ptr IOInterfaceFX' -> IO CInt
-casADi__IOInterface_CasADi__FX___getNumInputs
-  :: IOInterfaceFX -> IO Int
-casADi__IOInterface_CasADi__FX___getNumInputs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IOInterface_CasADi__FX___getNumInputs x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of function inputs.
--}
-ioInterfaceFX_getNumInputs :: IOInterfaceFXClass a => a -> IO Int
-ioInterfaceFX_getNumInputs x = casADi__IOInterface_CasADi__FX___getNumInputs (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___getNumOutputs" c_CasADi__IOInterface_CasADi__FX___getNumOutputs
-  :: Ptr IOInterfaceFX' -> IO CInt
-casADi__IOInterface_CasADi__FX___getNumOutputs
-  :: IOInterfaceFX -> IO Int
-casADi__IOInterface_CasADi__FX___getNumOutputs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IOInterface_CasADi__FX___getNumOutputs x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of function outputs.
--}
-ioInterfaceFX_getNumOutputs :: IOInterfaceFXClass a => a -> IO Int
-ioInterfaceFX_getNumOutputs x = casADi__IOInterface_CasADi__FX___getNumOutputs (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___getInputScheme" c_CasADi__IOInterface_CasADi__FX___getInputScheme
-  :: Ptr IOInterfaceFX' -> IO (Ptr IOScheme')
-casADi__IOInterface_CasADi__FX___getInputScheme
-  :: IOInterfaceFX -> IO IOScheme
-casADi__IOInterface_CasADi__FX___getInputScheme x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IOInterface_CasADi__FX___getInputScheme x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get input scheme.
--}
-ioInterfaceFX_getInputScheme :: IOInterfaceFXClass a => a -> IO IOScheme
-ioInterfaceFX_getInputScheme x = casADi__IOInterface_CasADi__FX___getInputScheme (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___getOutputScheme" c_CasADi__IOInterface_CasADi__FX___getOutputScheme
-  :: Ptr IOInterfaceFX' -> IO (Ptr IOScheme')
-casADi__IOInterface_CasADi__FX___getOutputScheme
-  :: IOInterfaceFX -> IO IOScheme
-casADi__IOInterface_CasADi__FX___getOutputScheme x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IOInterface_CasADi__FX___getOutputScheme x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get output scheme.
--}
-ioInterfaceFX_getOutputScheme :: IOInterfaceFXClass a => a -> IO IOScheme
-ioInterfaceFX_getOutputScheme x = casADi__IOInterface_CasADi__FX___getOutputScheme (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___inputSchemeEntry" c_CasADi__IOInterface_CasADi__FX___inputSchemeEntry
-  :: Ptr IOInterfaceFX' -> Ptr StdString' -> IO CInt
-casADi__IOInterface_CasADi__FX___inputSchemeEntry
-  :: IOInterfaceFX -> String -> IO Int
-casADi__IOInterface_CasADi__FX___inputSchemeEntry x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___inputSchemeEntry x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Find the index for a string describing a particular entry of an input scheme
->example: schemeEntry("x_opt") -> returns NLP_SOLVER_X if FXInternal
->adheres to SCHEME_NLPINput.
--}
-ioInterfaceFX_inputSchemeEntry :: IOInterfaceFXClass a => a -> String -> IO Int
-ioInterfaceFX_inputSchemeEntry x = casADi__IOInterface_CasADi__FX___inputSchemeEntry (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___outputSchemeEntry" c_CasADi__IOInterface_CasADi__FX___outputSchemeEntry
-  :: Ptr IOInterfaceFX' -> Ptr StdString' -> IO CInt
-casADi__IOInterface_CasADi__FX___outputSchemeEntry
-  :: IOInterfaceFX -> String -> IO Int
-casADi__IOInterface_CasADi__FX___outputSchemeEntry x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___outputSchemeEntry x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Find the index for a string describing a particular entry of an output
->scheme example: schemeEntry("x_opt") -> returns NLP_SOLVER_X if FXInternal
->adheres to SCHEME_NLPINput.
--}
-ioInterfaceFX_outputSchemeEntry :: IOInterfaceFXClass a => a -> String -> IO Int
-ioInterfaceFX_outputSchemeEntry x = casADi__IOInterface_CasADi__FX___outputSchemeEntry (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___schemeEntry" c_CasADi__IOInterface_CasADi__FX___schemeEntry
-  :: Ptr IOInterfaceFX' -> Ptr IOScheme' -> Ptr StdString' -> CInt -> IO CInt
-casADi__IOInterface_CasADi__FX___schemeEntry
-  :: IOInterfaceFX -> IOScheme -> String -> Bool -> IO Int
-casADi__IOInterface_CasADi__FX___schemeEntry x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__IOInterface_CasADi__FX___schemeEntry x0' x1' x2' x3' >>= wrapReturn
-
--- classy wrapper
-{-|
->Find the index for a string describing a particular entry of a scheme
->example: schemeEntry("x_opt") -> returns NLP_SOLVER_X if FXInternal
->adheres to SCHEME_NLPINput.
--}
-ioInterfaceFX_schemeEntry :: IOInterfaceFXClass a => a -> IOScheme -> String -> Bool -> IO Int
-ioInterfaceFX_schemeEntry x = casADi__IOInterface_CasADi__FX___schemeEntry (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput" c_CasADi__IOInterface_CasADi__FX___setInput
-  :: Ptr IOInterfaceFX' -> CDouble -> CInt -> IO ()
-casADi__IOInterface_CasADi__FX___setInput
-  :: IOInterfaceFX -> Double -> Int -> IO ()
-casADi__IOInterface_CasADi__FX___setInput x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Reads in the input argument from val. T can be double&, double*,
->std::vector<double>&, Matrix<double> &  Assumes a properly allocated val. .
--}
-ioInterfaceFX_setInput :: IOInterfaceFXClass a => a -> Double -> Int -> IO ()
-ioInterfaceFX_setInput x = casADi__IOInterface_CasADi__FX___setInput (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC
-  :: Ptr IOInterfaceFX' -> CDouble -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'
-  :: IOInterfaceFX -> Double -> IO ()
-casADi__IOInterface_CasADi__FX___setInput' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput' :: IOInterfaceFXClass a => a -> Double -> IO ()
-ioInterfaceFX_setInput' x = casADi__IOInterface_CasADi__FX___setInput' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput" c_CasADi__IOInterface_CasADi__FX___setOutput
-  :: Ptr IOInterfaceFX' -> CDouble -> CInt -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput
-  :: IOInterfaceFX -> Double -> Int -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Reads in the output argument from val. T can be double&, double*,
->std::vector<double>&, Matrix<double> &  Assumes a properly allocated val. .
--}
-ioInterfaceFX_setOutput :: IOInterfaceFXClass a => a -> Double -> Int -> IO ()
-ioInterfaceFX_setOutput x = casADi__IOInterface_CasADi__FX___setOutput (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC
-  :: Ptr IOInterfaceFX' -> CDouble -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'
-  :: IOInterfaceFX -> Double -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput' :: IOInterfaceFXClass a => a -> Double -> IO ()
-ioInterfaceFX_setOutput' x = casADi__IOInterface_CasADi__FX___setOutput' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC
-  :: Ptr IOInterfaceFX' -> CDouble -> Ptr StdString' -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''
-  :: IOInterfaceFX -> Double -> String -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput'' :: IOInterfaceFXClass a => a -> Double -> String -> IO ()
-ioInterfaceFX_setOutput'' x = casADi__IOInterface_CasADi__FX___setOutput'' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr (CppVec CDouble) -> CInt -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'''
-  :: IOInterfaceFX -> Vector Double -> Int -> IO ()
-casADi__IOInterface_CasADi__FX___setInput''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput''' :: IOInterfaceFXClass a => a -> Vector Double -> Int -> IO ()
-ioInterfaceFX_setInput''' x = casADi__IOInterface_CasADi__FX___setInput''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr (CppVec CDouble) -> IO ()
-casADi__IOInterface_CasADi__FX___setInput''''
-  :: IOInterfaceFX -> Vector Double -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput'''' :: IOInterfaceFXClass a => a -> Vector Double -> IO ()
-ioInterfaceFX_setInput'''' x = casADi__IOInterface_CasADi__FX___setInput'''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr (CppVec CDouble) -> CInt -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'''
-  :: IOInterfaceFX -> Vector Double -> Int -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput''' :: IOInterfaceFXClass a => a -> Vector Double -> Int -> IO ()
-ioInterfaceFX_setOutput''' x = casADi__IOInterface_CasADi__FX___setOutput''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr (CppVec CDouble) -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''''
-  :: IOInterfaceFX -> Vector Double -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput'''' :: IOInterfaceFXClass a => a -> Vector Double -> IO ()
-ioInterfaceFX_setOutput'''' x = casADi__IOInterface_CasADi__FX___setOutput'''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr (CppVec CDouble) -> Ptr StdString' -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'''''
-  :: IOInterfaceFX -> Vector Double -> String -> IO ()
-casADi__IOInterface_CasADi__FX___setInput''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput''''' :: IOInterfaceFXClass a => a -> Vector Double -> String -> IO ()
-ioInterfaceFX_setInput''''' x = casADi__IOInterface_CasADi__FX___setInput''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr (CppVec CDouble) -> Ptr StdString' -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'''''
-  :: IOInterfaceFX -> Vector Double -> String -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput''''' :: IOInterfaceFXClass a => a -> Vector Double -> String -> IO ()
-ioInterfaceFX_setOutput''''' x = casADi__IOInterface_CasADi__FX___setOutput''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr DMatrix' -> CInt -> IO ()
-casADi__IOInterface_CasADi__FX___setInput''''''
-  :: IOInterfaceFX -> DMatrix -> Int -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput'''''' :: IOInterfaceFXClass a => a -> DMatrix -> Int -> IO ()
-ioInterfaceFX_setInput'''''' x = casADi__IOInterface_CasADi__FX___setInput'''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr DMatrix' -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'''''''
-  :: IOInterfaceFX -> DMatrix -> IO ()
-casADi__IOInterface_CasADi__FX___setInput''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput''''''' :: IOInterfaceFXClass a => a -> DMatrix -> IO ()
-ioInterfaceFX_setInput''''''' x = casADi__IOInterface_CasADi__FX___setInput''''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr DMatrix' -> CInt -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''''''
-  :: IOInterfaceFX -> DMatrix -> Int -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput'''''' :: IOInterfaceFXClass a => a -> DMatrix -> Int -> IO ()
-ioInterfaceFX_setOutput'''''' x = casADi__IOInterface_CasADi__FX___setOutput'''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr DMatrix' -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'''''''
-  :: IOInterfaceFX -> DMatrix -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput''''''' :: IOInterfaceFXClass a => a -> DMatrix -> IO ()
-ioInterfaceFX_setOutput''''''' x = casADi__IOInterface_CasADi__FX___setOutput''''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr DMatrix' -> Ptr StdString' -> IO ()
-casADi__IOInterface_CasADi__FX___setInput''''''''
-  :: IOInterfaceFX -> DMatrix -> String -> IO ()
-casADi__IOInterface_CasADi__FX___setInput'''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setInput'''''''' :: IOInterfaceFXClass a => a -> DMatrix -> String -> IO ()
-ioInterfaceFX_setInput'''''''' x = casADi__IOInterface_CasADi__FX___setInput'''''''' (castIOInterfaceFX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr IOInterfaceFX' -> Ptr DMatrix' -> Ptr StdString' -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput''''''''
-  :: IOInterfaceFX -> DMatrix -> String -> IO ()
-casADi__IOInterface_CasADi__FX___setOutput'''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__IOInterface_CasADi__FX___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-ioInterfaceFX_setOutput'''''''' :: IOInterfaceFXClass a => a -> DMatrix -> String -> IO ()
-ioInterfaceFX_setOutput'''''''' x = casADi__IOInterface_CasADi__FX___setOutput'''''''' (castIOInterfaceFX x)
-
diff --git a/Casadi/Wrappers/Classes/IOInterfaceFunction.hs b/Casadi/Wrappers/Classes/IOInterfaceFunction.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/IOInterfaceFunction.hs
@@ -0,0 +1,891 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.IOInterfaceFunction
+       (
+         IOInterfaceFunction,
+         IOInterfaceFunctionClass(..),
+         ioInterfaceFunction_getInput,
+         ioInterfaceFunction_getInput',
+         ioInterfaceFunction_getInput'',
+         ioInterfaceFunction_getInputScheme,
+         ioInterfaceFunction_getNumInputs,
+         ioInterfaceFunction_getNumOutputs,
+         ioInterfaceFunction_getOutput,
+         ioInterfaceFunction_getOutput',
+         ioInterfaceFunction_getOutput'',
+         ioInterfaceFunction_getOutputScheme,
+         ioInterfaceFunction_input,
+         ioInterfaceFunction_input',
+         ioInterfaceFunction_input'',
+         ioInterfaceFunction_inputSchemeEntry,
+         ioInterfaceFunction_output,
+         ioInterfaceFunction_output',
+         ioInterfaceFunction_output'',
+         ioInterfaceFunction_outputSchemeEntry,
+         ioInterfaceFunction_schemeEntry,
+         ioInterfaceFunction_setInput,
+         ioInterfaceFunction_setInput',
+         ioInterfaceFunction_setInput'',
+         ioInterfaceFunction_setInput''',
+         ioInterfaceFunction_setInput'''',
+         ioInterfaceFunction_setInput''''',
+         ioInterfaceFunction_setInput'''''',
+         ioInterfaceFunction_setInput''''''',
+         ioInterfaceFunction_setInput'''''''',
+         ioInterfaceFunction_setInputScheme,
+         ioInterfaceFunction_setNumInputs,
+         ioInterfaceFunction_setNumOutputs,
+         ioInterfaceFunction_setOutput,
+         ioInterfaceFunction_setOutput',
+         ioInterfaceFunction_setOutput'',
+         ioInterfaceFunction_setOutput''',
+         ioInterfaceFunction_setOutput'''',
+         ioInterfaceFunction_setOutput''''',
+         ioInterfaceFunction_setOutput'''''',
+         ioInterfaceFunction_setOutput''''''',
+         ioInterfaceFunction_setOutput'''''''',
+         ioInterfaceFunction_setOutputScheme,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___input" c_CasADi__IOInterface_CasADi__Function___input
+  :: Ptr IOInterfaceFunction' -> CInt -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___input
+  :: IOInterfaceFunction -> Int -> IO DMatrix
+casADi__IOInterface_CasADi__Function___input x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___input x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[UNSAFE] Obtain reference to inputs
+>
+>Access input argument
+-}
+ioInterfaceFunction_input :: IOInterfaceFunctionClass a => a -> Int -> IO DMatrix
+ioInterfaceFunction_input x = casADi__IOInterface_CasADi__Function___input (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___input_TIC" c_CasADi__IOInterface_CasADi__Function___input_TIC
+  :: Ptr IOInterfaceFunction' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___input'
+  :: IOInterfaceFunction -> IO DMatrix
+casADi__IOInterface_CasADi__Function___input' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___input_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_input' :: IOInterfaceFunctionClass a => a -> IO DMatrix
+ioInterfaceFunction_input' x = casADi__IOInterface_CasADi__Function___input' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___input_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___input_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr StdString' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___input''
+  :: IOInterfaceFunction -> String -> IO DMatrix
+casADi__IOInterface_CasADi__Function___input'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___input_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_input'' :: IOInterfaceFunctionClass a => a -> String -> IO DMatrix
+ioInterfaceFunction_input'' x = casADi__IOInterface_CasADi__Function___input'' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___output" c_CasADi__IOInterface_CasADi__Function___output
+  :: Ptr IOInterfaceFunction' -> CInt -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___output
+  :: IOInterfaceFunction -> Int -> IO DMatrix
+casADi__IOInterface_CasADi__Function___output x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___output x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[UNSAFE] Obtain reference to outputs
+>
+>Access output argument
+-}
+ioInterfaceFunction_output :: IOInterfaceFunctionClass a => a -> Int -> IO DMatrix
+ioInterfaceFunction_output x = casADi__IOInterface_CasADi__Function___output (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___output_TIC" c_CasADi__IOInterface_CasADi__Function___output_TIC
+  :: Ptr IOInterfaceFunction' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___output'
+  :: IOInterfaceFunction -> IO DMatrix
+casADi__IOInterface_CasADi__Function___output' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___output_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_output' :: IOInterfaceFunctionClass a => a -> IO DMatrix
+ioInterfaceFunction_output' x = casADi__IOInterface_CasADi__Function___output' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___output_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___output_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr StdString' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___output''
+  :: IOInterfaceFunction -> String -> IO DMatrix
+casADi__IOInterface_CasADi__Function___output'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___output_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_output'' :: IOInterfaceFunctionClass a => a -> String -> IO DMatrix
+ioInterfaceFunction_output'' x = casADi__IOInterface_CasADi__Function___output'' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getNumInputs" c_CasADi__IOInterface_CasADi__Function___getNumInputs
+  :: Ptr IOInterfaceFunction' -> IO CInt
+casADi__IOInterface_CasADi__Function___getNumInputs
+  :: IOInterfaceFunction -> IO Int
+casADi__IOInterface_CasADi__Function___getNumInputs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___getNumInputs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of function inputs.
+-}
+ioInterfaceFunction_getNumInputs :: IOInterfaceFunctionClass a => a -> IO Int
+ioInterfaceFunction_getNumInputs x = casADi__IOInterface_CasADi__Function___getNumInputs (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getNumOutputs" c_CasADi__IOInterface_CasADi__Function___getNumOutputs
+  :: Ptr IOInterfaceFunction' -> IO CInt
+casADi__IOInterface_CasADi__Function___getNumOutputs
+  :: IOInterfaceFunction -> IO Int
+casADi__IOInterface_CasADi__Function___getNumOutputs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___getNumOutputs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of function outputs.
+-}
+ioInterfaceFunction_getNumOutputs :: IOInterfaceFunctionClass a => a -> IO Int
+ioInterfaceFunction_getNumOutputs x = casADi__IOInterface_CasADi__Function___getNumOutputs (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setNumInputs" c_CasADi__IOInterface_CasADi__Function___setNumInputs
+  :: Ptr IOInterfaceFunction' -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setNumInputs
+  :: IOInterfaceFunction -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setNumInputs x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setNumInputs x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the number of function inputs.
+-}
+ioInterfaceFunction_setNumInputs :: IOInterfaceFunctionClass a => a -> Int -> IO ()
+ioInterfaceFunction_setNumInputs x = casADi__IOInterface_CasADi__Function___setNumInputs (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setNumOutputs" c_CasADi__IOInterface_CasADi__Function___setNumOutputs
+  :: Ptr IOInterfaceFunction' -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setNumOutputs
+  :: IOInterfaceFunction -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setNumOutputs x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setNumOutputs x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the number of function outputs.
+-}
+ioInterfaceFunction_setNumOutputs :: IOInterfaceFunctionClass a => a -> Int -> IO ()
+ioInterfaceFunction_setNumOutputs x = casADi__IOInterface_CasADi__Function___setNumOutputs (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInputScheme" c_CasADi__IOInterface_CasADi__Function___setInputScheme
+  :: Ptr IOInterfaceFunction' -> Ptr IOScheme' -> IO ()
+casADi__IOInterface_CasADi__Function___setInputScheme
+  :: IOInterfaceFunction -> IOScheme -> IO ()
+casADi__IOInterface_CasADi__Function___setInputScheme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setInputScheme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set input scheme.
+-}
+ioInterfaceFunction_setInputScheme :: IOInterfaceFunctionClass a => a -> IOScheme -> IO ()
+ioInterfaceFunction_setInputScheme x = casADi__IOInterface_CasADi__Function___setInputScheme (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutputScheme" c_CasADi__IOInterface_CasADi__Function___setOutputScheme
+  :: Ptr IOInterfaceFunction' -> Ptr IOScheme' -> IO ()
+casADi__IOInterface_CasADi__Function___setOutputScheme
+  :: IOInterfaceFunction -> IOScheme -> IO ()
+casADi__IOInterface_CasADi__Function___setOutputScheme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutputScheme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set output scheme.
+-}
+ioInterfaceFunction_setOutputScheme :: IOInterfaceFunctionClass a => a -> IOScheme -> IO ()
+ioInterfaceFunction_setOutputScheme x = casADi__IOInterface_CasADi__Function___setOutputScheme (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getInputScheme" c_CasADi__IOInterface_CasADi__Function___getInputScheme
+  :: Ptr IOInterfaceFunction' -> IO (Ptr IOScheme')
+casADi__IOInterface_CasADi__Function___getInputScheme
+  :: IOInterfaceFunction -> IO IOScheme
+casADi__IOInterface_CasADi__Function___getInputScheme x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___getInputScheme x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get input scheme.
+-}
+ioInterfaceFunction_getInputScheme :: IOInterfaceFunctionClass a => a -> IO IOScheme
+ioInterfaceFunction_getInputScheme x = casADi__IOInterface_CasADi__Function___getInputScheme (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getOutputScheme" c_CasADi__IOInterface_CasADi__Function___getOutputScheme
+  :: Ptr IOInterfaceFunction' -> IO (Ptr IOScheme')
+casADi__IOInterface_CasADi__Function___getOutputScheme
+  :: IOInterfaceFunction -> IO IOScheme
+casADi__IOInterface_CasADi__Function___getOutputScheme x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___getOutputScheme x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get output scheme.
+-}
+ioInterfaceFunction_getOutputScheme :: IOInterfaceFunctionClass a => a -> IO IOScheme
+ioInterfaceFunction_getOutputScheme x = casADi__IOInterface_CasADi__Function___getOutputScheme (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___inputSchemeEntry" c_CasADi__IOInterface_CasADi__Function___inputSchemeEntry
+  :: Ptr IOInterfaceFunction' -> Ptr StdString' -> IO CInt
+casADi__IOInterface_CasADi__Function___inputSchemeEntry
+  :: IOInterfaceFunction -> String -> IO Int
+casADi__IOInterface_CasADi__Function___inputSchemeEntry x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___inputSchemeEntry x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Find the index for a string describing a particular entry of an input
+>scheme.
+>
+>example: schemeEntry("x_opt") -> returns NLP_SOLVER_X if FunctionInternal
+>adheres to SCHEME_NLPINput
+-}
+ioInterfaceFunction_inputSchemeEntry :: IOInterfaceFunctionClass a => a -> String -> IO Int
+ioInterfaceFunction_inputSchemeEntry x = casADi__IOInterface_CasADi__Function___inputSchemeEntry (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___outputSchemeEntry" c_CasADi__IOInterface_CasADi__Function___outputSchemeEntry
+  :: Ptr IOInterfaceFunction' -> Ptr StdString' -> IO CInt
+casADi__IOInterface_CasADi__Function___outputSchemeEntry
+  :: IOInterfaceFunction -> String -> IO Int
+casADi__IOInterface_CasADi__Function___outputSchemeEntry x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___outputSchemeEntry x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Find the index for a string describing a particular entry of an output
+>scheme.
+>
+>example: schemeEntry("x_opt") -> returns NLP_SOLVER_X if FunctionInternal
+>adheres to SCHEME_NLPINput
+-}
+ioInterfaceFunction_outputSchemeEntry :: IOInterfaceFunctionClass a => a -> String -> IO Int
+ioInterfaceFunction_outputSchemeEntry x = casADi__IOInterface_CasADi__Function___outputSchemeEntry (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___schemeEntry" c_CasADi__IOInterface_CasADi__Function___schemeEntry
+  :: Ptr IOInterfaceFunction' -> Ptr IOScheme' -> Ptr StdString' -> CInt -> IO CInt
+casADi__IOInterface_CasADi__Function___schemeEntry
+  :: IOInterfaceFunction -> IOScheme -> String -> Bool -> IO Int
+casADi__IOInterface_CasADi__Function___schemeEntry x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__IOInterface_CasADi__Function___schemeEntry x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Find
+>the index for a string describing a particular entry of a scheme.
+>
+>example: schemeEntry("x_opt") -> returns NLP_SOLVER_X if FunctionInternal
+>adheres to SCHEME_NLPINput
+-}
+ioInterfaceFunction_schemeEntry :: IOInterfaceFunctionClass a => a -> IOScheme -> String -> Bool -> IO Int
+ioInterfaceFunction_schemeEntry x = casADi__IOInterface_CasADi__Function___schemeEntry (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getInput" c_CasADi__IOInterface_CasADi__Function___getInput
+  :: Ptr IOInterfaceFunction' -> CInt -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___getInput
+  :: IOInterfaceFunction -> Int -> IO DMatrix
+casADi__IOInterface_CasADi__Function___getInput x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___getInput x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  Matrix<double> CasADi::IOInterface< Derived >::getInput(int iind=0) const 
+>------------------------------------------------------------------------
+>
+>Get an input by index.
+>
+>Parameters:
+>-----------
+>
+>iind:  index within the range [0.. getNumInputs()-1]
+>
+>>  Matrix<double> CasADi::IOInterface< Derived >::getInput(const std::string &iname) const 
+>------------------------------------------------------------------------
+>
+>Get an input by name.
+>
+>Parameters:
+>-----------
+>
+>iname:  input name. Only allowed when an input scheme is set.
+>
+>>  void CasADi::IOInterface< Derived >::getInput(T val, int iind=0)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get an input by index.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double&, std::vector<double>&, Matrix<double>&, double *
+>
+>iind:  index within the range [0.. getNumInputs()-1]
+>
+>>  void CasADi::IOInterface< Derived >::getInput(T val, const std::string &iname)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get an input by name.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double&, std::vector<double>&, Matrix<double>&, double *
+>
+>iname:  input name. Only allowed when an input scheme is set.
+-}
+ioInterfaceFunction_getInput :: IOInterfaceFunctionClass a => a -> Int -> IO DMatrix
+ioInterfaceFunction_getInput x = casADi__IOInterface_CasADi__Function___getInput (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getInput_TIC" c_CasADi__IOInterface_CasADi__Function___getInput_TIC
+  :: Ptr IOInterfaceFunction' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___getInput'
+  :: IOInterfaceFunction -> IO DMatrix
+casADi__IOInterface_CasADi__Function___getInput' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___getInput_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_getInput' :: IOInterfaceFunctionClass a => a -> IO DMatrix
+ioInterfaceFunction_getInput' x = casADi__IOInterface_CasADi__Function___getInput' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getInput_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___getInput_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr StdString' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___getInput''
+  :: IOInterfaceFunction -> String -> IO DMatrix
+casADi__IOInterface_CasADi__Function___getInput'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___getInput_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_getInput'' :: IOInterfaceFunctionClass a => a -> String -> IO DMatrix
+ioInterfaceFunction_getInput'' x = casADi__IOInterface_CasADi__Function___getInput'' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getOutput" c_CasADi__IOInterface_CasADi__Function___getOutput
+  :: Ptr IOInterfaceFunction' -> CInt -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___getOutput
+  :: IOInterfaceFunction -> Int -> IO DMatrix
+casADi__IOInterface_CasADi__Function___getOutput x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___getOutput x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  Matrix<double> CasADi::IOInterface< Derived >::getOutput(int oind=0) const 
+>------------------------------------------------------------------------
+>
+>Get an output by index.
+>
+>Parameters:
+>-----------
+>
+>oind:  index within the range [0.. getNumOutputs()-1]
+>
+>>  Matrix<double> CasADi::IOInterface< Derived >::getOutput(const std::string &oname) const 
+>------------------------------------------------------------------------
+>
+>Get an output by name.
+>
+>Parameters:
+>-----------
+>
+>oname:  output name. Only allowed when an output scheme is set.
+>
+>>  void CasADi::IOInterface< Derived >::getOutput(T val, int oind=0)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get an output by index.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double&, std::vector<double>&, Matrix<double>&, double *
+>
+>oind:  index within the range [0.. getNumOutputs()-1]
+>
+>>  void CasADi::IOInterface< Derived >::getOutput(T val, const std::string &oname)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get an output by name.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double&, std::vector<double>&, Matrix<double>&, double *
+>
+>oname:  output name. Only allowed when an output scheme is set.
+-}
+ioInterfaceFunction_getOutput :: IOInterfaceFunctionClass a => a -> Int -> IO DMatrix
+ioInterfaceFunction_getOutput x = casADi__IOInterface_CasADi__Function___getOutput (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getOutput_TIC" c_CasADi__IOInterface_CasADi__Function___getOutput_TIC
+  :: Ptr IOInterfaceFunction' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___getOutput'
+  :: IOInterfaceFunction -> IO DMatrix
+casADi__IOInterface_CasADi__Function___getOutput' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOInterface_CasADi__Function___getOutput_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_getOutput' :: IOInterfaceFunctionClass a => a -> IO DMatrix
+ioInterfaceFunction_getOutput' x = casADi__IOInterface_CasADi__Function___getOutput' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___getOutput_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___getOutput_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr StdString' -> IO (Ptr DMatrix')
+casADi__IOInterface_CasADi__Function___getOutput''
+  :: IOInterfaceFunction -> String -> IO DMatrix
+casADi__IOInterface_CasADi__Function___getOutput'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___getOutput_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_getOutput'' :: IOInterfaceFunctionClass a => a -> String -> IO DMatrix
+ioInterfaceFunction_getOutput'' x = casADi__IOInterface_CasADi__Function___getOutput'' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput" c_CasADi__IOInterface_CasADi__Function___setInput
+  :: Ptr IOInterfaceFunction' -> CDouble -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setInput
+  :: IOInterfaceFunction -> Double -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setInput x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::IOInterface< Derived >::setInput(T val, int iind=0)
+>------------------------------------------------------------------------
+>
+>Set an input by index.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double, const std::vector<double>&, const Matrix<double>&,
+>double *
+>
+>iind:  index within the range [0.. getNumInputs()-1]
+>
+>>  void CasADi::IOInterface< Derived >::setInput(T val, const std::string &iname)
+>------------------------------------------------------------------------
+>
+>Set an input by name.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double, const std::vector<double>&, const Matrix<double>&,
+>double *
+>
+>iname:  input name. Only allowed when an input scheme is set.
+-}
+ioInterfaceFunction_setInput :: IOInterfaceFunctionClass a => a -> Double -> Int -> IO ()
+ioInterfaceFunction_setInput x = casADi__IOInterface_CasADi__Function___setInput (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC
+  :: Ptr IOInterfaceFunction' -> CDouble -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'
+  :: IOInterfaceFunction -> Double -> IO ()
+casADi__IOInterface_CasADi__Function___setInput' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput' :: IOInterfaceFunctionClass a => a -> Double -> IO ()
+ioInterfaceFunction_setInput' x = casADi__IOInterface_CasADi__Function___setInput' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput" c_CasADi__IOInterface_CasADi__Function___setOutput
+  :: Ptr IOInterfaceFunction' -> CDouble -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput
+  :: IOInterfaceFunction -> Double -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::IOInterface< Derived >::setOutput(T val, int oind=0)
+>------------------------------------------------------------------------
+>
+>Set an output by index.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double, const std::vector<double>&, const Matrix<double>&,
+>double *
+>
+>oind:  index within the range [0.. getNumOutputs()-1]
+>
+>>  void CasADi::IOInterface< Derived >::setOutput(T val, const std::string &oname)
+>------------------------------------------------------------------------
+>
+>Set an output by name.
+>
+>Parameters:
+>-----------
+>
+>val:  can be double, const std::vector<double>&, const Matrix<double>&,
+>double *
+>
+>oname:  output name. Only allowed when an output scheme is set.
+-}
+ioInterfaceFunction_setOutput :: IOInterfaceFunctionClass a => a -> Double -> Int -> IO ()
+ioInterfaceFunction_setOutput x = casADi__IOInterface_CasADi__Function___setOutput (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC
+  :: Ptr IOInterfaceFunction' -> CDouble -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'
+  :: IOInterfaceFunction -> Double -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput' :: IOInterfaceFunctionClass a => a -> Double -> IO ()
+ioInterfaceFunction_setOutput' x = casADi__IOInterface_CasADi__Function___setOutput' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> CDouble -> Ptr StdString' -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''
+  :: IOInterfaceFunction -> Double -> String -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput'' :: IOInterfaceFunctionClass a => a -> Double -> String -> IO ()
+ioInterfaceFunction_setInput'' x = casADi__IOInterface_CasADi__Function___setInput'' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> CDouble -> Ptr StdString' -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''
+  :: IOInterfaceFunction -> Double -> String -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput'' :: IOInterfaceFunctionClass a => a -> Double -> String -> IO ()
+ioInterfaceFunction_setOutput'' x = casADi__IOInterface_CasADi__Function___setOutput'' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr (CppVec CDouble) -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'''
+  :: IOInterfaceFunction -> Vector Double -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput''' :: IOInterfaceFunctionClass a => a -> Vector Double -> Int -> IO ()
+ioInterfaceFunction_setInput''' x = casADi__IOInterface_CasADi__Function___setInput''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr (CppVec CDouble) -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''''
+  :: IOInterfaceFunction -> Vector Double -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput'''' :: IOInterfaceFunctionClass a => a -> Vector Double -> IO ()
+ioInterfaceFunction_setInput'''' x = casADi__IOInterface_CasADi__Function___setInput'''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr (CppVec CDouble) -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'''
+  :: IOInterfaceFunction -> Vector Double -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput''' :: IOInterfaceFunctionClass a => a -> Vector Double -> Int -> IO ()
+ioInterfaceFunction_setOutput''' x = casADi__IOInterface_CasADi__Function___setOutput''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr (CppVec CDouble) -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''''
+  :: IOInterfaceFunction -> Vector Double -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput'''' :: IOInterfaceFunctionClass a => a -> Vector Double -> IO ()
+ioInterfaceFunction_setOutput'''' x = casADi__IOInterface_CasADi__Function___setOutput'''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr (CppVec CDouble) -> Ptr StdString' -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'''''
+  :: IOInterfaceFunction -> Vector Double -> String -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput''''' :: IOInterfaceFunctionClass a => a -> Vector Double -> String -> IO ()
+ioInterfaceFunction_setInput''''' x = casADi__IOInterface_CasADi__Function___setInput''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr (CppVec CDouble) -> Ptr StdString' -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'''''
+  :: IOInterfaceFunction -> Vector Double -> String -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput''''' :: IOInterfaceFunctionClass a => a -> Vector Double -> String -> IO ()
+ioInterfaceFunction_setOutput''''' x = casADi__IOInterface_CasADi__Function___setOutput''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr DMatrix' -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''''''
+  :: IOInterfaceFunction -> DMatrix -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput'''''' :: IOInterfaceFunctionClass a => a -> DMatrix -> Int -> IO ()
+ioInterfaceFunction_setInput'''''' x = casADi__IOInterface_CasADi__Function___setInput'''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr DMatrix' -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'''''''
+  :: IOInterfaceFunction -> DMatrix -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput''''''' :: IOInterfaceFunctionClass a => a -> DMatrix -> IO ()
+ioInterfaceFunction_setInput''''''' x = casADi__IOInterface_CasADi__Function___setInput''''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr DMatrix' -> CInt -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''''''
+  :: IOInterfaceFunction -> DMatrix -> Int -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput'''''' :: IOInterfaceFunctionClass a => a -> DMatrix -> Int -> IO ()
+ioInterfaceFunction_setOutput'''''' x = casADi__IOInterface_CasADi__Function___setOutput'''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr DMatrix' -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'''''''
+  :: IOInterfaceFunction -> DMatrix -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput''''''' :: IOInterfaceFunctionClass a => a -> DMatrix -> IO ()
+ioInterfaceFunction_setOutput''''''' x = casADi__IOInterface_CasADi__Function___setOutput''''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr DMatrix' -> Ptr StdString' -> IO ()
+casADi__IOInterface_CasADi__Function___setInput''''''''
+  :: IOInterfaceFunction -> DMatrix -> String -> IO ()
+casADi__IOInterface_CasADi__Function___setInput'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setInput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setInput'''''''' :: IOInterfaceFunctionClass a => a -> DMatrix -> String -> IO ()
+ioInterfaceFunction_setInput'''''''' x = casADi__IOInterface_CasADi__Function___setInput'''''''' (castIOInterfaceFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IOInterfaceFunction' -> Ptr DMatrix' -> Ptr StdString' -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput''''''''
+  :: IOInterfaceFunction -> DMatrix -> String -> IO ()
+casADi__IOInterface_CasADi__Function___setOutput'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOInterface_CasADi__Function___setOutput_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioInterfaceFunction_setOutput'''''''' :: IOInterfaceFunctionClass a => a -> DMatrix -> String -> IO ()
+ioInterfaceFunction_setOutput'''''''' x = casADi__IOInterface_CasADi__Function___setOutput'''''''' (castIOInterfaceFunction x)
+
diff --git a/Casadi/Wrappers/Classes/IOScheme.hs b/Casadi/Wrappers/Classes/IOScheme.hs
--- a/Casadi/Wrappers/Classes/IOScheme.hs
+++ b/Casadi/Wrappers/Classes/IOScheme.hs
@@ -12,6 +12,27 @@
          ioScheme,
          ioScheme',
          ioScheme'',
+         ioScheme''',
+         ioScheme'''',
+         ioScheme''''',
+         ioScheme'''''',
+         ioScheme''''''',
+         ioScheme'''''''',
+         ioScheme''''''''',
+         ioScheme'''''''''',
+         ioScheme''''''''''',
+         ioScheme'''''''''''',
+         ioScheme''''''''''''',
+         ioScheme'''''''''''''',
+         ioScheme''''''''''''''',
+         ioScheme'''''''''''''''',
+         ioScheme''''''''''''''''',
+         ioScheme'''''''''''''''''',
+         ioScheme''''''''''''''''''',
+         ioScheme'''''''''''''''''''',
+         ioScheme''''''''''''''''''''',
+         ioScheme'''''''''''''''''''''',
+         ioScheme''''''''''''''''''''''',
          ioScheme_checkNode,
          ioScheme_compatibleSize,
          ioScheme_describe,
@@ -296,7 +317,7 @@
 >
 >Constructor with enum.
 >
->>  CasADi::IOScheme::IOScheme(const std::vector< std::string > &entries)
+>>  CasADi::IOScheme::IOScheme(const std::vector< std::string > &entries, const std::vector< std::string > &descriptions=std::vector< std::string >())
 >------------------------------------------------------------------------
 >
 >Constructor with entry names.
@@ -321,14 +342,499 @@
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC
-  :: Ptr (CppVec (Ptr StdString')) -> IO (Ptr IOScheme')
+  :: Ptr (CppVec (Ptr StdString')) -> Ptr (CppVec (Ptr StdString')) -> IO (Ptr IOScheme')
 casADi__IOScheme__IOScheme''
-  :: Vector String -> IO IOScheme
-casADi__IOScheme__IOScheme'' x0 =
+  :: Vector String -> Vector String -> IO IOScheme
+casADi__IOScheme__IOScheme'' x0 x1 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__IOScheme__IOScheme_TIC_TIC x0' >>= wrapReturn
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC x0' x1' >>= wrapReturn
 
 -- classy wrapper
-ioScheme'' :: Vector String -> IO IOScheme
+ioScheme'' :: Vector String -> Vector String -> IO IOScheme
 ioScheme'' = casADi__IOScheme__IOScheme''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr StdString')) -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''
+  :: Vector String -> IO IOScheme
+casADi__IOScheme__IOScheme''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''' :: Vector String -> IO IOScheme
+ioScheme''' = casADi__IOScheme__IOScheme'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  withMarshal x14 $ \x14' ->
+  withMarshal x15 $ \x15' ->
+  withMarshal x16 $ \x16' ->
+  withMarshal x17 $ \x17' ->
+  withMarshal x18 $ \x18' ->
+  withMarshal x19 $ \x19' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' x14' x15' x16' x17' x18' x19' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''' = casADi__IOScheme__IOScheme''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  withMarshal x14 $ \x14' ->
+  withMarshal x15 $ \x15' ->
+  withMarshal x16 $ \x16' ->
+  withMarshal x17 $ \x17' ->
+  withMarshal x18 $ \x18' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' x14' x15' x16' x17' x18' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''' = casADi__IOScheme__IOScheme'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  withMarshal x14 $ \x14' ->
+  withMarshal x15 $ \x15' ->
+  withMarshal x16 $ \x16' ->
+  withMarshal x17 $ \x17' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' x14' x15' x16' x17' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''' = casADi__IOScheme__IOScheme''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  withMarshal x14 $ \x14' ->
+  withMarshal x15 $ \x15' ->
+  withMarshal x16 $ \x16' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' x14' x15' x16' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''' = casADi__IOScheme__IOScheme'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  withMarshal x14 $ \x14' ->
+  withMarshal x15 $ \x15' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' x14' x15' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''' = casADi__IOScheme__IOScheme''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  withMarshal x14 $ \x14' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' x14' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''''' = casADi__IOScheme__IOScheme'''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  withMarshal x13 $ \x13' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' x13' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''''' = casADi__IOScheme__IOScheme''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  withMarshal x12 $ \x12' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' x12' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''''''' = casADi__IOScheme__IOScheme'''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  withMarshal x11 $ \x11' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' x11' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''''''' = casADi__IOScheme__IOScheme''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  withMarshal x10 $ \x10' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' x10' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''''''''' = casADi__IOScheme__IOScheme'''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  withMarshal x9 $ \x9' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' x9' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''''''''' = casADi__IOScheme__IOScheme''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''''''' x0 x1 x2 x3 x4 x5 x6 x7 x8 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  withMarshal x8 $ \x8' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' x8' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''''''''''' = casADi__IOScheme__IOScheme'''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''''''''' x0 x1 x2 x3 x4 x5 x6 x7 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' x7' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''''''''' :: String -> String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''''''''''' = casADi__IOScheme__IOScheme''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''''''''
+  :: String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''''''''' x0 x1 x2 x3 x4 x5 x6 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' x6' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''''''''' :: String -> String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''''''''''''' = casADi__IOScheme__IOScheme'''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''''''''''
+  :: String -> String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''''''''''' x0 x1 x2 x3 x4 x5 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' x5' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''''''''''' :: String -> String -> String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''''''''''''' = casADi__IOScheme__IOScheme''''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''''''''''
+  :: String -> String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''''''''''' :: String -> String -> String -> String -> String -> IO IOScheme
+ioScheme''''''''''''''''''' = casADi__IOScheme__IOScheme'''''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''''''''''''
+  :: String -> String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''''''''''''' :: String -> String -> String -> String -> IO IOScheme
+ioScheme'''''''''''''''''''' = casADi__IOScheme__IOScheme''''''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''''''''''''
+  :: String -> String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''''''''''''' :: String -> String -> String -> IO IOScheme
+ioScheme''''''''''''''''''''' = casADi__IOScheme__IOScheme'''''''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme''''''''''''''''''''''
+  :: String -> String -> IO IOScheme
+casADi__IOScheme__IOScheme'''''''''''''''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+ioScheme'''''''''''''''''''''' :: String -> String -> IO IOScheme
+ioScheme'''''''''''''''''''''' = casADi__IOScheme__IOScheme''''''''''''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr StdString' -> IO (Ptr IOScheme')
+casADi__IOScheme__IOScheme'''''''''''''''''''''''
+  :: String -> IO IOScheme
+casADi__IOScheme__IOScheme''''''''''''''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IOScheme__IOScheme_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+ioScheme''''''''''''''''''''''' :: String -> IO IOScheme
+ioScheme''''''''''''''''''''''' = casADi__IOScheme__IOScheme'''''''''''''''''''''''
 
diff --git a/Casadi/Wrappers/Classes/IdasIntegrator.hs b/Casadi/Wrappers/Classes/IdasIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/IdasIntegrator.hs
@@ -0,0 +1,207 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.IdasIntegrator
+       (
+         IdasIntegrator,
+         IdasIntegratorClass(..),
+         idasIntegrator,
+         idasIntegrator',
+         idasIntegrator'',
+         idasIntegrator_checkNode,
+         idasIntegrator_correctInitialConditions,
+         idasIntegrator_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show IdasIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IdasIntegrator__checkNode" c_CasADi__IdasIntegrator__checkNode
+  :: Ptr IdasIntegrator' -> IO CInt
+casADi__IdasIntegrator__checkNode
+  :: IdasIntegrator -> IO Bool
+casADi__IdasIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IdasIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+idasIntegrator_checkNode :: IdasIntegratorClass a => a -> IO Bool
+idasIntegrator_checkNode x = casADi__IdasIntegrator__checkNode (castIdasIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IdasIntegrator__correctInitialConditions" c_CasADi__IdasIntegrator__correctInitialConditions
+  :: Ptr IdasIntegrator' -> IO ()
+casADi__IdasIntegrator__correctInitialConditions
+  :: IdasIntegrator -> IO ()
+casADi__IdasIntegrator__correctInitialConditions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IdasIntegrator__correctInitialConditions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Correct the initial value for yp and z after resetting the solver.
+-}
+idasIntegrator_correctInitialConditions :: IdasIntegratorClass a => a -> IO ()
+idasIntegrator_correctInitialConditions x = casADi__IdasIntegrator__correctInitialConditions (castIdasIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IdasIntegrator__creator" c_CasADi__IdasIntegrator__creator
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr Integrator')
+casADi__IdasIntegrator__creator
+  :: Function -> Function -> IO Integrator
+casADi__IdasIntegrator__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IdasIntegrator__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+idasIntegrator_creator :: Function -> Function -> IO Integrator
+idasIntegrator_creator = casADi__IdasIntegrator__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IdasIntegrator__IdasIntegrator" c_CasADi__IdasIntegrator__IdasIntegrator
+  :: IO (Ptr IdasIntegrator')
+casADi__IdasIntegrator__IdasIntegrator
+  :: IO IdasIntegrator
+casADi__IdasIntegrator__IdasIntegrator  =
+  c_CasADi__IdasIntegrator__IdasIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::IdasIntegrator::IdasIntegrator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::IdasIntegrator::IdasIntegrator(const Function &f, const Function &g=Function())
+>------------------------------------------------------------------------
+>
+>Create an integrator for a fully implicit DAE with quadrature states (nz is
+>the number of states not to be included in the state vector)
+>
+>Create an integrator for a fully implicit DAE with quadrature states (nz is
+>the number of states not to be included in the state vector)
+>
+>Parameters:
+>-----------
+>
+>f:  dynamical system
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>g:  backwards system
+>
+>>Input scheme: CasADi::RDAEInput (RDAE_NUM_IN = 8) [rdaeIn]
+>+-----------+-------+-------------------------------+
+>| Full name | Short |          Description          |
+>+===========+=======+===============================+
+>| RDAE_RX   | rx    | Backward differential state . |
+>+-----------+-------+-------------------------------+
+>| RDAE_RZ   | rz    | Backward algebraic state .    |
+>+-----------+-------+-------------------------------+
+>| RDAE_RP   | rp    | Backward parameter vector .   |
+>+-----------+-------+-------------------------------+
+>| RDAE_X    | x     | Forward differential state .  |
+>+-----------+-------+-------------------------------+
+>| RDAE_Z    | z     | Forward algebraic state .     |
+>+-----------+-------+-------------------------------+
+>| RDAE_P    | p     | Parameter vector .            |
+>+-----------+-------+-------------------------------+
+>| RDAE_T    | t     | Explicit time dependence .    |
+>+-----------+-------+-------------------------------+
+>
+>>Output scheme: CasADi::RDAEOutput (RDAE_NUM_OUT = 4) [rdaeOut]
+>+-----------+-------+-------------------------------------------+
+>| Full name | Short |                Description                |
+>+===========+=======+===========================================+
+>| RDAE_ODE  | ode   | Right hand side of ODE. .                 |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_ALG  | alg   | Right hand side of algebraic equations. . |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_QUAD | quad  | Right hand side of quadratures. .         |
+>+-----------+-------+-------------------------------------------+
+-}
+idasIntegrator :: IO IdasIntegrator
+idasIntegrator = casADi__IdasIntegrator__IdasIntegrator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IdasIntegrator__IdasIntegrator_TIC" c_CasADi__IdasIntegrator__IdasIntegrator_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr IdasIntegrator')
+casADi__IdasIntegrator__IdasIntegrator'
+  :: Function -> Function -> IO IdasIntegrator
+casADi__IdasIntegrator__IdasIntegrator' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IdasIntegrator__IdasIntegrator_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+idasIntegrator' :: Function -> Function -> IO IdasIntegrator
+idasIntegrator' = casADi__IdasIntegrator__IdasIntegrator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IdasIntegrator__IdasIntegrator_TIC_TIC" c_CasADi__IdasIntegrator__IdasIntegrator_TIC_TIC
+  :: Ptr Function' -> IO (Ptr IdasIntegrator')
+casADi__IdasIntegrator__IdasIntegrator''
+  :: Function -> IO IdasIntegrator
+casADi__IdasIntegrator__IdasIntegrator'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IdasIntegrator__IdasIntegrator_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+idasIntegrator'' :: Function -> IO IdasIntegrator
+idasIntegrator'' = casADi__IdasIntegrator__IdasIntegrator''
+
diff --git a/Casadi/Wrappers/Classes/ImplicitFixedStepIntegrator.hs b/Casadi/Wrappers/Classes/ImplicitFixedStepIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ImplicitFixedStepIntegrator.hs
@@ -0,0 +1,66 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ImplicitFixedStepIntegrator
+       (
+         ImplicitFixedStepIntegrator,
+         ImplicitFixedStepIntegratorClass(..),
+         implicitFixedStepIntegrator,
+         implicitFixedStepIntegrator_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show ImplicitFixedStepIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ImplicitFixedStepIntegrator__checkNode" c_CasADi__ImplicitFixedStepIntegrator__checkNode
+  :: Ptr ImplicitFixedStepIntegrator' -> IO CInt
+casADi__ImplicitFixedStepIntegrator__checkNode
+  :: ImplicitFixedStepIntegrator -> IO Bool
+casADi__ImplicitFixedStepIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ImplicitFixedStepIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+implicitFixedStepIntegrator_checkNode :: ImplicitFixedStepIntegratorClass a => a -> IO Bool
+implicitFixedStepIntegrator_checkNode x = casADi__ImplicitFixedStepIntegrator__checkNode (castImplicitFixedStepIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ImplicitFixedStepIntegrator__ImplicitFixedStepIntegrator" c_CasADi__ImplicitFixedStepIntegrator__ImplicitFixedStepIntegrator
+  :: IO (Ptr ImplicitFixedStepIntegrator')
+casADi__ImplicitFixedStepIntegrator__ImplicitFixedStepIntegrator
+  :: IO ImplicitFixedStepIntegrator
+casADi__ImplicitFixedStepIntegrator__ImplicitFixedStepIntegrator  =
+  c_CasADi__ImplicitFixedStepIntegrator__ImplicitFixedStepIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+implicitFixedStepIntegrator :: IO ImplicitFixedStepIntegrator
+implicitFixedStepIntegrator = casADi__ImplicitFixedStepIntegrator__ImplicitFixedStepIntegrator
+
diff --git a/Casadi/Wrappers/Classes/ImplicitFunction.hs b/Casadi/Wrappers/Classes/ImplicitFunction.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/ImplicitFunction.hs
@@ -0,0 +1,103 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.ImplicitFunction
+       (
+         ImplicitFunction,
+         ImplicitFunctionClass(..),
+         implicitFunction_checkNode,
+         implicitFunction_getF,
+         implicitFunction_getJac,
+         implicitFunction_getLinsol,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show ImplicitFunction where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ImplicitFunction__checkNode" c_CasADi__ImplicitFunction__checkNode
+  :: Ptr ImplicitFunction' -> IO CInt
+casADi__ImplicitFunction__checkNode
+  :: ImplicitFunction -> IO Bool
+casADi__ImplicitFunction__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ImplicitFunction__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+implicitFunction_checkNode :: ImplicitFunctionClass a => a -> IO Bool
+implicitFunction_checkNode x = casADi__ImplicitFunction__checkNode (castImplicitFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ImplicitFunction__getF" c_CasADi__ImplicitFunction__getF
+  :: Ptr ImplicitFunction' -> IO (Ptr Function')
+casADi__ImplicitFunction__getF
+  :: ImplicitFunction -> IO Function
+casADi__ImplicitFunction__getF x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ImplicitFunction__getF x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access F.
+-}
+implicitFunction_getF :: ImplicitFunctionClass a => a -> IO Function
+implicitFunction_getF x = casADi__ImplicitFunction__getF (castImplicitFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ImplicitFunction__getJac" c_CasADi__ImplicitFunction__getJac
+  :: Ptr ImplicitFunction' -> IO (Ptr Function')
+casADi__ImplicitFunction__getJac
+  :: ImplicitFunction -> IO Function
+casADi__ImplicitFunction__getJac x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ImplicitFunction__getJac x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access Jacobian.
+-}
+implicitFunction_getJac :: ImplicitFunctionClass a => a -> IO Function
+implicitFunction_getJac x = casADi__ImplicitFunction__getJac (castImplicitFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__ImplicitFunction__getLinsol" c_CasADi__ImplicitFunction__getLinsol
+  :: Ptr ImplicitFunction' -> IO (Ptr LinearSolver')
+casADi__ImplicitFunction__getLinsol
+  :: ImplicitFunction -> IO LinearSolver
+casADi__ImplicitFunction__getLinsol x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ImplicitFunction__getLinsol x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access linear solver.
+-}
+implicitFunction_getLinsol :: ImplicitFunctionClass a => a -> IO LinearSolver
+implicitFunction_getLinsol x = casADi__ImplicitFunction__getLinsol (castImplicitFunction x)
+
diff --git a/Casadi/Wrappers/Classes/IndexList.hs b/Casadi/Wrappers/Classes/IndexList.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/IndexList.hs
@@ -0,0 +1,121 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.IndexList
+       (
+         IndexList,
+         IndexListClass(..),
+         indexList,
+         indexList',
+         indexList'',
+         indexList''',
+         indexList_getAll,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IndexList__getAll" c_CasADi__IndexList__getAll
+  :: Ptr IndexList' -> CInt -> IO (Ptr (CppVec CInt))
+casADi__IndexList__getAll
+  :: IndexList -> Int -> IO (Vector Int)
+casADi__IndexList__getAll x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__IndexList__getAll x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get a vector
+>of indices.
+-}
+indexList_getAll :: IndexListClass a => a -> Int -> IO (Vector Int)
+indexList_getAll x = casADi__IndexList__getAll (castIndexList x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IndexList__IndexList" c_CasADi__IndexList__IndexList
+  :: IO (Ptr IndexList')
+casADi__IndexList__IndexList
+  :: IO IndexList
+casADi__IndexList__IndexList  =
+  c_CasADi__IndexList__IndexList  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::IndexList::IndexList()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Constructor.
+>
+>>  CasADi::IndexList::IndexList(int i)
+>
+>>  CasADi::IndexList::IndexList(const std::vector< int > &i)
+>
+>>  CasADi::IndexList::IndexList(const Slice &i)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+indexList :: IO IndexList
+indexList = casADi__IndexList__IndexList
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IndexList__IndexList_TIC" c_CasADi__IndexList__IndexList_TIC
+  :: CInt -> IO (Ptr IndexList')
+casADi__IndexList__IndexList'
+  :: Int -> IO IndexList
+casADi__IndexList__IndexList' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IndexList__IndexList_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+indexList' :: Int -> IO IndexList
+indexList' = casADi__IndexList__IndexList'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IndexList__IndexList_TIC_TIC" c_CasADi__IndexList__IndexList_TIC_TIC
+  :: Ptr (CppVec CInt) -> IO (Ptr IndexList')
+casADi__IndexList__IndexList''
+  :: Vector Int -> IO IndexList
+casADi__IndexList__IndexList'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IndexList__IndexList_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+indexList'' :: Vector Int -> IO IndexList
+indexList'' = casADi__IndexList__IndexList''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__IndexList__IndexList_TIC_TIC_TIC" c_CasADi__IndexList__IndexList_TIC_TIC_TIC
+  :: Ptr Slice' -> IO (Ptr IndexList')
+casADi__IndexList__IndexList'''
+  :: Slice -> IO IndexList
+casADi__IndexList__IndexList''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IndexList__IndexList_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+indexList''' :: Slice -> IO IndexList
+indexList''' = casADi__IndexList__IndexList'''
+
diff --git a/Casadi/Wrappers/Classes/Integrator.hs b/Casadi/Wrappers/Classes/Integrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Integrator.hs
@@ -0,0 +1,193 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Integrator
+       (
+         Integrator,
+         IntegratorClass(..),
+         integrator,
+         integrator_checkNode,
+         integrator_clone,
+         integrator_getDAE,
+         integrator_integrate,
+         integrator_integrateB,
+         integrator_printStats',
+         integrator_reset,
+         integrator_resetB,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Integrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__clone" c_CasADi__Integrator__clone
+  :: Ptr Integrator' -> IO (Ptr Integrator')
+casADi__Integrator__clone
+  :: Integrator -> IO Integrator
+casADi__Integrator__clone x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Integrator__clone x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Clone.
+-}
+integrator_clone :: IntegratorClass a => a -> IO Integrator
+integrator_clone x = casADi__Integrator__clone (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__printStats_TIC" c_CasADi__Integrator__printStats_TIC
+  :: Ptr Integrator' -> IO ()
+casADi__Integrator__printStats'
+  :: Integrator -> IO ()
+casADi__Integrator__printStats' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Integrator__printStats_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+integrator_printStats' :: IntegratorClass a => a -> IO ()
+integrator_printStats' x = casADi__Integrator__printStats' (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__reset" c_CasADi__Integrator__reset
+  :: Ptr Integrator' -> IO ()
+casADi__Integrator__reset
+  :: Integrator -> IO ()
+casADi__Integrator__reset x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Integrator__reset x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Reset the forward problem Time will be set to t0 and state to
+>input(INTEGRATOR_X0)
+-}
+integrator_reset :: IntegratorClass a => a -> IO ()
+integrator_reset x = casADi__Integrator__reset (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__integrate" c_CasADi__Integrator__integrate
+  :: Ptr Integrator' -> CDouble -> IO ()
+casADi__Integrator__integrate
+  :: Integrator -> Double -> IO ()
+casADi__Integrator__integrate x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Integrator__integrate x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Integrate forward until a specified time point.
+-}
+integrator_integrate :: IntegratorClass a => a -> Double -> IO ()
+integrator_integrate x = casADi__Integrator__integrate (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__resetB" c_CasADi__Integrator__resetB
+  :: Ptr Integrator' -> IO ()
+casADi__Integrator__resetB
+  :: Integrator -> IO ()
+casADi__Integrator__resetB x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Integrator__resetB x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Reset the backward problem Time will be set to tf and backward state to
+>input(INTEGRATOR_RX0)
+-}
+integrator_resetB :: IntegratorClass a => a -> IO ()
+integrator_resetB x = casADi__Integrator__resetB (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__integrateB" c_CasADi__Integrator__integrateB
+  :: Ptr Integrator' -> CDouble -> IO ()
+casADi__Integrator__integrateB
+  :: Integrator -> Double -> IO ()
+casADi__Integrator__integrateB x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Integrator__integrateB x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Integrate backward until a specified time point.
+-}
+integrator_integrateB :: IntegratorClass a => a -> Double -> IO ()
+integrator_integrateB x = casADi__Integrator__integrateB (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__checkNode" c_CasADi__Integrator__checkNode
+  :: Ptr Integrator' -> IO CInt
+casADi__Integrator__checkNode
+  :: Integrator -> IO Bool
+casADi__Integrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Integrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+integrator_checkNode :: IntegratorClass a => a -> IO Bool
+integrator_checkNode x = casADi__Integrator__checkNode (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__getDAE" c_CasADi__Integrator__getDAE
+  :: Ptr Integrator' -> IO (Ptr Function')
+casADi__Integrator__getDAE
+  :: Integrator -> IO Function
+casADi__Integrator__getDAE x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Integrator__getDAE x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the DAE.
+-}
+integrator_getDAE :: IntegratorClass a => a -> IO Function
+integrator_getDAE x = casADi__Integrator__getDAE (castIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Integrator__Integrator" c_CasADi__Integrator__Integrator
+  :: IO (Ptr Integrator')
+casADi__Integrator__Integrator
+  :: IO Integrator
+casADi__Integrator__Integrator  =
+  c_CasADi__Integrator__Integrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+integrator :: IO Integrator
+integrator = casADi__Integrator__Integrator
+
diff --git a/Casadi/Wrappers/Classes/IpoptSolver.hs b/Casadi/Wrappers/Classes/IpoptSolver.hs
--- a/Casadi/Wrappers/Classes/IpoptSolver.hs
+++ b/Casadi/Wrappers/Classes/IpoptSolver.hs
@@ -11,8 +11,8 @@
          IpoptSolverClass(..),
          ipoptSolver,
          ipoptSolver',
-         ipoptSolver'',
          ipoptSolver_checkNode,
+         ipoptSolver_creator,
          ipoptSolver_getReducedHessian,
        ) where
 
@@ -71,6 +71,20 @@
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__IpoptSolver__creator" c_CasADi__IpoptSolver__creator
+  :: Ptr Function' -> IO (Ptr NLPSolver')
+casADi__IpoptSolver__creator
+  :: Function -> IO NLPSolver
+casADi__IpoptSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__IpoptSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+ipoptSolver_creator :: Function -> IO NLPSolver
+ipoptSolver_creator = casADi__IpoptSolver__creator
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__IpoptSolver__IpoptSolver" c_CasADi__IpoptSolver__IpoptSolver
   :: IO (Ptr IpoptSolver')
 casADi__IpoptSolver__IpoptSolver
@@ -85,12 +99,12 @@
 >
 >Default constructor.
 >
->>  CasADi::IpoptSolver::IpoptSolver(const FX &F, const FX &G)
+>>  CasADi::IpoptSolver::IpoptSolver(const Function &F, const Function &G)
 >------------------------------------------------------------------------
 >
->Create an NLP solver instance (legacy syntax)
+>[DEPRECATED] Create an NLP solver instance (legacy syntax)
 >
->>  CasADi::IpoptSolver::IpoptSolver(const FX &nlp)
+>>  CasADi::IpoptSolver::IpoptSolver(const Function &nlp)
 >------------------------------------------------------------------------
 >
 >Create an NLP solver instance.
@@ -101,29 +115,14 @@
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__IpoptSolver__IpoptSolver_TIC" c_CasADi__IpoptSolver__IpoptSolver_TIC
-  :: Ptr FX' -> Ptr FX' -> IO (Ptr IpoptSolver')
+  :: Ptr Function' -> IO (Ptr IpoptSolver')
 casADi__IpoptSolver__IpoptSolver'
-  :: FX -> FX -> IO IpoptSolver
-casADi__IpoptSolver__IpoptSolver' x0 x1 =
+  :: Function -> IO IpoptSolver
+casADi__IpoptSolver__IpoptSolver' x0 =
   withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__IpoptSolver__IpoptSolver_TIC x0' x1' >>= wrapReturn
+  c_CasADi__IpoptSolver__IpoptSolver_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-ipoptSolver' :: FX -> FX -> IO IpoptSolver
+ipoptSolver' :: Function -> IO IpoptSolver
 ipoptSolver' = casADi__IpoptSolver__IpoptSolver'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__IpoptSolver__IpoptSolver_TIC_TIC" c_CasADi__IpoptSolver__IpoptSolver_TIC_TIC
-  :: Ptr FX' -> IO (Ptr IpoptSolver')
-casADi__IpoptSolver__IpoptSolver''
-  :: FX -> IO IpoptSolver
-casADi__IpoptSolver__IpoptSolver'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__IpoptSolver__IpoptSolver_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-ipoptSolver'' :: FX -> IO IpoptSolver
-ipoptSolver'' = casADi__IpoptSolver__IpoptSolver''
 
diff --git a/Casadi/Wrappers/Classes/KinsolSolver.hs b/Casadi/Wrappers/Classes/KinsolSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/KinsolSolver.hs
@@ -0,0 +1,144 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.KinsolSolver
+       (
+         KinsolSolver,
+         KinsolSolverClass(..),
+         kinsolSolver,
+         kinsolSolver',
+         kinsolSolver'',
+         kinsolSolver''',
+         kinsolSolver_checkNode,
+         kinsolSolver_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show KinsolSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__KinsolSolver__checkNode" c_CasADi__KinsolSolver__checkNode
+  :: Ptr KinsolSolver' -> IO CInt
+casADi__KinsolSolver__checkNode
+  :: KinsolSolver -> IO Bool
+casADi__KinsolSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__KinsolSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+kinsolSolver_checkNode :: KinsolSolverClass a => a -> IO Bool
+kinsolSolver_checkNode x = casADi__KinsolSolver__checkNode (castKinsolSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__KinsolSolver__creator" c_CasADi__KinsolSolver__creator
+  :: Ptr Function' -> Ptr Function' -> Ptr LinearSolver' -> IO (Ptr ImplicitFunction')
+casADi__KinsolSolver__creator
+  :: Function -> Function -> LinearSolver -> IO ImplicitFunction
+casADi__KinsolSolver__creator x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__KinsolSolver__creator x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+kinsolSolver_creator :: Function -> Function -> LinearSolver -> IO ImplicitFunction
+kinsolSolver_creator = casADi__KinsolSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__KinsolSolver__KinsolSolver" c_CasADi__KinsolSolver__KinsolSolver
+  :: IO (Ptr KinsolSolver')
+casADi__KinsolSolver__KinsolSolver
+  :: IO KinsolSolver
+casADi__KinsolSolver__KinsolSolver  =
+  c_CasADi__KinsolSolver__KinsolSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::KinsolSolver::KinsolSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::KinsolSolver::KinsolSolver(const Function &f, const Function &jac=Function(), const LinearSolver &linsol=LinearSolver())
+>------------------------------------------------------------------------
+>
+>Create an KINSOL instance.
+>
+>Parameters:
+>-----------
+>
+>f:   Function mapping from (n+1) inputs to 1 output
+-}
+kinsolSolver :: IO KinsolSolver
+kinsolSolver = casADi__KinsolSolver__KinsolSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__KinsolSolver__KinsolSolver_TIC" c_CasADi__KinsolSolver__KinsolSolver_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr LinearSolver' -> IO (Ptr KinsolSolver')
+casADi__KinsolSolver__KinsolSolver'
+  :: Function -> Function -> LinearSolver -> IO KinsolSolver
+casADi__KinsolSolver__KinsolSolver' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__KinsolSolver__KinsolSolver_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+kinsolSolver' :: Function -> Function -> LinearSolver -> IO KinsolSolver
+kinsolSolver' = casADi__KinsolSolver__KinsolSolver'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__KinsolSolver__KinsolSolver_TIC_TIC" c_CasADi__KinsolSolver__KinsolSolver_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr KinsolSolver')
+casADi__KinsolSolver__KinsolSolver''
+  :: Function -> Function -> IO KinsolSolver
+casADi__KinsolSolver__KinsolSolver'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__KinsolSolver__KinsolSolver_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+kinsolSolver'' :: Function -> Function -> IO KinsolSolver
+kinsolSolver'' = casADi__KinsolSolver__KinsolSolver''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__KinsolSolver__KinsolSolver_TIC_TIC_TIC" c_CasADi__KinsolSolver__KinsolSolver_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr KinsolSolver')
+casADi__KinsolSolver__KinsolSolver'''
+  :: Function -> IO KinsolSolver
+casADi__KinsolSolver__KinsolSolver''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__KinsolSolver__KinsolSolver_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+kinsolSolver''' :: Function -> IO KinsolSolver
+kinsolSolver''' = casADi__KinsolSolver__KinsolSolver'''
+
diff --git a/Casadi/Wrappers/Classes/LPSolver.hs b/Casadi/Wrappers/Classes/LPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/LPSolver.hs
@@ -0,0 +1,66 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.LPSolver
+       (
+         LPSolver,
+         LPSolverClass(..),
+         lpSolver,
+         lpSolver_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show LPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LPSolver__checkNode" c_CasADi__LPSolver__checkNode
+  :: Ptr LPSolver' -> IO CInt
+casADi__LPSolver__checkNode
+  :: LPSolver -> IO Bool
+casADi__LPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+lpSolver_checkNode :: LPSolverClass a => a -> IO Bool
+lpSolver_checkNode x = casADi__LPSolver__checkNode (castLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LPSolver__LPSolver" c_CasADi__LPSolver__LPSolver
+  :: IO (Ptr LPSolver')
+casADi__LPSolver__LPSolver
+  :: IO LPSolver
+casADi__LPSolver__LPSolver  =
+  c_CasADi__LPSolver__LPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+lpSolver :: IO LPSolver
+lpSolver = casADi__LPSolver__LPSolver
+
diff --git a/Casadi/Wrappers/Classes/LPStructure.hs b/Casadi/Wrappers/Classes/LPStructure.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/LPStructure.hs
@@ -0,0 +1,49 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.LPStructure
+       (
+         LPStructure,
+         LPStructureClass(..),
+         lpStructure,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show LPStructure where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LPStructIOSchemeVector_CasADi__Sparsity___LPStructure" c_CasADi__LPStructIOSchemeVector_CasADi__Sparsity___LPStructure
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr LPStructure')
+casADi__LPStructIOSchemeVector_CasADi__Sparsity___LPStructure
+  :: Vector Sparsity -> IO LPStructure
+casADi__LPStructIOSchemeVector_CasADi__Sparsity___LPStructure x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LPStructIOSchemeVector_CasADi__Sparsity___LPStructure x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+lpStructure :: Vector Sparsity -> IO LPStructure
+lpStructure = casADi__LPStructIOSchemeVector_CasADi__Sparsity___LPStructure
+
diff --git a/Casadi/Wrappers/Classes/LinearSolver.hs b/Casadi/Wrappers/Classes/LinearSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/LinearSolver.hs
@@ -0,0 +1,229 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.LinearSolver
+       (
+         LinearSolver,
+         LinearSolverClass(..),
+         linearSolver,
+         linearSolver',
+         linearSolver'',
+         linearSolver_checkNode,
+         linearSolver_prepare,
+         linearSolver_prepared,
+         linearSolver_solve,
+         linearSolver_solve',
+         linearSolver_solve'',
+         linearSolver_solve''',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show LinearSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__prepare" c_CasADi__LinearSolver__prepare
+  :: Ptr LinearSolver' -> IO ()
+casADi__LinearSolver__prepare
+  :: LinearSolver -> IO ()
+casADi__LinearSolver__prepare x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LinearSolver__prepare x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Factorize the matrix.
+-}
+linearSolver_prepare :: LinearSolverClass a => a -> IO ()
+linearSolver_prepare x = casADi__LinearSolver__prepare (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__solve" c_CasADi__LinearSolver__solve
+  :: Ptr LinearSolver' -> CInt -> IO ()
+casADi__LinearSolver__solve
+  :: LinearSolver -> Bool -> IO ()
+casADi__LinearSolver__solve x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__LinearSolver__solve x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::LinearSolver::solve(bool transpose=false)
+>------------------------------------------------------------------------
+>
+>Solve the system of equations, internal vector.
+>
+>>  void CasADi::LinearSolver::solve(double *x, int nrhs=1, bool transpose=false)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+> Solve the factorized system of equations.
+>
+>>  MX CasADi::LinearSolver::solve(const MX &A, const MX &B, bool transpose=false)
+>------------------------------------------------------------------------
+>
+>Create a solve node.
+>
+>>  void CasADi::Function::solve()
+>------------------------------------------------------------------------
+>
+>the same as evaluate()
+-}
+linearSolver_solve :: LinearSolverClass a => a -> Bool -> IO ()
+linearSolver_solve x = casADi__LinearSolver__solve (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__solve_TIC" c_CasADi__LinearSolver__solve_TIC
+  :: Ptr LinearSolver' -> IO ()
+casADi__LinearSolver__solve'
+  :: LinearSolver -> IO ()
+casADi__LinearSolver__solve' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LinearSolver__solve_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+linearSolver_solve' :: LinearSolverClass a => a -> IO ()
+linearSolver_solve' x = casADi__LinearSolver__solve' (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__solve_TIC_TIC" c_CasADi__LinearSolver__solve_TIC_TIC
+  :: Ptr LinearSolver' -> Ptr MX' -> Ptr MX' -> CInt -> IO (Ptr MX')
+casADi__LinearSolver__solve''
+  :: LinearSolver -> MX -> MX -> Bool -> IO MX
+casADi__LinearSolver__solve'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__LinearSolver__solve_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+linearSolver_solve'' :: LinearSolverClass a => a -> MX -> MX -> Bool -> IO MX
+linearSolver_solve'' x = casADi__LinearSolver__solve'' (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__solve_TIC_TIC_TIC" c_CasADi__LinearSolver__solve_TIC_TIC_TIC
+  :: Ptr LinearSolver' -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__LinearSolver__solve'''
+  :: LinearSolver -> MX -> MX -> IO MX
+casADi__LinearSolver__solve''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__LinearSolver__solve_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+linearSolver_solve''' :: LinearSolverClass a => a -> MX -> MX -> IO MX
+linearSolver_solve''' x = casADi__LinearSolver__solve''' (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__prepared" c_CasADi__LinearSolver__prepared
+  :: Ptr LinearSolver' -> IO CInt
+casADi__LinearSolver__prepared
+  :: LinearSolver -> IO Bool
+casADi__LinearSolver__prepared x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LinearSolver__prepared x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if prepared.
+-}
+linearSolver_prepared :: LinearSolverClass a => a -> IO Bool
+linearSolver_prepared x = casADi__LinearSolver__prepared (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__checkNode" c_CasADi__LinearSolver__checkNode
+  :: Ptr LinearSolver' -> IO CInt
+casADi__LinearSolver__checkNode
+  :: LinearSolver -> IO Bool
+casADi__LinearSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LinearSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+linearSolver_checkNode :: LinearSolverClass a => a -> IO Bool
+linearSolver_checkNode x = casADi__LinearSolver__checkNode (castLinearSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__LinearSolver" c_CasADi__LinearSolver__LinearSolver
+  :: IO (Ptr LinearSolver')
+casADi__LinearSolver__LinearSolver
+  :: IO LinearSolver
+casADi__LinearSolver__LinearSolver  =
+  c_CasADi__LinearSolver__LinearSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::LinearSolver::LinearSolver()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Default (empty) constructor
+>
+>>  CasADi::LinearSolver::LinearSolver(const Sparsity &sp, int nrhs=1)
+>------------------------------------------------------------------------
+>
+>Create a linear solver given a sparsity pattern (creates a dummy solver
+>only)
+-}
+linearSolver :: IO LinearSolver
+linearSolver = casADi__LinearSolver__LinearSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__LinearSolver_TIC" c_CasADi__LinearSolver__LinearSolver_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr LinearSolver')
+casADi__LinearSolver__LinearSolver'
+  :: Sparsity -> Int -> IO LinearSolver
+casADi__LinearSolver__LinearSolver' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__LinearSolver__LinearSolver_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+linearSolver' :: Sparsity -> Int -> IO LinearSolver
+linearSolver' = casADi__LinearSolver__LinearSolver'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__LinearSolver__LinearSolver_TIC_TIC" c_CasADi__LinearSolver__LinearSolver_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr LinearSolver')
+casADi__LinearSolver__LinearSolver''
+  :: Sparsity -> IO LinearSolver
+casADi__LinearSolver__LinearSolver'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__LinearSolver__LinearSolver_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+linearSolver'' :: Sparsity -> IO LinearSolver
+linearSolver'' = casADi__LinearSolver__LinearSolver''
+
diff --git a/Casadi/Wrappers/Classes/MX.hs b/Casadi/Wrappers/Classes/MX.hs
--- a/Casadi/Wrappers/Classes/MX.hs
+++ b/Casadi/Wrappers/Classes/MX.hs
@@ -18,2308 +18,2957 @@
          mx'''''',
          mx''''''',
          mx'''''''',
-         mx''''''''',
-         mx'''''''''',
-         mx''''''''''',
-         mx'''''''''''',
-         mx___add__,
-         mx___constpow__,
-         mx___div__,
-         mx___eq__,
-         mx___hash__,
-         mx___le__,
-         mx___lt__,
-         mx___mpower__,
-         mx___mrdivide__,
-         mx___mul__,
-         mx___ne__,
-         mx___nonzero__,
-         mx___pow__,
-         mx___sub__,
-         mx___truediv__,
-         mx_append,
-         mx_arccos,
-         mx_arccosh,
-         mx_arcsin,
-         mx_arcsinh,
-         mx_arctan,
-         mx_arctan2,
-         mx_arctanh,
-         mx_attachAssert,
-         mx_attachAssert',
-         mx_binary,
-         mx_ceil,
-         mx_constpow,
-         mx_cos,
-         mx_cosh,
-         mx_enlarge,
-         mx_erase,
-         mx_erf,
-         mx_erfinv,
-         mx_exp,
-         mx_eye,
-         mx_fabs,
-         mx_floor,
-         mx_fmax,
-         mx_fmin,
-         mx_getDep,
-         mx_getDep',
-         mx_getEqualityCheckingDepth,
-         mx_getEvaluationOutput,
-         mx_getFunction,
-         mx_getMatrixValue,
-         mx_getMaxNumCallsInPrint,
-         mx_getNZ,
-         mx_getNZ',
-         mx_getName,
-         mx_getNdeps,
-         mx_getNumOutputs,
-         mx_getOp,
-         mx_getOutput,
-         mx_getOutput',
-         mx_getTemp,
-         mx_getValue,
-         mx_if_else_zero,
-         mx_inf,
-         mx_inf',
-         mx_inf'',
-         mx_inf''',
-         mx_inner_prod,
-         mx_isBinary,
-         mx_isCommutative,
-         mx_isConstant,
-         mx_isEqual,
-         mx_isEqual',
-         mx_isEvaluation,
-         mx_isEvaluationOutput,
-         mx_isMultiplication,
-         mx_isNorm,
-         mx_isOperation,
-         mx_isSymbolic,
-         mx_isUnary,
-         mx_lift,
-         mx_log,
-         mx_log10,
-         mx_logic_and,
-         mx_logic_not,
-         mx_logic_or,
-         mx_makeDense,
-         mx_makeDense',
-         mx_mul,
-         mx_mul',
-         mx_mul_full,
-         mx_mul_full',
-         mx_nan,
-         mx_nan',
-         mx_nan'',
-         mx_nan''',
-         mx_numel,
-         mx_ones,
-         mx_ones',
-         mx_ones'',
-         mx_operator_minus,
-         mx_outer_prod,
-         mx_printme,
-         mx_repmat,
-         mx_repmat',
-         mx_setEqualityCheckingDepth,
-         mx_setEqualityCheckingDepth',
-         mx_setMaxNumCallsInPrint,
-         mx_setMaxNumCallsInPrint',
-         mx_setSparse,
-         mx_setSparse',
-         mx_setTemp,
-         mx_sign,
-         mx_sin,
-         mx_sinh,
-         mx_size,
-         mx_size1,
-         mx_size2,
-         mx_sparse,
-         mx_sparse',
-         mx_sparsityRef,
-         mx_sqrt,
-         mx_tan,
-         mx_tanh,
-         mx_unary,
-         mx_zeros,
-         mx_zeros',
-         mx_zeros'',
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.Classes.PrintableObject
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-instance Show MX where
-  show = unsafePerformIO . printableObject_getDescription
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__size1" c_CasADi__MX__size1
-  :: Ptr MX' -> IO CInt
-casADi__MX__size1
-  :: MX -> IO Int
-casADi__MX__size1 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__size1 x0' >>= wrapReturn
-
--- classy wrapper
-mx_size1 :: MXClass a => a -> IO Int
-mx_size1 x = casADi__MX__size1 (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__size2" c_CasADi__MX__size2
-  :: Ptr MX' -> IO CInt
-casADi__MX__size2
-  :: MX -> IO Int
-casADi__MX__size2 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__size2 x0' >>= wrapReturn
-
--- classy wrapper
-mx_size2 :: MXClass a => a -> IO Int
-mx_size2 x = casADi__MX__size2 (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__size" c_CasADi__MX__size
-  :: Ptr MX' -> IO CInt
-casADi__MX__size
-  :: MX -> IO Int
-casADi__MX__size x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__size x0' >>= wrapReturn
-
--- classy wrapper
-mx_size :: MXClass a => a -> IO Int
-mx_size x = casADi__MX__size (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__numel" c_CasADi__MX__numel
-  :: Ptr MX' -> IO CInt
-casADi__MX__numel
-  :: MX -> IO Int
-casADi__MX__numel x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__numel x0' >>= wrapReturn
-
--- classy wrapper
-mx_numel :: MXClass a => a -> IO Int
-mx_numel x = casADi__MX__numel (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____nonzero__" c_CasADi__MX____nonzero__
-  :: Ptr MX' -> IO CInt
-casADi__MX____nonzero__
-  :: MX -> IO Bool
-casADi__MX____nonzero__ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX____nonzero__ x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns the truth value of an MX expression.
--}
-mx___nonzero__ :: MXClass a => a -> IO Bool
-mx___nonzero__ x = casADi__MX____nonzero__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sparsityRef" c_CasADi__MX__sparsityRef
-  :: Ptr MX' -> IO (Ptr CRSSparsity')
-casADi__MX__sparsityRef
-  :: MX -> IO CRSSparsity
-casADi__MX__sparsityRef x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__sparsityRef x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access the sparsity, make a copy if there are multiple references to it.
--}
-mx_sparsityRef :: MXClass a => a -> IO CRSSparsity
-mx_sparsityRef x = casADi__MX__sparsityRef (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__erase" c_CasADi__MX__erase
-  :: Ptr MX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__MX__erase
-  :: MX -> Vector Int -> Vector Int -> IO ()
-casADi__MX__erase x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__erase x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Erase a submatrix.
--}
-mx_erase :: MXClass a => a -> Vector Int -> Vector Int -> IO ()
-mx_erase x = casADi__MX__erase (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__enlarge" c_CasADi__MX__enlarge
-  :: Ptr MX' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__MX__enlarge
-  :: MX -> Int -> Int -> Vector Int -> Vector Int -> IO ()
-casADi__MX__enlarge x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__MX__enlarge x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-{-|
->Enlarge matrix Make the matrix larger by inserting empty rows and columns,
->keeping the existing non-zeros.
--}
-mx_enlarge :: MXClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
-mx_enlarge x = casADi__MX__enlarge (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__operator_minus" c_CasADi__MX__operator_minus
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__operator_minus
-  :: MX -> IO MX
-casADi__MX__operator_minus x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__operator_minus x0' >>= wrapReturn
-
--- classy wrapper
-mx_operator_minus :: MXClass a => a -> IO MX
-mx_operator_minus x = casADi__MX__operator_minus (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getDep" c_CasADi__MX__getDep
-  :: Ptr MX' -> CInt -> IO (Ptr MX')
-casADi__MX__getDep
-  :: MX -> Int -> IO MX
-casADi__MX__getDep x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__getDep x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the nth dependency as MX.
--}
-mx_getDep :: MXClass a => a -> Int -> IO MX
-mx_getDep x = casADi__MX__getDep (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getDep_TIC" c_CasADi__MX__getDep_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__getDep'
-  :: MX -> IO MX
-casADi__MX__getDep' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getDep_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_getDep' :: MXClass a => a -> IO MX
-mx_getDep' x = casADi__MX__getDep' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getNumOutputs" c_CasADi__MX__getNumOutputs
-  :: Ptr MX' -> IO CInt
-casADi__MX__getNumOutputs
-  :: MX -> IO Int
-casADi__MX__getNumOutputs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getNumOutputs x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Number of outputs.
--}
-mx_getNumOutputs :: MXClass a => a -> IO Int
-mx_getNumOutputs x = casADi__MX__getNumOutputs (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getOutput" c_CasADi__MX__getOutput
-  :: Ptr MX' -> CInt -> IO (Ptr MX')
-casADi__MX__getOutput
-  :: MX -> Int -> IO MX
-casADi__MX__getOutput x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__getOutput x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get an output.
--}
-mx_getOutput :: MXClass a => a -> Int -> IO MX
-mx_getOutput x = casADi__MX__getOutput (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getOutput_TIC" c_CasADi__MX__getOutput_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__getOutput'
-  :: MX -> IO MX
-casADi__MX__getOutput' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getOutput_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_getOutput' :: MXClass a => a -> IO MX
-mx_getOutput' x = casADi__MX__getOutput' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getNdeps" c_CasADi__MX__getNdeps
-  :: Ptr MX' -> IO CInt
-casADi__MX__getNdeps
-  :: MX -> IO Int
-casADi__MX__getNdeps x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getNdeps x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of dependencies of a binary SX.
--}
-mx_getNdeps :: MXClass a => a -> IO Int
-mx_getNdeps x = casADi__MX__getNdeps (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getName" c_CasADi__MX__getName
-  :: Ptr MX' -> IO (Ptr StdString')
-casADi__MX__getName
-  :: MX -> IO String
-casADi__MX__getName x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getName x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the name.
--}
-mx_getName :: MXClass a => a -> IO String
-mx_getName x = casADi__MX__getName (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getValue" c_CasADi__MX__getValue
-  :: Ptr MX' -> IO CDouble
-casADi__MX__getValue
-  :: MX -> IO Double
-casADi__MX__getValue x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getValue x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the value (only for scalar constant nodes)
--}
-mx_getValue :: MXClass a => a -> IO Double
-mx_getValue x = casADi__MX__getValue (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getMatrixValue" c_CasADi__MX__getMatrixValue
-  :: Ptr MX' -> IO (Ptr DMatrix')
-casADi__MX__getMatrixValue
-  :: MX -> IO DMatrix
-casADi__MX__getMatrixValue x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getMatrixValue x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the value (only for constant nodes)
--}
-mx_getMatrixValue :: MXClass a => a -> IO DMatrix
-mx_getMatrixValue x = casADi__MX__getMatrixValue (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isSymbolic" c_CasADi__MX__isSymbolic
-  :: Ptr MX' -> IO CInt
-casADi__MX__isSymbolic
-  :: MX -> IO Bool
-casADi__MX__isSymbolic x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isSymbolic x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if symbolic.
--}
-mx_isSymbolic :: MXClass a => a -> IO Bool
-mx_isSymbolic x = casADi__MX__isSymbolic (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isConstant" c_CasADi__MX__isConstant
-  :: Ptr MX' -> IO CInt
-casADi__MX__isConstant
-  :: MX -> IO Bool
-casADi__MX__isConstant x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isConstant x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if constant.
--}
-mx_isConstant :: MXClass a => a -> IO Bool
-mx_isConstant x = casADi__MX__isConstant (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isEvaluation" c_CasADi__MX__isEvaluation
-  :: Ptr MX' -> IO CInt
-casADi__MX__isEvaluation
-  :: MX -> IO Bool
-casADi__MX__isEvaluation x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isEvaluation x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if evaluation.
--}
-mx_isEvaluation :: MXClass a => a -> IO Bool
-mx_isEvaluation x = casADi__MX__isEvaluation (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isEvaluationOutput" c_CasADi__MX__isEvaluationOutput
-  :: Ptr MX' -> IO CInt
-casADi__MX__isEvaluationOutput
-  :: MX -> IO Bool
-casADi__MX__isEvaluationOutput x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isEvaluationOutput x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if evaluation output.
--}
-mx_isEvaluationOutput :: MXClass a => a -> IO Bool
-mx_isEvaluationOutput x = casADi__MX__isEvaluationOutput (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getEvaluationOutput" c_CasADi__MX__getEvaluationOutput
-  :: Ptr MX' -> IO CInt
-casADi__MX__getEvaluationOutput
-  :: MX -> IO Int
-casADi__MX__getEvaluationOutput x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getEvaluationOutput x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the index of evaluation output - only valid when isEvaluationoutput() is
->true.
--}
-mx_getEvaluationOutput :: MXClass a => a -> IO Int
-mx_getEvaluationOutput x = casADi__MX__getEvaluationOutput (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isOperation" c_CasADi__MX__isOperation
-  :: Ptr MX' -> CInt -> IO CInt
-casADi__MX__isOperation
-  :: MX -> Int -> IO Bool
-casADi__MX__isOperation x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__isOperation x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Is it a certain operation.
--}
-mx_isOperation :: MXClass a => a -> Int -> IO Bool
-mx_isOperation x = casADi__MX__isOperation (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isMultiplication" c_CasADi__MX__isMultiplication
-  :: Ptr MX' -> IO CInt
-casADi__MX__isMultiplication
-  :: MX -> IO Bool
-casADi__MX__isMultiplication x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isMultiplication x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if multiplication.
--}
-mx_isMultiplication :: MXClass a => a -> IO Bool
-mx_isMultiplication x = casADi__MX__isMultiplication (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isCommutative" c_CasADi__MX__isCommutative
-  :: Ptr MX' -> IO CInt
-casADi__MX__isCommutative
-  :: MX -> IO Bool
-casADi__MX__isCommutative x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isCommutative x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if commutative operation.
--}
-mx_isCommutative :: MXClass a => a -> IO Bool
-mx_isCommutative x = casADi__MX__isCommutative (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isNorm" c_CasADi__MX__isNorm
-  :: Ptr MX' -> IO CInt
-casADi__MX__isNorm
-  :: MX -> IO Bool
-casADi__MX__isNorm x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isNorm x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if norm.
--}
-mx_isNorm :: MXClass a => a -> IO Bool
-mx_isNorm x = casADi__MX__isNorm (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getFunction" c_CasADi__MX__getFunction
-  :: Ptr MX' -> IO (Ptr FX')
-casADi__MX__getFunction
-  :: MX -> IO FX
-casADi__MX__getFunction x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getFunction x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get function.
--}
-mx_getFunction :: MXClass a => a -> IO FX
-mx_getFunction x = casADi__MX__getFunction (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isBinary" c_CasADi__MX__isBinary
-  :: Ptr MX' -> IO CInt
-casADi__MX__isBinary
-  :: MX -> IO Bool
-casADi__MX__isBinary x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isBinary x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Is binary operation.
--}
-mx_isBinary :: MXClass a => a -> IO Bool
-mx_isBinary x = casADi__MX__isBinary (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isUnary" c_CasADi__MX__isUnary
-  :: Ptr MX' -> IO CInt
-casADi__MX__isUnary
-  :: MX -> IO Bool
-casADi__MX__isUnary x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__isUnary x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Is unary operation.
--}
-mx_isUnary :: MXClass a => a -> IO Bool
-mx_isUnary x = casADi__MX__isUnary (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getOp" c_CasADi__MX__getOp
-  :: Ptr MX' -> IO CInt
-casADi__MX__getOp
-  :: MX -> IO Int
-casADi__MX__getOp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getOp x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get operation type.
--}
-mx_getOp :: MXClass a => a -> IO Int
-mx_getOp x = casADi__MX__getOp (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isEqual" c_CasADi__MX__isEqual
-  :: Ptr MX' -> Ptr MX' -> CInt -> IO CInt
-casADi__MX__isEqual
-  :: MX -> MX -> Int -> IO Bool
-casADi__MX__isEqual x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__isEqual x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  bool CasADi::MX::isEqual(const MX &y, int depth=0) const 
->------------------------------------------------------------------------
->
->Check if two nodes are equivalent up to a given depth. Depth=0 checks if the
->expressions are identical, i.e. points to the same node.
->
->a = x*x b = x*x
->
->a.isEqual(b,0) will return false, but a.isEqual(b,1) will return true
--}
-mx_isEqual :: MXClass a => a -> MX -> Int -> IO Bool
-mx_isEqual x = casADi__MX__isEqual (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__isEqual_TIC" c_CasADi__MX__isEqual_TIC
-  :: Ptr MX' -> Ptr MX' -> IO CInt
-casADi__MX__isEqual'
-  :: MX -> MX -> IO Bool
-casADi__MX__isEqual' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__isEqual_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_isEqual' :: MXClass a => a -> MX -> IO Bool
-mx_isEqual' x = casADi__MX__isEqual' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____hash__" c_CasADi__MX____hash__
-  :: Ptr MX' -> IO CLong
-casADi__MX____hash__
-  :: MX -> IO Int
-casADi__MX____hash__ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX____hash__ x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns a number that is unique for a given MXNode. If the MX does not point
->to any node, 0 is returned.
--}
-mx___hash__ :: MXClass a => a -> IO Int
-mx___hash__ x = casADi__MX____hash__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getTemp" c_CasADi__MX__getTemp
-  :: Ptr MX' -> IO CInt
-casADi__MX__getTemp
-  :: MX -> IO Int
-casADi__MX__getTemp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__getTemp x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the temporary variable.
--}
-mx_getTemp :: MXClass a => a -> IO Int
-mx_getTemp x = casADi__MX__getTemp (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setTemp" c_CasADi__MX__setTemp
-  :: Ptr MX' -> CInt -> IO ()
-casADi__MX__setTemp
-  :: MX -> Int -> IO ()
-casADi__MX__setTemp x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__setTemp x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the temporary variable.
--}
-mx_setTemp :: MXClass a => a -> Int -> IO ()
-mx_setTemp x = casADi__MX__setTemp (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__binary" c_CasADi__MX__binary
-  :: CInt -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__binary
-  :: Int -> MX -> MX -> IO MX
-casADi__MX__binary x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__binary x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-mx_binary :: Int -> MX -> MX -> IO MX
-mx_binary = casADi__MX__binary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__unary" c_CasADi__MX__unary
-  :: CInt -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__unary
-  :: Int -> MX -> IO MX
-casADi__MX__unary x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__unary x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-mx_unary :: Int -> MX -> IO MX
-mx_unary = casADi__MX__unary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sparse" c_CasADi__MX__sparse
-  :: CInt -> CInt -> IO (Ptr MX')
-casADi__MX__sparse
-  :: Int -> Int -> IO MX
-casADi__MX__sparse x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__sparse x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Sparse matrix of all zeros.
--}
-mx_sparse :: Int -> Int -> IO MX
-mx_sparse = casADi__MX__sparse
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sparse_TIC" c_CasADi__MX__sparse_TIC
-  :: CInt -> IO (Ptr MX')
-casADi__MX__sparse'
-  :: Int -> IO MX
-casADi__MX__sparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__sparse_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_sparse' :: Int -> IO MX
-mx_sparse' = casADi__MX__sparse'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__zeros" c_CasADi__MX__zeros
-  :: Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__zeros
-  :: CRSSparsity -> IO MX
-casADi__MX__zeros x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__zeros x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Dense matrix of all zeros.
--}
-mx_zeros :: CRSSparsity -> IO MX
-mx_zeros = casADi__MX__zeros
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__zeros_TIC" c_CasADi__MX__zeros_TIC
-  :: CInt -> CInt -> IO (Ptr MX')
-casADi__MX__zeros'
-  :: Int -> Int -> IO MX
-casADi__MX__zeros' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__zeros_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_zeros' :: Int -> Int -> IO MX
-mx_zeros' = casADi__MX__zeros'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__zeros_TIC_TIC" c_CasADi__MX__zeros_TIC_TIC
-  :: CInt -> IO (Ptr MX')
-casADi__MX__zeros''
-  :: Int -> IO MX
-casADi__MX__zeros'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__zeros_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_zeros'' :: Int -> IO MX
-mx_zeros'' = casADi__MX__zeros''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__ones" c_CasADi__MX__ones
-  :: Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__ones
-  :: CRSSparsity -> IO MX
-casADi__MX__ones x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__ones x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix of all ones.
--}
-mx_ones :: CRSSparsity -> IO MX
-mx_ones = casADi__MX__ones
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__ones_TIC" c_CasADi__MX__ones_TIC
-  :: CInt -> CInt -> IO (Ptr MX')
-casADi__MX__ones'
-  :: Int -> Int -> IO MX
-casADi__MX__ones' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__ones_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_ones' :: Int -> Int -> IO MX
-mx_ones' = casADi__MX__ones'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__ones_TIC_TIC" c_CasADi__MX__ones_TIC_TIC
-  :: CInt -> IO (Ptr MX')
-casADi__MX__ones''
-  :: Int -> IO MX
-casADi__MX__ones'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__ones_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_ones'' :: Int -> IO MX
-mx_ones'' = casADi__MX__ones''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__inf" c_CasADi__MX__inf
-  :: Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__inf
-  :: CRSSparsity -> IO MX
-casADi__MX__inf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__inf x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all inf
--}
-mx_inf :: CRSSparsity -> IO MX
-mx_inf = casADi__MX__inf
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__inf_TIC" c_CasADi__MX__inf_TIC
-  :: CInt -> CInt -> IO (Ptr MX')
-casADi__MX__inf'
-  :: Int -> Int -> IO MX
-casADi__MX__inf' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__inf_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_inf' :: Int -> Int -> IO MX
-mx_inf' = casADi__MX__inf'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__inf_TIC_TIC" c_CasADi__MX__inf_TIC_TIC
-  :: CInt -> IO (Ptr MX')
-casADi__MX__inf''
-  :: Int -> IO MX
-casADi__MX__inf'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__inf_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_inf'' :: Int -> IO MX
-mx_inf'' = casADi__MX__inf''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__inf_TIC_TIC_TIC" c_CasADi__MX__inf_TIC_TIC_TIC
-  :: IO (Ptr MX')
-casADi__MX__inf'''
-  :: IO MX
-casADi__MX__inf'''  =
-  c_CasADi__MX__inf_TIC_TIC_TIC  >>= wrapReturn
-
--- classy wrapper
-mx_inf''' :: IO MX
-mx_inf''' = casADi__MX__inf'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__nan" c_CasADi__MX__nan
-  :: Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__nan
-  :: CRSSparsity -> IO MX
-casADi__MX__nan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__nan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all nan
--}
-mx_nan :: CRSSparsity -> IO MX
-mx_nan = casADi__MX__nan
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__nan_TIC" c_CasADi__MX__nan_TIC
-  :: CInt -> CInt -> IO (Ptr MX')
-casADi__MX__nan'
-  :: Int -> Int -> IO MX
-casADi__MX__nan' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__nan_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_nan' :: Int -> Int -> IO MX
-mx_nan' = casADi__MX__nan'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__nan_TIC_TIC" c_CasADi__MX__nan_TIC_TIC
-  :: CInt -> IO (Ptr MX')
-casADi__MX__nan''
-  :: Int -> IO MX
-casADi__MX__nan'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__nan_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_nan'' :: Int -> IO MX
-mx_nan'' = casADi__MX__nan''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__nan_TIC_TIC_TIC" c_CasADi__MX__nan_TIC_TIC_TIC
-  :: IO (Ptr MX')
-casADi__MX__nan'''
-  :: IO MX
-casADi__MX__nan'''  =
-  c_CasADi__MX__nan_TIC_TIC_TIC  >>= wrapReturn
-
--- classy wrapper
-mx_nan''' :: IO MX
-mx_nan''' = casADi__MX__nan'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__repmat" c_CasADi__MX__repmat
-  :: Ptr MX' -> CInt -> CInt -> IO (Ptr MX')
-casADi__MX__repmat
-  :: MX -> Int -> Int -> IO MX
-casADi__MX__repmat x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__repmat x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix by repeating an existing matrix
--}
-mx_repmat :: MX -> Int -> Int -> IO MX
-mx_repmat = casADi__MX__repmat
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__repmat_TIC" c_CasADi__MX__repmat_TIC
-  :: Ptr MX' -> CInt -> IO (Ptr MX')
-casADi__MX__repmat'
-  :: MX -> Int -> IO MX
-casADi__MX__repmat' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__repmat_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_repmat' :: MX -> Int -> IO MX
-mx_repmat' = casADi__MX__repmat'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__eye" c_CasADi__MX__eye
-  :: CInt -> IO (Ptr MX')
-casADi__MX__eye
-  :: Int -> IO MX
-casADi__MX__eye x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__eye x0' >>= wrapReturn
-
--- classy wrapper
-mx_eye :: Int -> IO MX
-mx_eye = casADi__MX__eye
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getNZ" c_CasADi__MX__getNZ
-  :: Ptr MX' -> CInt -> IO (Ptr MX')
-casADi__MX__getNZ
-  :: MX -> Int -> IO MX
-casADi__MX__getNZ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__getNZ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_getNZ :: MXClass a => a -> Int -> IO MX
-mx_getNZ x = casADi__MX__getNZ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getNZ_TIC" c_CasADi__MX__getNZ_TIC
-  :: Ptr MX' -> Ptr (CppVec CInt) -> IO (Ptr MX')
-casADi__MX__getNZ'
-  :: MX -> Vector Int -> IO MX
-casADi__MX__getNZ' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__getNZ_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_getNZ' :: MXClass a => a -> Vector Int -> IO MX
-mx_getNZ' x = casADi__MX__getNZ' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__append" c_CasADi__MX__append
-  :: Ptr MX' -> Ptr MX' -> IO ()
-casADi__MX__append
-  :: MX -> MX -> IO ()
-casADi__MX__append x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__append x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Append a matrix to the end.
--}
-mx_append :: MXClass a => a -> MX -> IO ()
-mx_append x = casADi__MX__append (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____add__" c_CasADi__MX____add__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____add__
-  :: MX -> MX -> IO MX
-casADi__MX____add__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____add__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___add__ :: MXClass a => a -> MX -> IO MX
-mx___add__ x = casADi__MX____add__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____sub__" c_CasADi__MX____sub__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____sub__
-  :: MX -> MX -> IO MX
-casADi__MX____sub__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____sub__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___sub__ :: MXClass a => a -> MX -> IO MX
-mx___sub__ x = casADi__MX____sub__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____mul__" c_CasADi__MX____mul__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____mul__
-  :: MX -> MX -> IO MX
-casADi__MX____mul__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____mul__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___mul__ :: MXClass a => a -> MX -> IO MX
-mx___mul__ x = casADi__MX____mul__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____div__" c_CasADi__MX____div__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____div__
-  :: MX -> MX -> IO MX
-casADi__MX____div__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____div__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___div__ :: MXClass a => a -> MX -> IO MX
-mx___div__ x = casADi__MX____div__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____lt__" c_CasADi__MX____lt__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____lt__
-  :: MX -> MX -> IO MX
-casADi__MX____lt__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____lt__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___lt__ :: MXClass a => a -> MX -> IO MX
-mx___lt__ x = casADi__MX____lt__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____le__" c_CasADi__MX____le__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____le__
-  :: MX -> MX -> IO MX
-casADi__MX____le__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____le__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___le__ :: MXClass a => a -> MX -> IO MX
-mx___le__ x = casADi__MX____le__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____eq__" c_CasADi__MX____eq__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____eq__
-  :: MX -> MX -> IO MX
-casADi__MX____eq__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____eq__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___eq__ :: MXClass a => a -> MX -> IO MX
-mx___eq__ x = casADi__MX____eq__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____ne__" c_CasADi__MX____ne__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____ne__
-  :: MX -> MX -> IO MX
-casADi__MX____ne__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____ne__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___ne__ :: MXClass a => a -> MX -> IO MX
-mx___ne__ x = casADi__MX____ne__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____truediv__" c_CasADi__MX____truediv__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____truediv__
-  :: MX -> MX -> IO MX
-casADi__MX____truediv__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____truediv__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Division (with future.division in effect)
--}
-mx___truediv__ :: MXClass a => a -> MX -> IO MX
-mx___truediv__ x = casADi__MX____truediv__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____pow__" c_CasADi__MX____pow__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____pow__
-  :: MX -> MX -> IO MX
-casADi__MX____pow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____pow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___pow__ :: MXClass a => a -> MX -> IO MX
-mx___pow__ x = casADi__MX____pow__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____constpow__" c_CasADi__MX____constpow__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____constpow__
-  :: MX -> MX -> IO MX
-casADi__MX____constpow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____constpow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___constpow__ :: MXClass a => a -> MX -> IO MX
-mx___constpow__ x = casADi__MX____constpow__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____mrdivide__" c_CasADi__MX____mrdivide__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____mrdivide__
-  :: MX -> MX -> IO MX
-casADi__MX____mrdivide__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____mrdivide__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___mrdivide__ :: MXClass a => a -> MX -> IO MX
-mx___mrdivide__ x = casADi__MX____mrdivide__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX____mpower__" c_CasADi__MX____mpower__
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX____mpower__
-  :: MX -> MX -> IO MX
-casADi__MX____mpower__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX____mpower__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx___mpower__ :: MXClass a => a -> MX -> IO MX
-mx___mpower__ x = casADi__MX____mpower__ (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__mul" c_CasADi__MX__mul
-  :: Ptr MX' -> Ptr MX' -> Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__mul
-  :: MX -> MX -> CRSSparsity -> IO MX
-casADi__MX__mul x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__mul x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-mx_mul :: MXClass a => a -> MX -> CRSSparsity -> IO MX
-mx_mul x = casADi__MX__mul (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__mul_TIC" c_CasADi__MX__mul_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__mul'
-  :: MX -> MX -> IO MX
-casADi__MX__mul' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__mul_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_mul' :: MXClass a => a -> MX -> IO MX
-mx_mul' x = casADi__MX__mul' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__mul_full" c_CasADi__MX__mul_full
-  :: Ptr MX' -> Ptr MX' -> Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__mul_full
-  :: MX -> MX -> CRSSparsity -> IO MX
-casADi__MX__mul_full x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__mul_full x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-mx_mul_full :: MXClass a => a -> MX -> CRSSparsity -> IO MX
-mx_mul_full x = casADi__MX__mul_full (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__mul_full_TIC" c_CasADi__MX__mul_full_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__mul_full'
-  :: MX -> MX -> IO MX
-casADi__MX__mul_full' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__mul_full_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_mul_full' :: MXClass a => a -> MX -> IO MX
-mx_mul_full' x = casADi__MX__mul_full' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__inner_prod" c_CasADi__MX__inner_prod
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__inner_prod
-  :: MX -> MX -> IO MX
-casADi__MX__inner_prod x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__inner_prod x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_inner_prod :: MXClass a => a -> MX -> IO MX
-mx_inner_prod x = casADi__MX__inner_prod (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__outer_prod" c_CasADi__MX__outer_prod
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__outer_prod
-  :: MX -> MX -> IO MX
-casADi__MX__outer_prod x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__outer_prod x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_outer_prod :: MXClass a => a -> MX -> IO MX
-mx_outer_prod x = casADi__MX__outer_prod (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__constpow" c_CasADi__MX__constpow
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__constpow
-  :: MX -> MX -> IO MX
-casADi__MX__constpow x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__constpow x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_constpow :: MXClass a => a -> MX -> IO MX
-mx_constpow x = casADi__MX__constpow (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__fmin" c_CasADi__MX__fmin
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__fmin
-  :: MX -> MX -> IO MX
-casADi__MX__fmin x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__fmin x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_fmin :: MXClass a => a -> MX -> IO MX
-mx_fmin x = casADi__MX__fmin (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__fmax" c_CasADi__MX__fmax
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__fmax
-  :: MX -> MX -> IO MX
-casADi__MX__fmax x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__fmax x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_fmax :: MXClass a => a -> MX -> IO MX
-mx_fmax x = casADi__MX__fmax (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__printme" c_CasADi__MX__printme
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__printme
-  :: MX -> MX -> IO MX
-casADi__MX__printme x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__printme x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_printme :: MXClass a => a -> MX -> IO MX
-mx_printme x = casADi__MX__printme (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arctan2" c_CasADi__MX__arctan2
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__arctan2
-  :: MX -> MX -> IO MX
-casADi__MX__arctan2 x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__arctan2 x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_arctan2 :: MXClass a => a -> MX -> IO MX
-mx_arctan2 x = casADi__MX__arctan2 (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__logic_and" c_CasADi__MX__logic_and
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__logic_and
-  :: MX -> MX -> IO MX
-casADi__MX__logic_and x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__logic_and x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_logic_and :: MXClass a => a -> MX -> IO MX
-mx_logic_and x = casADi__MX__logic_and (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__logic_or" c_CasADi__MX__logic_or
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__logic_or
-  :: MX -> MX -> IO MX
-casADi__MX__logic_or x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__logic_or x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_logic_or :: MXClass a => a -> MX -> IO MX
-mx_logic_or x = casADi__MX__logic_or (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__if_else_zero" c_CasADi__MX__if_else_zero
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__if_else_zero
-  :: MX -> MX -> IO MX
-casADi__MX__if_else_zero x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__if_else_zero x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_if_else_zero :: MXClass a => a -> MX -> IO MX
-mx_if_else_zero x = casADi__MX__if_else_zero (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__exp" c_CasADi__MX__exp
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__exp
-  :: MX -> IO MX
-casADi__MX__exp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__exp x0' >>= wrapReturn
-
--- classy wrapper
-mx_exp :: MXClass a => a -> IO MX
-mx_exp x = casADi__MX__exp (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__log" c_CasADi__MX__log
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__log
-  :: MX -> IO MX
-casADi__MX__log x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__log x0' >>= wrapReturn
-
--- classy wrapper
-mx_log :: MXClass a => a -> IO MX
-mx_log x = casADi__MX__log (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__log10" c_CasADi__MX__log10
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__log10
-  :: MX -> IO MX
-casADi__MX__log10 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__log10 x0' >>= wrapReturn
-
--- classy wrapper
-mx_log10 :: MXClass a => a -> IO MX
-mx_log10 x = casADi__MX__log10 (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sqrt" c_CasADi__MX__sqrt
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__sqrt
-  :: MX -> IO MX
-casADi__MX__sqrt x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__sqrt x0' >>= wrapReturn
-
--- classy wrapper
-mx_sqrt :: MXClass a => a -> IO MX
-mx_sqrt x = casADi__MX__sqrt (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sin" c_CasADi__MX__sin
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__sin
-  :: MX -> IO MX
-casADi__MX__sin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__sin x0' >>= wrapReturn
-
--- classy wrapper
-mx_sin :: MXClass a => a -> IO MX
-mx_sin x = casADi__MX__sin (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__cos" c_CasADi__MX__cos
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__cos
-  :: MX -> IO MX
-casADi__MX__cos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__cos x0' >>= wrapReturn
-
--- classy wrapper
-mx_cos :: MXClass a => a -> IO MX
-mx_cos x = casADi__MX__cos (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__tan" c_CasADi__MX__tan
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__tan
-  :: MX -> IO MX
-casADi__MX__tan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__tan x0' >>= wrapReturn
-
--- classy wrapper
-mx_tan :: MXClass a => a -> IO MX
-mx_tan x = casADi__MX__tan (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arcsin" c_CasADi__MX__arcsin
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__arcsin
-  :: MX -> IO MX
-casADi__MX__arcsin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__arcsin x0' >>= wrapReturn
-
--- classy wrapper
-mx_arcsin :: MXClass a => a -> IO MX
-mx_arcsin x = casADi__MX__arcsin (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arccos" c_CasADi__MX__arccos
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__arccos
-  :: MX -> IO MX
-casADi__MX__arccos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__arccos x0' >>= wrapReturn
-
--- classy wrapper
-mx_arccos :: MXClass a => a -> IO MX
-mx_arccos x = casADi__MX__arccos (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arctan" c_CasADi__MX__arctan
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__arctan
-  :: MX -> IO MX
-casADi__MX__arctan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__arctan x0' >>= wrapReturn
-
--- classy wrapper
-mx_arctan :: MXClass a => a -> IO MX
-mx_arctan x = casADi__MX__arctan (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__floor" c_CasADi__MX__floor
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__floor
-  :: MX -> IO MX
-casADi__MX__floor x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__floor x0' >>= wrapReturn
-
--- classy wrapper
-mx_floor :: MXClass a => a -> IO MX
-mx_floor x = casADi__MX__floor (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__ceil" c_CasADi__MX__ceil
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__ceil
-  :: MX -> IO MX
-casADi__MX__ceil x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__ceil x0' >>= wrapReturn
-
--- classy wrapper
-mx_ceil :: MXClass a => a -> IO MX
-mx_ceil x = casADi__MX__ceil (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__fabs" c_CasADi__MX__fabs
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__fabs
-  :: MX -> IO MX
-casADi__MX__fabs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__fabs x0' >>= wrapReturn
-
--- classy wrapper
-mx_fabs :: MXClass a => a -> IO MX
-mx_fabs x = casADi__MX__fabs (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sign" c_CasADi__MX__sign
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__sign
-  :: MX -> IO MX
-casADi__MX__sign x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__sign x0' >>= wrapReturn
-
--- classy wrapper
-mx_sign :: MXClass a => a -> IO MX
-mx_sign x = casADi__MX__sign (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__erfinv" c_CasADi__MX__erfinv
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__erfinv
-  :: MX -> IO MX
-casADi__MX__erfinv x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__erfinv x0' >>= wrapReturn
-
--- classy wrapper
-mx_erfinv :: MXClass a => a -> IO MX
-mx_erfinv x = casADi__MX__erfinv (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__erf" c_CasADi__MX__erf
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__erf
-  :: MX -> IO MX
-casADi__MX__erf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__erf x0' >>= wrapReturn
-
--- classy wrapper
-mx_erf :: MXClass a => a -> IO MX
-mx_erf x = casADi__MX__erf (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__sinh" c_CasADi__MX__sinh
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__sinh
-  :: MX -> IO MX
-casADi__MX__sinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__sinh x0' >>= wrapReturn
-
--- classy wrapper
-mx_sinh :: MXClass a => a -> IO MX
-mx_sinh x = casADi__MX__sinh (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__cosh" c_CasADi__MX__cosh
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__cosh
-  :: MX -> IO MX
-casADi__MX__cosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__cosh x0' >>= wrapReturn
-
--- classy wrapper
-mx_cosh :: MXClass a => a -> IO MX
-mx_cosh x = casADi__MX__cosh (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__tanh" c_CasADi__MX__tanh
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__tanh
-  :: MX -> IO MX
-casADi__MX__tanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__tanh x0' >>= wrapReturn
-
--- classy wrapper
-mx_tanh :: MXClass a => a -> IO MX
-mx_tanh x = casADi__MX__tanh (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arcsinh" c_CasADi__MX__arcsinh
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__arcsinh
-  :: MX -> IO MX
-casADi__MX__arcsinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__arcsinh x0' >>= wrapReturn
-
--- classy wrapper
-mx_arcsinh :: MXClass a => a -> IO MX
-mx_arcsinh x = casADi__MX__arcsinh (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arccosh" c_CasADi__MX__arccosh
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__arccosh
-  :: MX -> IO MX
-casADi__MX__arccosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__arccosh x0' >>= wrapReturn
-
--- classy wrapper
-mx_arccosh :: MXClass a => a -> IO MX
-mx_arccosh x = casADi__MX__arccosh (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__arctanh" c_CasADi__MX__arctanh
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__arctanh
-  :: MX -> IO MX
-casADi__MX__arctanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__arctanh x0' >>= wrapReturn
-
--- classy wrapper
-mx_arctanh :: MXClass a => a -> IO MX
-mx_arctanh x = casADi__MX__arctanh (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__logic_not" c_CasADi__MX__logic_not
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__logic_not
-  :: MX -> IO MX
-casADi__MX__logic_not x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__logic_not x0' >>= wrapReturn
-
--- classy wrapper
-mx_logic_not :: MXClass a => a -> IO MX
-mx_logic_not x = casADi__MX__logic_not (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__attachAssert" c_CasADi__MX__attachAssert
-  :: Ptr MX' -> Ptr MX' -> Ptr StdString' -> IO (Ptr MX')
-casADi__MX__attachAssert
-  :: MX -> MX -> String -> IO MX
-casADi__MX__attachAssert x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__attachAssert x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->returns itself, but with an assertion attached
->
->If y does not evaluate to 1, a runtime error is raised
--}
-mx_attachAssert :: MXClass a => a -> MX -> String -> IO MX
-mx_attachAssert x = casADi__MX__attachAssert (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__attachAssert_TIC" c_CasADi__MX__attachAssert_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__attachAssert'
-  :: MX -> MX -> IO MX
-casADi__MX__attachAssert' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__attachAssert_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_attachAssert' :: MXClass a => a -> MX -> IO MX
-mx_attachAssert' x = casADi__MX__attachAssert' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setSparse" c_CasADi__MX__setSparse
-  :: Ptr MX' -> Ptr CRSSparsity' -> CInt -> IO (Ptr MX')
-casADi__MX__setSparse
-  :: MX -> CRSSparsity -> Bool -> IO MX
-casADi__MX__setSparse x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__setSparse x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set sparse.
--}
-mx_setSparse :: MXClass a => a -> CRSSparsity -> Bool -> IO MX
-mx_setSparse x = casADi__MX__setSparse (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setSparse_TIC" c_CasADi__MX__setSparse_TIC
-  :: Ptr MX' -> Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__setSparse'
-  :: MX -> CRSSparsity -> IO MX
-casADi__MX__setSparse' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__setSparse_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx_setSparse' :: MXClass a => a -> CRSSparsity -> IO MX
-mx_setSparse' x = casADi__MX__setSparse' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__makeDense" c_CasADi__MX__makeDense
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__makeDense
-  :: MX -> MX -> IO MX
-casADi__MX__makeDense x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__makeDense x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Make dense.
--}
-mx_makeDense :: MXClass a => a -> MX -> IO MX
-mx_makeDense x = casADi__MX__makeDense (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__makeDense_TIC" c_CasADi__MX__makeDense_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__makeDense'
-  :: MX -> IO MX
-casADi__MX__makeDense' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__makeDense_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx_makeDense' :: MXClass a => a -> IO MX
-mx_makeDense' x = casADi__MX__makeDense' (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__lift" c_CasADi__MX__lift
-  :: Ptr MX' -> Ptr MX' -> IO ()
-casADi__MX__lift
-  :: MX -> MX -> IO ()
-casADi__MX__lift x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__lift x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Lift an expression.
--}
-mx_lift :: MXClass a => a -> MX -> IO ()
-mx_lift x = casADi__MX__lift (castMX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setMaxNumCallsInPrint" c_CasADi__MX__setMaxNumCallsInPrint
-  :: CLong -> IO ()
-casADi__MX__setMaxNumCallsInPrint
-  :: Int -> IO ()
-casADi__MX__setMaxNumCallsInPrint x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__setMaxNumCallsInPrint x0' >>= wrapReturn
-
--- classy wrapper
-mx_setMaxNumCallsInPrint :: Int -> IO ()
-mx_setMaxNumCallsInPrint = casADi__MX__setMaxNumCallsInPrint
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setMaxNumCallsInPrint_TIC" c_CasADi__MX__setMaxNumCallsInPrint_TIC
-  :: IO ()
-casADi__MX__setMaxNumCallsInPrint'
-  :: IO ()
-casADi__MX__setMaxNumCallsInPrint'  =
-  c_CasADi__MX__setMaxNumCallsInPrint_TIC  >>= wrapReturn
-
--- classy wrapper
-mx_setMaxNumCallsInPrint' :: IO ()
-mx_setMaxNumCallsInPrint' = casADi__MX__setMaxNumCallsInPrint'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getMaxNumCallsInPrint" c_CasADi__MX__getMaxNumCallsInPrint
-  :: IO CLong
-casADi__MX__getMaxNumCallsInPrint
-  :: IO Int
-casADi__MX__getMaxNumCallsInPrint  =
-  c_CasADi__MX__getMaxNumCallsInPrint  >>= wrapReturn
-
--- classy wrapper
-mx_getMaxNumCallsInPrint :: IO Int
-mx_getMaxNumCallsInPrint = casADi__MX__getMaxNumCallsInPrint
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setEqualityCheckingDepth" c_CasADi__MX__setEqualityCheckingDepth
-  :: CInt -> IO ()
-casADi__MX__setEqualityCheckingDepth
-  :: Int -> IO ()
-casADi__MX__setEqualityCheckingDepth x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__setEqualityCheckingDepth x0' >>= wrapReturn
-
--- classy wrapper
-mx_setEqualityCheckingDepth :: Int -> IO ()
-mx_setEqualityCheckingDepth = casADi__MX__setEqualityCheckingDepth
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__setEqualityCheckingDepth_TIC" c_CasADi__MX__setEqualityCheckingDepth_TIC
-  :: IO ()
-casADi__MX__setEqualityCheckingDepth'
-  :: IO ()
-casADi__MX__setEqualityCheckingDepth'  =
-  c_CasADi__MX__setEqualityCheckingDepth_TIC  >>= wrapReturn
-
--- classy wrapper
-mx_setEqualityCheckingDepth' :: IO ()
-mx_setEqualityCheckingDepth' = casADi__MX__setEqualityCheckingDepth'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__getEqualityCheckingDepth" c_CasADi__MX__getEqualityCheckingDepth
-  :: IO CInt
-casADi__MX__getEqualityCheckingDepth
-  :: IO Int
-casADi__MX__getEqualityCheckingDepth  =
-  c_CasADi__MX__getEqualityCheckingDepth  >>= wrapReturn
-
--- classy wrapper
-mx_getEqualityCheckingDepth :: IO Int
-mx_getEqualityCheckingDepth = casADi__MX__getEqualityCheckingDepth
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX" c_CasADi__MX__MX
-  :: IO (Ptr MX')
-casADi__MX__MX
-  :: IO MX
-casADi__MX__MX  =
-  c_CasADi__MX__MX  >>= wrapReturn
-
--- classy wrapper
-{-|
->>  CasADi::MX::MX()
->------------------------------------------------------------------------
->
->Default constructor.
->
->>  CasADi::MX::MX(const std::string &name, int n=1, int m=1)
->
->>  CasADi::MX::MX(const std::string &name, const std::pair< int, int > &nm)
->
->>  CasADi::MX::MX(const std::string &name, const CRSSparsity &sp)
->------------------------------------------------------------------------
->
->Construct a symbolic matrix (matrix variable)
->
->>  CasADi::MX::MX(const CRSSparsity &sp, const MX &val=0)
->------------------------------------------------------------------------
->
->Construct MX with a given sparsity.
->
->>  CasADi::MX::MX(double x)
->------------------------------------------------------------------------
->
->Create scalar constant (also implicit type conversion)
->
->>  CasADi::MX::MX(const MX &x)
->------------------------------------------------------------------------
->
->Copy constructor.
->
->>  CasADi::MX::MX(const std::vector< double > &x)
->------------------------------------------------------------------------
->
->Create vector constant (also implicit type conversion)
->
->>  CasADi::MX::MX(const Matrix< double > &x)
->------------------------------------------------------------------------
->
->Create sparse matrix constant (also implicit type conversion)
->
->>  CasADi::MX::MX(int nrow, int ncol)
->------------------------------------------------------------------------
->
->Matrix with all zeros.
->
->>  CasADi::MX::MX(int nrow, int ncol, const MX &val)
->------------------------------------------------------------------------
->
->Dense matrix filled with value val.
--}
-mx :: IO MX
-mx = casADi__MX__MX
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC" c_CasADi__MX__MX_TIC
-  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr MX')
-casADi__MX__MX'
-  :: String -> Int -> Int -> IO MX
-casADi__MX__MX' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__MX_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-mx' :: String -> Int -> Int -> IO MX
-mx' = casADi__MX__MX'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC" c_CasADi__MX__MX_TIC_TIC
-  :: Ptr StdString' -> CInt -> IO (Ptr MX')
-casADi__MX__MX''
-  :: String -> Int -> IO MX
-casADi__MX__MX'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__MX_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx'' :: String -> Int -> IO MX
-mx'' = casADi__MX__MX''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC
-  :: Ptr StdString' -> IO (Ptr MX')
-casADi__MX__MX'''
-  :: String -> IO MX
-casADi__MX__MX''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx''' :: String -> IO MX
-mx''' = casADi__MX__MX'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__MX''''
-  :: String -> CRSSparsity -> IO MX
-casADi__MX__MX'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx'''' :: String -> CRSSparsity -> IO MX
-mx'''' = casADi__MX__MX''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__MX'''''
-  :: CRSSparsity -> MX -> IO MX
-casADi__MX__MX''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx''''' :: CRSSparsity -> MX -> IO MX
-mx''''' = casADi__MX__MX'''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr MX')
-casADi__MX__MX''''''
-  :: CRSSparsity -> IO MX
-casADi__MX__MX'''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx'''''' :: CRSSparsity -> IO MX
-mx'''''' = casADi__MX__MX''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: CDouble -> IO (Ptr MX')
-casADi__MX__MX'''''''
-  :: Double -> IO MX
-casADi__MX__MX''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx''''''' :: Double -> IO MX
-mx''''''' = casADi__MX__MX'''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-casADi__MX__MX''''''''
-  :: MX -> IO MX
-casADi__MX__MX'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx'''''''' :: MX -> IO MX
-mx'''''''' = casADi__MX__MX''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec CDouble) -> IO (Ptr MX')
-casADi__MX__MX'''''''''
-  :: Vector Double -> IO MX
-casADi__MX__MX''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx''''''''' :: Vector Double -> IO MX
-mx''''''''' = casADi__MX__MX'''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr MX')
-casADi__MX__MX''''''''''
-  :: DMatrix -> IO MX
-casADi__MX__MX'''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mx'''''''''' :: DMatrix -> IO MX
-mx'''''''''' = casADi__MX__MX''''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: CInt -> CInt -> IO (Ptr MX')
-casADi__MX__MX'''''''''''
-  :: Int -> Int -> IO MX
-casADi__MX__MX''''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-mx''''''''''' :: Int -> Int -> IO MX
-mx''''''''''' = casADi__MX__MX'''''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: CInt -> CInt -> Ptr MX' -> IO (Ptr MX')
-casADi__MX__MX''''''''''''
-  :: Int -> Int -> MX -> IO MX
-casADi__MX__MX'''''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-mx'''''''''''' :: Int -> Int -> MX -> IO MX
-mx'''''''''''' = casADi__MX__MX''''''''''''
+         mx___add__,
+         mx___constpow__,
+         mx___copysign__,
+         mx___div__,
+         mx___eq__,
+         mx___hash__,
+         mx___le__,
+         mx___lt__,
+         mx___mpower__,
+         mx___mrdivide__,
+         mx___mul__,
+         mx___ne__,
+         mx___nonzero__,
+         mx___pow__,
+         mx___sub__,
+         mx___truediv__,
+         mx_addToSum,
+         mx_append,
+         mx_appendColumns,
+         mx_arccos,
+         mx_arccosh,
+         mx_arcsin,
+         mx_arcsinh,
+         mx_arctan,
+         mx_arctan2,
+         mx_arctanh,
+         mx_attachAssert,
+         mx_attachAssert',
+         mx_binary,
+         mx_ceil,
+         mx_constpow,
+         mx_cos,
+         mx_cosh,
+         mx_densify,
+         mx_densify',
+         mx_enlarge,
+         mx_erase,
+         mx_erf,
+         mx_erfinv,
+         mx_exp,
+         mx_eye,
+         mx_fabs,
+         mx_floor,
+         mx_fmax,
+         mx_fmin,
+         mx_getDep,
+         mx_getDep',
+         mx_getEqualityCheckingDepth,
+         mx_getEvaluationOutput,
+         mx_getFunction,
+         mx_getMatrixValue,
+         mx_getMaxNumCallsInPrint,
+         mx_getNZ,
+         mx_getNZ',
+         mx_getNZ'',
+         mx_getNZ''',
+         mx_getName,
+         mx_getNdeps,
+         mx_getNumOutputs,
+         mx_getOp,
+         mx_getOutput,
+         mx_getOutput',
+         mx_getTemp,
+         mx_getValue,
+         mx_if_else_zero,
+         mx_indexed_assignment,
+         mx_indexed_assignment',
+         mx_indexed_assignment'',
+         mx_indexed_assignment''',
+         mx_indexed_assignment'''',
+         mx_indexed_assignment''''',
+         mx_indexed_assignment'''''',
+         mx_indexed_assignment''''''',
+         mx_indexed_assignment'''''''',
+         mx_indexed_assignment''''''''',
+         mx_indexed_one_based_assignment,
+         mx_indexed_one_based_assignment',
+         mx_indexed_zero_based_assignment,
+         mx_indexed_zero_based_assignment',
+         mx_indexed_zero_based_assignment'',
+         mx_inf,
+         mx_inf',
+         mx_inf'',
+         mx_inf''',
+         mx_inner_prod,
+         mx_isBinary,
+         mx_isCommutative,
+         mx_isConstant,
+         mx_isEqual,
+         mx_isEqual',
+         mx_isEvaluation,
+         mx_isEvaluationOutput,
+         mx_isIdentity,
+         mx_isMinusOne,
+         mx_isMultiplication,
+         mx_isNorm,
+         mx_isOne,
+         mx_isOperation,
+         mx_isRegular,
+         mx_isSymbolic,
+         mx_isSymbolicSparse,
+         mx_isTranspose,
+         mx_isUnary,
+         mx_isZero,
+         mx_lift,
+         mx_log,
+         mx_log10,
+         mx_logic_and,
+         mx_logic_not,
+         mx_logic_or,
+         mx_mapping,
+         mx_mul,
+         mx_mul',
+         mx_mul_full,
+         mx_mul_full',
+         mx_nan,
+         mx_nan',
+         mx_nan'',
+         mx_nan''',
+         mx_nz_indexed_assignment,
+         mx_nz_indexed_assignment',
+         mx_nz_indexed_one_based_assignment,
+         mx_nz_indexed_zero_based_assignment,
+         mx_operator_minus,
+         mx_outer_prod,
+         mx_printme,
+         mx_repmat,
+         mx_repmat',
+         mx_repmat'',
+         mx_setEqualityCheckingDepth,
+         mx_setEqualityCheckingDepth',
+         mx_setMaxNumCallsInPrint,
+         mx_setMaxNumCallsInPrint',
+         mx_setNZ,
+         mx_setNZ',
+         mx_setNZ'',
+         mx_setNZ''',
+         mx_setSparse,
+         mx_setSparse',
+         mx_setSub,
+         mx_setSub',
+         mx_setSub'',
+         mx_setSub''',
+         mx_setSub'''',
+         mx_setSub''''',
+         mx_setSub'''''',
+         mx_setSub''''''',
+         mx_setSub'''''''',
+         mx_setSub''''''''',
+         mx_setTemp,
+         mx_sign,
+         mx_sin,
+         mx_sinh,
+         mx_sparsityRef,
+         mx_sqrt,
+         mx_tan,
+         mx_tanh,
+         mx_trans,
+         mx_unary,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show MX where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____nonzero__" c_CasADi__MX____nonzero__
+  :: Ptr MX' -> IO CInt
+casADi__MX____nonzero__
+  :: MX -> IO Bool
+casADi__MX____nonzero__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX____nonzero__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns the truth value of an MX expression.
+-}
+mx___nonzero__ :: MXClass a => a -> IO Bool
+mx___nonzero__ x = casADi__MX____nonzero__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nz_indexed_one_based_assignment" c_CasADi__MX__nz_indexed_one_based_assignment
+  :: Ptr MX' -> CInt -> Ptr MX' -> IO ()
+casADi__MX__nz_indexed_one_based_assignment
+  :: MX -> Int -> MX -> IO ()
+casADi__MX__nz_indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__nz_indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>set a non-zero
+-}
+mx_nz_indexed_one_based_assignment :: MXClass a => a -> Int -> MX -> IO ()
+mx_nz_indexed_one_based_assignment x = casADi__MX__nz_indexed_one_based_assignment (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nz_indexed_zero_based_assignment" c_CasADi__MX__nz_indexed_zero_based_assignment
+  :: Ptr MX' -> CInt -> Ptr MX' -> IO ()
+casADi__MX__nz_indexed_zero_based_assignment
+  :: MX -> Int -> MX -> IO ()
+casADi__MX__nz_indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__nz_indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Indexing for interfaced languages.
+>
+>get a non-zero
+-}
+mx_nz_indexed_zero_based_assignment :: MXClass a => a -> Int -> MX -> IO ()
+mx_nz_indexed_zero_based_assignment x = casADi__MX__nz_indexed_zero_based_assignment (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nz_indexed_assignment" c_CasADi__MX__nz_indexed_assignment
+  :: Ptr MX' -> Ptr IndexList' -> Ptr MX' -> IO ()
+casADi__MX__nz_indexed_assignment
+  :: MX -> IndexList -> MX -> IO ()
+casADi__MX__nz_indexed_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__nz_indexed_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Indexing for interfaced languages.
+>
+>get a non-zero
+-}
+mx_nz_indexed_assignment :: MXClass a => a -> IndexList -> MX -> IO ()
+mx_nz_indexed_assignment x = casADi__MX__nz_indexed_assignment (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nz_indexed_assignment_TIC" c_CasADi__MX__nz_indexed_assignment_TIC
+  :: Ptr MX' -> Ptr Slice' -> Ptr MX' -> IO ()
+casADi__MX__nz_indexed_assignment'
+  :: MX -> Slice -> MX -> IO ()
+casADi__MX__nz_indexed_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__nz_indexed_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_nz_indexed_assignment' :: MXClass a => a -> Slice -> MX -> IO ()
+mx_nz_indexed_assignment' x = casADi__MX__nz_indexed_assignment' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_one_based_assignment" c_CasADi__MX__indexed_one_based_assignment
+  :: Ptr MX' -> CInt -> CInt -> Ptr MX' -> IO ()
+casADi__MX__indexed_one_based_assignment
+  :: MX -> Int -> Int -> MX -> IO ()
+casADi__MX__indexed_one_based_assignment x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_one_based_assignment x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::MX::indexed_one_based_assignment(int rr, int cc, const MX &m)
+>------------------------------------------------------------------------
+>
+>set a matrix element
+-}
+mx_indexed_one_based_assignment :: MXClass a => a -> Int -> Int -> MX -> IO ()
+mx_indexed_one_based_assignment x = casADi__MX__indexed_one_based_assignment (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_zero_based_assignment" c_CasADi__MX__indexed_zero_based_assignment
+  :: Ptr MX' -> CInt -> CInt -> Ptr MX' -> IO ()
+casADi__MX__indexed_zero_based_assignment
+  :: MX -> Int -> Int -> MX -> IO ()
+casADi__MX__indexed_zero_based_assignment x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_zero_based_assignment x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::MX::indexed_zero_based_assignment(int rr, int cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_zero_based_assignment(const Matrix< int > &k, const MX &m)
+>------------------------------------------------------------------------
+>
+>Indexing for interfaced languages.
+>
+>get a non-zero
+-}
+mx_indexed_zero_based_assignment :: MXClass a => a -> Int -> Int -> MX -> IO ()
+mx_indexed_zero_based_assignment x = casADi__MX__indexed_zero_based_assignment (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment" c_CasADi__MX__indexed_assignment
+  :: Ptr MX' -> Ptr IndexList' -> Ptr IndexList' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment
+  :: MX -> IndexList -> IndexList -> MX -> IO ()
+casADi__MX__indexed_assignment x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::MX::indexed_assignment(const IndexList &rr, const IndexList &cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const Slice &rr, const Slice &cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const Sparsity &sp, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const Matrix< int > &rr, const Slice &cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const Slice &rr, const Matrix< int > &cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const Matrix< int > &rr, const IndexList &cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const IndexList &rr, const Matrix< int > &cc, const MX &m)
+>
+>>  void CasADi::MX::indexed_assignment(const Matrix< int > &rr, const Matrix< int > &cc, const MX &m)
+>------------------------------------------------------------------------
+>
+>Indexing for interfaced languages.
+>
+>get a non-zero
+-}
+mx_indexed_assignment :: MXClass a => a -> IndexList -> IndexList -> MX -> IO ()
+mx_indexed_assignment x = casADi__MX__indexed_assignment (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC" c_CasADi__MX__indexed_assignment_TIC
+  :: Ptr MX' -> Ptr Slice' -> Ptr Slice' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment'
+  :: MX -> Slice -> Slice -> MX -> IO ()
+casADi__MX__indexed_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment' :: MXClass a => a -> Slice -> Slice -> MX -> IO ()
+mx_indexed_assignment' x = casADi__MX__indexed_assignment' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_zero_based_assignment_TIC" c_CasADi__MX__indexed_zero_based_assignment_TIC
+  :: Ptr MX' -> Ptr IMatrix' -> Ptr MX' -> IO ()
+casADi__MX__indexed_zero_based_assignment'
+  :: MX -> IMatrix -> MX -> IO ()
+casADi__MX__indexed_zero_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__indexed_zero_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_zero_based_assignment' :: MXClass a => a -> IMatrix -> MX -> IO ()
+mx_indexed_zero_based_assignment' x = casADi__MX__indexed_zero_based_assignment' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC
+  :: Ptr MX' -> Ptr Sparsity' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment''
+  :: MX -> Sparsity -> MX -> IO ()
+casADi__MX__indexed_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment'' :: MXClass a => a -> Sparsity -> MX -> IO ()
+mx_indexed_assignment'' x = casADi__MX__indexed_assignment'' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IMatrix' -> Ptr Slice' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment'''
+  :: MX -> IMatrix -> Slice -> MX -> IO ()
+casADi__MX__indexed_assignment''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment''' :: MXClass a => a -> IMatrix -> Slice -> MX -> IO ()
+mx_indexed_assignment''' x = casADi__MX__indexed_assignment''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr Slice' -> Ptr IMatrix' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment''''
+  :: MX -> Slice -> IMatrix -> MX -> IO ()
+casADi__MX__indexed_assignment'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment'''' :: MXClass a => a -> Slice -> IMatrix -> MX -> IO ()
+mx_indexed_assignment'''' x = casADi__MX__indexed_assignment'''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IMatrix' -> Ptr IndexList' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment'''''
+  :: MX -> IMatrix -> IndexList -> MX -> IO ()
+casADi__MX__indexed_assignment''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment''''' :: MXClass a => a -> IMatrix -> IndexList -> MX -> IO ()
+mx_indexed_assignment''''' x = casADi__MX__indexed_assignment''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IndexList' -> Ptr IMatrix' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment''''''
+  :: MX -> IndexList -> IMatrix -> MX -> IO ()
+casADi__MX__indexed_assignment'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment'''''' :: MXClass a => a -> IndexList -> IMatrix -> MX -> IO ()
+mx_indexed_assignment'''''' x = casADi__MX__indexed_assignment'''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment'''''''
+  :: MX -> IMatrix -> IMatrix -> MX -> IO ()
+casADi__MX__indexed_assignment''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment''''''' :: MXClass a => a -> IMatrix -> IMatrix -> MX -> IO ()
+mx_indexed_assignment''''''' x = casADi__MX__indexed_assignment''''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_one_based_assignment_TIC" c_CasADi__MX__indexed_one_based_assignment_TIC
+  :: Ptr MX' -> CInt -> Ptr MX' -> IO ()
+casADi__MX__indexed_one_based_assignment'
+  :: MX -> Int -> MX -> IO ()
+casADi__MX__indexed_one_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__indexed_one_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_one_based_assignment' :: MXClass a => a -> Int -> MX -> IO ()
+mx_indexed_one_based_assignment' x = casADi__MX__indexed_one_based_assignment' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_zero_based_assignment_TIC_TIC" c_CasADi__MX__indexed_zero_based_assignment_TIC_TIC
+  :: Ptr MX' -> CInt -> Ptr MX' -> IO ()
+casADi__MX__indexed_zero_based_assignment''
+  :: MX -> Int -> MX -> IO ()
+casADi__MX__indexed_zero_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__indexed_zero_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_zero_based_assignment'' :: MXClass a => a -> Int -> MX -> IO ()
+mx_indexed_zero_based_assignment'' x = casADi__MX__indexed_zero_based_assignment'' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IndexList' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment''''''''
+  :: MX -> IndexList -> MX -> IO ()
+casADi__MX__indexed_assignment'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment'''''''' :: MXClass a => a -> IndexList -> MX -> IO ()
+mx_indexed_assignment'''''''' x = casADi__MX__indexed_assignment'''''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr Slice' -> Ptr MX' -> IO ()
+casADi__MX__indexed_assignment'''''''''
+  :: MX -> Slice -> MX -> IO ()
+casADi__MX__indexed_assignment''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_indexed_assignment''''''''' :: MXClass a => a -> Slice -> MX -> IO ()
+mx_indexed_assignment''''''''' x = casADi__MX__indexed_assignment''''''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__sparsityRef" c_CasADi__MX__sparsityRef
+  :: Ptr MX' -> IO (Ptr Sparsity')
+casADi__MX__sparsityRef
+  :: MX -> IO Sparsity
+casADi__MX__sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the sparsity, make a copy if there are multiple references to it.
+-}
+mx_sparsityRef :: MXClass a => a -> IO Sparsity
+mx_sparsityRef x = casADi__MX__sparsityRef (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__erase" c_CasADi__MX__erase
+  :: Ptr MX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__MX__erase
+  :: MX -> Vector Int -> Vector Int -> IO ()
+casADi__MX__erase x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__erase x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Erase a submatrix.
+-}
+mx_erase :: MXClass a => a -> Vector Int -> Vector Int -> IO ()
+mx_erase x = casADi__MX__erase (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__enlarge" c_CasADi__MX__enlarge
+  :: Ptr MX' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__MX__enlarge
+  :: MX -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+casADi__MX__enlarge x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__MX__enlarge x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Enlarge matrix Make the matrix larger by inserting empty rows and columns,
+>keeping the existing non-zeros.
+-}
+mx_enlarge :: MXClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+mx_enlarge x = casADi__MX__enlarge (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__operator_minus" c_CasADi__MX__operator_minus
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__operator_minus
+  :: MX -> IO MX
+casADi__MX__operator_minus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__operator_minus x0' >>= wrapReturn
+
+-- classy wrapper
+mx_operator_minus :: MXClass a => a -> IO MX
+mx_operator_minus x = casADi__MX__operator_minus (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getDep" c_CasADi__MX__getDep
+  :: Ptr MX' -> CInt -> IO (Ptr MX')
+casADi__MX__getDep
+  :: MX -> Int -> IO MX
+casADi__MX__getDep x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__getDep x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the nth dependency as MX.
+-}
+mx_getDep :: MXClass a => a -> Int -> IO MX
+mx_getDep x = casADi__MX__getDep (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getDep_TIC" c_CasADi__MX__getDep_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__getDep'
+  :: MX -> IO MX
+casADi__MX__getDep' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getDep_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx_getDep' :: MXClass a => a -> IO MX
+mx_getDep' x = casADi__MX__getDep' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getNumOutputs" c_CasADi__MX__getNumOutputs
+  :: Ptr MX' -> IO CInt
+casADi__MX__getNumOutputs
+  :: MX -> IO Int
+casADi__MX__getNumOutputs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getNumOutputs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Number of outputs.
+-}
+mx_getNumOutputs :: MXClass a => a -> IO Int
+mx_getNumOutputs x = casADi__MX__getNumOutputs (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getOutput" c_CasADi__MX__getOutput
+  :: Ptr MX' -> CInt -> IO (Ptr MX')
+casADi__MX__getOutput
+  :: MX -> Int -> IO MX
+casADi__MX__getOutput x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__getOutput x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get an output.
+-}
+mx_getOutput :: MXClass a => a -> Int -> IO MX
+mx_getOutput x = casADi__MX__getOutput (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getOutput_TIC" c_CasADi__MX__getOutput_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__getOutput'
+  :: MX -> IO MX
+casADi__MX__getOutput' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getOutput_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx_getOutput' :: MXClass a => a -> IO MX
+mx_getOutput' x = casADi__MX__getOutput' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getNdeps" c_CasADi__MX__getNdeps
+  :: Ptr MX' -> IO CInt
+casADi__MX__getNdeps
+  :: MX -> IO Int
+casADi__MX__getNdeps x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getNdeps x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of dependencies of a binary SXElement.
+-}
+mx_getNdeps :: MXClass a => a -> IO Int
+mx_getNdeps x = casADi__MX__getNdeps (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getName" c_CasADi__MX__getName
+  :: Ptr MX' -> IO (Ptr StdString')
+casADi__MX__getName
+  :: MX -> IO String
+casADi__MX__getName x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getName x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the name.
+-}
+mx_getName :: MXClass a => a -> IO String
+mx_getName x = casADi__MX__getName (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getValue" c_CasADi__MX__getValue
+  :: Ptr MX' -> IO CDouble
+casADi__MX__getValue
+  :: MX -> IO Double
+casADi__MX__getValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getValue x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the value (only for scalar constant nodes)
+-}
+mx_getValue :: MXClass a => a -> IO Double
+mx_getValue x = casADi__MX__getValue (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getMatrixValue" c_CasADi__MX__getMatrixValue
+  :: Ptr MX' -> IO (Ptr DMatrix')
+casADi__MX__getMatrixValue
+  :: MX -> IO DMatrix
+casADi__MX__getMatrixValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getMatrixValue x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the value (only for constant nodes)
+-}
+mx_getMatrixValue :: MXClass a => a -> IO DMatrix
+mx_getMatrixValue x = casADi__MX__getMatrixValue (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isSymbolic" c_CasADi__MX__isSymbolic
+  :: Ptr MX' -> IO CInt
+casADi__MX__isSymbolic
+  :: MX -> IO Bool
+casADi__MX__isSymbolic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isSymbolic x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if symbolic.
+-}
+mx_isSymbolic :: MXClass a => a -> IO Bool
+mx_isSymbolic x = casADi__MX__isSymbolic (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isConstant" c_CasADi__MX__isConstant
+  :: Ptr MX' -> IO CInt
+casADi__MX__isConstant
+  :: MX -> IO Bool
+casADi__MX__isConstant x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isConstant x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if constant.
+-}
+mx_isConstant :: MXClass a => a -> IO Bool
+mx_isConstant x = casADi__MX__isConstant (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isEvaluation" c_CasADi__MX__isEvaluation
+  :: Ptr MX' -> IO CInt
+casADi__MX__isEvaluation
+  :: MX -> IO Bool
+casADi__MX__isEvaluation x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isEvaluation x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if evaluation.
+-}
+mx_isEvaluation :: MXClass a => a -> IO Bool
+mx_isEvaluation x = casADi__MX__isEvaluation (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isEvaluationOutput" c_CasADi__MX__isEvaluationOutput
+  :: Ptr MX' -> IO CInt
+casADi__MX__isEvaluationOutput
+  :: MX -> IO Bool
+casADi__MX__isEvaluationOutput x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isEvaluationOutput x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if evaluation output.
+-}
+mx_isEvaluationOutput :: MXClass a => a -> IO Bool
+mx_isEvaluationOutput x = casADi__MX__isEvaluationOutput (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getEvaluationOutput" c_CasADi__MX__getEvaluationOutput
+  :: Ptr MX' -> IO CInt
+casADi__MX__getEvaluationOutput
+  :: MX -> IO Int
+casADi__MX__getEvaluationOutput x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getEvaluationOutput x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the index of evaluation output - only valid when isEvaluationoutput() is
+>true.
+-}
+mx_getEvaluationOutput :: MXClass a => a -> IO Int
+mx_getEvaluationOutput x = casADi__MX__getEvaluationOutput (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isOperation" c_CasADi__MX__isOperation
+  :: Ptr MX' -> CInt -> IO CInt
+casADi__MX__isOperation
+  :: MX -> Int -> IO Bool
+casADi__MX__isOperation x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__isOperation x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is it a certain operation.
+-}
+mx_isOperation :: MXClass a => a -> Int -> IO Bool
+mx_isOperation x = casADi__MX__isOperation (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isMultiplication" c_CasADi__MX__isMultiplication
+  :: Ptr MX' -> IO CInt
+casADi__MX__isMultiplication
+  :: MX -> IO Bool
+casADi__MX__isMultiplication x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isMultiplication x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if multiplication.
+-}
+mx_isMultiplication :: MXClass a => a -> IO Bool
+mx_isMultiplication x = casADi__MX__isMultiplication (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isCommutative" c_CasADi__MX__isCommutative
+  :: Ptr MX' -> IO CInt
+casADi__MX__isCommutative
+  :: MX -> IO Bool
+casADi__MX__isCommutative x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isCommutative x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if commutative operation.
+-}
+mx_isCommutative :: MXClass a => a -> IO Bool
+mx_isCommutative x = casADi__MX__isCommutative (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isNorm" c_CasADi__MX__isNorm
+  :: Ptr MX' -> IO CInt
+casADi__MX__isNorm
+  :: MX -> IO Bool
+casADi__MX__isNorm x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isNorm x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if norm.
+-}
+mx_isNorm :: MXClass a => a -> IO Bool
+mx_isNorm x = casADi__MX__isNorm (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isSymbolicSparse" c_CasADi__MX__isSymbolicSparse
+  :: Ptr MX' -> IO CInt
+casADi__MX__isSymbolicSparse
+  :: MX -> IO Bool
+casADi__MX__isSymbolicSparse x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isSymbolicSparse x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>check if all nonzeros are symbolic (this function is currently identical to
+>isSymbolic)
+-}
+mx_isSymbolicSparse :: MXClass a => a -> IO Bool
+mx_isSymbolicSparse x = casADi__MX__isSymbolicSparse (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isIdentity" c_CasADi__MX__isIdentity
+  :: Ptr MX' -> IO CInt
+casADi__MX__isIdentity
+  :: MX -> IO Bool
+casADi__MX__isIdentity x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isIdentity x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>check if identity
+-}
+mx_isIdentity :: MXClass a => a -> IO Bool
+mx_isIdentity x = casADi__MX__isIdentity (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isZero" c_CasADi__MX__isZero
+  :: Ptr MX' -> IO CInt
+casADi__MX__isZero
+  :: MX -> IO Bool
+casADi__MX__isZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>check if zero (note that false negative answers are possible)
+-}
+mx_isZero :: MXClass a => a -> IO Bool
+mx_isZero x = casADi__MX__isZero (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isOne" c_CasADi__MX__isOne
+  :: Ptr MX' -> IO CInt
+casADi__MX__isOne
+  :: MX -> IO Bool
+casADi__MX__isOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>check if zero (note that false negative answers are possible)
+-}
+mx_isOne :: MXClass a => a -> IO Bool
+mx_isOne x = casADi__MX__isOne (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isMinusOne" c_CasADi__MX__isMinusOne
+  :: Ptr MX' -> IO CInt
+casADi__MX__isMinusOne
+  :: MX -> IO Bool
+casADi__MX__isMinusOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isMinusOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>check if zero (note that false negative answers are possible)
+-}
+mx_isMinusOne :: MXClass a => a -> IO Bool
+mx_isMinusOne x = casADi__MX__isMinusOne (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isTranspose" c_CasADi__MX__isTranspose
+  :: Ptr MX' -> IO CInt
+casADi__MX__isTranspose
+  :: MX -> IO Bool
+casADi__MX__isTranspose x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isTranspose x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is the expression a transpose?
+-}
+mx_isTranspose :: MXClass a => a -> IO Bool
+mx_isTranspose x = casADi__MX__isTranspose (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isRegular" c_CasADi__MX__isRegular
+  :: Ptr MX' -> IO CInt
+casADi__MX__isRegular
+  :: MX -> IO Bool
+casADi__MX__isRegular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isRegular x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Checks if expression does not contain NaN or Inf.
+-}
+mx_isRegular :: MXClass a => a -> IO Bool
+mx_isRegular x = casADi__MX__isRegular (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getFunction" c_CasADi__MX__getFunction
+  :: Ptr MX' -> IO (Ptr Function')
+casADi__MX__getFunction
+  :: MX -> IO Function
+casADi__MX__getFunction x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getFunction x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get function.
+-}
+mx_getFunction :: MXClass a => a -> IO Function
+mx_getFunction x = casADi__MX__getFunction (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isBinary" c_CasADi__MX__isBinary
+  :: Ptr MX' -> IO CInt
+casADi__MX__isBinary
+  :: MX -> IO Bool
+casADi__MX__isBinary x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isBinary x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is binary operation.
+-}
+mx_isBinary :: MXClass a => a -> IO Bool
+mx_isBinary x = casADi__MX__isBinary (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isUnary" c_CasADi__MX__isUnary
+  :: Ptr MX' -> IO CInt
+casADi__MX__isUnary
+  :: MX -> IO Bool
+casADi__MX__isUnary x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__isUnary x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is unary operation.
+-}
+mx_isUnary :: MXClass a => a -> IO Bool
+mx_isUnary x = casADi__MX__isUnary (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getOp" c_CasADi__MX__getOp
+  :: Ptr MX' -> IO CInt
+casADi__MX__getOp
+  :: MX -> IO Int
+casADi__MX__getOp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getOp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get operation type.
+-}
+mx_getOp :: MXClass a => a -> IO Int
+mx_getOp x = casADi__MX__getOp (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isEqual" c_CasADi__MX__isEqual
+  :: Ptr MX' -> Ptr MX' -> CInt -> IO CInt
+casADi__MX__isEqual
+  :: MX -> MX -> Int -> IO Bool
+casADi__MX__isEqual x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__isEqual x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  bool CasADi::MX::isEqual(const MX &y, int depth=0) const 
+>------------------------------------------------------------------------
+>
+>Check if two nodes are equivalent up to a given depth. Depth=0 checks if the
+>expressions are identical, i.e. points to the same node.
+>
+>a = x*x b = x*x
+>
+>a.isEqual(b,0) will return false, but a.isEqual(b,1) will return true
+>
+>>  bool CasADi::MX::isEqual(const MXNode *y, int depth=0) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+mx_isEqual :: MXClass a => a -> MX -> Int -> IO Bool
+mx_isEqual x = casADi__MX__isEqual (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__isEqual_TIC" c_CasADi__MX__isEqual_TIC
+  :: Ptr MX' -> Ptr MX' -> IO CInt
+casADi__MX__isEqual'
+  :: MX -> MX -> IO Bool
+casADi__MX__isEqual' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__isEqual_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_isEqual' :: MXClass a => a -> MX -> IO Bool
+mx_isEqual' x = casADi__MX__isEqual' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____hash__" c_CasADi__MX____hash__
+  :: Ptr MX' -> IO CLong
+casADi__MX____hash__
+  :: MX -> IO Int
+casADi__MX____hash__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX____hash__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns a number that is unique for a given MXNode. If the MX does not point
+>to any node, 0 is returned.
+-}
+mx___hash__ :: MXClass a => a -> IO Int
+mx___hash__ x = casADi__MX____hash__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getTemp" c_CasADi__MX__getTemp
+  :: Ptr MX' -> IO CInt
+casADi__MX__getTemp
+  :: MX -> IO Int
+casADi__MX__getTemp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__getTemp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get the temporary
+>variable
+-}
+mx_getTemp :: MXClass a => a -> IO Int
+mx_getTemp x = casADi__MX__getTemp (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setTemp" c_CasADi__MX__setTemp
+  :: Ptr MX' -> CInt -> IO ()
+casADi__MX__setTemp
+  :: MX -> Int -> IO ()
+casADi__MX__setTemp x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__setTemp x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set the temporary
+>variable.
+-}
+mx_setTemp :: MXClass a => a -> Int -> IO ()
+mx_setTemp x = casADi__MX__setTemp (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__binary" c_CasADi__MX__binary
+  :: CInt -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__binary
+  :: Int -> MX -> MX -> IO MX
+casADi__MX__binary x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__binary x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create nodes by their ID.
+-}
+mx_binary :: Int -> MX -> MX -> IO MX
+mx_binary = casADi__MX__binary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__unary" c_CasADi__MX__unary
+  :: CInt -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__unary
+  :: Int -> MX -> IO MX
+casADi__MX__unary x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__unary x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create nodes by their ID.
+-}
+mx_unary :: Int -> MX -> IO MX
+mx_unary = casADi__MX__unary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__inf" c_CasADi__MX__inf
+  :: Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__inf
+  :: Sparsity -> IO MX
+casADi__MX__inf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__inf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a matrix with all inf
+-}
+mx_inf :: Sparsity -> IO MX
+mx_inf = casADi__MX__inf
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__inf_TIC" c_CasADi__MX__inf_TIC
+  :: CInt -> CInt -> IO (Ptr MX')
+casADi__MX__inf'
+  :: Int -> Int -> IO MX
+casADi__MX__inf' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__inf_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_inf' :: Int -> Int -> IO MX
+mx_inf' = casADi__MX__inf'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__inf_TIC_TIC" c_CasADi__MX__inf_TIC_TIC
+  :: CInt -> IO (Ptr MX')
+casADi__MX__inf''
+  :: Int -> IO MX
+casADi__MX__inf'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__inf_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx_inf'' :: Int -> IO MX
+mx_inf'' = casADi__MX__inf''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__inf_TIC_TIC_TIC" c_CasADi__MX__inf_TIC_TIC_TIC
+  :: IO (Ptr MX')
+casADi__MX__inf'''
+  :: IO MX
+casADi__MX__inf'''  =
+  c_CasADi__MX__inf_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+mx_inf''' :: IO MX
+mx_inf''' = casADi__MX__inf'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nan" c_CasADi__MX__nan
+  :: Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__nan
+  :: Sparsity -> IO MX
+casADi__MX__nan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__nan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a matrix with all nan
+-}
+mx_nan :: Sparsity -> IO MX
+mx_nan = casADi__MX__nan
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nan_TIC" c_CasADi__MX__nan_TIC
+  :: CInt -> CInt -> IO (Ptr MX')
+casADi__MX__nan'
+  :: Int -> Int -> IO MX
+casADi__MX__nan' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__nan_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_nan' :: Int -> Int -> IO MX
+mx_nan' = casADi__MX__nan'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nan_TIC_TIC" c_CasADi__MX__nan_TIC_TIC
+  :: CInt -> IO (Ptr MX')
+casADi__MX__nan''
+  :: Int -> IO MX
+casADi__MX__nan'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__nan_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx_nan'' :: Int -> IO MX
+mx_nan'' = casADi__MX__nan''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__nan_TIC_TIC_TIC" c_CasADi__MX__nan_TIC_TIC_TIC
+  :: IO (Ptr MX')
+casADi__MX__nan'''
+  :: IO MX
+casADi__MX__nan'''  =
+  c_CasADi__MX__nan_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+mx_nan''' :: IO MX
+mx_nan''' = casADi__MX__nan'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__repmat" c_CasADi__MX__repmat
+  :: Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__repmat
+  :: MX -> Sparsity -> IO MX
+casADi__MX__repmat x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__repmat x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>create a matrix by repeating an existing matrix
+-}
+mx_repmat :: MX -> Sparsity -> IO MX
+mx_repmat = casADi__MX__repmat
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__repmat_TIC" c_CasADi__MX__repmat_TIC
+  :: Ptr MX' -> CInt -> CInt -> IO (Ptr MX')
+casADi__MX__repmat'
+  :: MX -> Int -> Int -> IO MX
+casADi__MX__repmat' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__repmat_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_repmat' :: MX -> Int -> Int -> IO MX
+mx_repmat' = casADi__MX__repmat'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__repmat_TIC_TIC" c_CasADi__MX__repmat_TIC_TIC
+  :: Ptr MX' -> CInt -> IO (Ptr MX')
+casADi__MX__repmat''
+  :: MX -> Int -> IO MX
+casADi__MX__repmat'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__repmat_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_repmat'' :: MX -> Int -> IO MX
+mx_repmat'' = casADi__MX__repmat''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__eye" c_CasADi__MX__eye
+  :: CInt -> IO (Ptr MX')
+casADi__MX__eye
+  :: Int -> IO MX
+casADi__MX__eye x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__eye x0' >>= wrapReturn
+
+-- classy wrapper
+mx_eye :: Int -> IO MX
+mx_eye = casADi__MX__eye
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub" c_CasADi__MX__setSub
+  :: Ptr MX' -> Ptr MX' -> CInt -> CInt -> IO ()
+casADi__MX__setSub
+  :: MX -> MX -> Int -> Int -> IO ()
+casADi__MX__setSub x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+mx_setSub :: MXClass a => a -> MX -> Int -> Int -> IO ()
+mx_setSub x = casADi__MX__setSub (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC" c_CasADi__MX__setSub_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__MX__setSub'
+  :: MX -> MX -> Vector Int -> Int -> IO ()
+casADi__MX__setSub' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub' :: MXClass a => a -> MX -> Vector Int -> Int -> IO ()
+mx_setSub' x = casADi__MX__setSub' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> CInt -> Ptr (CppVec CInt) -> IO ()
+casADi__MX__setSub''
+  :: MX -> MX -> Int -> Vector Int -> IO ()
+casADi__MX__setSub'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub'' :: MXClass a => a -> MX -> Int -> Vector Int -> IO ()
+mx_setSub'' x = casADi__MX__setSub'' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__MX__setSub'''
+  :: MX -> MX -> Vector Int -> Vector Int -> IO ()
+casADi__MX__setSub''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub''' :: MXClass a => a -> MX -> Vector Int -> Vector Int -> IO ()
+mx_setSub''' x = casADi__MX__setSub''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr IMatrix' -> IO ()
+casADi__MX__setSub''''
+  :: MX -> MX -> IMatrix -> IO ()
+casADi__MX__setSub'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub'''' :: MXClass a => a -> MX -> IMatrix -> IO ()
+mx_setSub'''' x = casADi__MX__setSub'''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> IO ()
+casADi__MX__setSub'''''
+  :: MX -> MX -> IMatrix -> Vector Int -> IO ()
+casADi__MX__setSub''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub''''' :: MXClass a => a -> MX -> IMatrix -> Vector Int -> IO ()
+mx_setSub''''' x = casADi__MX__setSub''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr (CppVec CInt) -> Ptr IMatrix' -> IO ()
+casADi__MX__setSub''''''
+  :: MX -> MX -> Vector Int -> IMatrix -> IO ()
+casADi__MX__setSub'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub'''''' :: MXClass a => a -> MX -> Vector Int -> IMatrix -> IO ()
+mx_setSub'''''' x = casADi__MX__setSub'''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr Slice' -> Ptr Slice' -> IO ()
+casADi__MX__setSub'''''''
+  :: MX -> MX -> Slice -> Slice -> IO ()
+casADi__MX__setSub''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub''''''' :: MXClass a => a -> MX -> Slice -> Slice -> IO ()
+mx_setSub''''''' x = casADi__MX__setSub''''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__MX__setSub''''''''
+  :: MX -> MX -> IMatrix -> IMatrix -> IO ()
+casADi__MX__setSub'''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub'''''''' :: MXClass a => a -> MX -> IMatrix -> IMatrix -> IO ()
+mx_setSub'''''''' x = casADi__MX__setSub'''''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr Sparsity' -> CInt -> IO ()
+casADi__MX__setSub'''''''''
+  :: MX -> MX -> Sparsity -> Int -> IO ()
+casADi__MX__setSub''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MX__setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mx_setSub''''''''' :: MXClass a => a -> MX -> Sparsity -> Int -> IO ()
+mx_setSub''''''''' x = casADi__MX__setSub''''''''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getNZ" c_CasADi__MX__getNZ
+  :: Ptr MX' -> CInt -> IO (Ptr MX')
+casADi__MX__getNZ
+  :: MX -> Int -> IO MX
+casADi__MX__getNZ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__getNZ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+mx_getNZ :: MXClass a => a -> Int -> IO MX
+mx_getNZ x = casADi__MX__getNZ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getNZ_TIC" c_CasADi__MX__getNZ_TIC
+  :: Ptr MX' -> Ptr (CppVec CInt) -> IO (Ptr MX')
+casADi__MX__getNZ'
+  :: MX -> Vector Int -> IO MX
+casADi__MX__getNZ' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__getNZ_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_getNZ' :: MXClass a => a -> Vector Int -> IO MX
+mx_getNZ' x = casADi__MX__getNZ' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getNZ_TIC_TIC" c_CasADi__MX__getNZ_TIC_TIC
+  :: Ptr MX' -> Ptr Slice' -> IO (Ptr MX')
+casADi__MX__getNZ''
+  :: MX -> Slice -> IO MX
+casADi__MX__getNZ'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__getNZ_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_getNZ'' :: MXClass a => a -> Slice -> IO MX
+mx_getNZ'' x = casADi__MX__getNZ'' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getNZ_TIC_TIC_TIC" c_CasADi__MX__getNZ_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IMatrix' -> IO (Ptr MX')
+casADi__MX__getNZ'''
+  :: MX -> IMatrix -> IO MX
+casADi__MX__getNZ''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__getNZ_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_getNZ''' :: MXClass a => a -> IMatrix -> IO MX
+mx_getNZ''' x = casADi__MX__getNZ''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setNZ" c_CasADi__MX__setNZ
+  :: Ptr MX' -> CInt -> Ptr MX' -> IO ()
+casADi__MX__setNZ
+  :: MX -> Int -> MX -> IO ()
+casADi__MX__setNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__setNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+mx_setNZ :: MXClass a => a -> Int -> MX -> IO ()
+mx_setNZ x = casADi__MX__setNZ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setNZ_TIC" c_CasADi__MX__setNZ_TIC
+  :: Ptr MX' -> Ptr (CppVec CInt) -> Ptr MX' -> IO ()
+casADi__MX__setNZ'
+  :: MX -> Vector Int -> MX -> IO ()
+casADi__MX__setNZ' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__setNZ_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_setNZ' :: MXClass a => a -> Vector Int -> MX -> IO ()
+mx_setNZ' x = casADi__MX__setNZ' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setNZ_TIC_TIC" c_CasADi__MX__setNZ_TIC_TIC
+  :: Ptr MX' -> Ptr Slice' -> Ptr MX' -> IO ()
+casADi__MX__setNZ''
+  :: MX -> Slice -> MX -> IO ()
+casADi__MX__setNZ'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__setNZ_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_setNZ'' :: MXClass a => a -> Slice -> MX -> IO ()
+mx_setNZ'' x = casADi__MX__setNZ'' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setNZ_TIC_TIC_TIC" c_CasADi__MX__setNZ_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr IMatrix' -> Ptr MX' -> IO ()
+casADi__MX__setNZ'''
+  :: MX -> IMatrix -> MX -> IO ()
+casADi__MX__setNZ''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__setNZ_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_setNZ''' :: MXClass a => a -> IMatrix -> MX -> IO ()
+mx_setNZ''' x = casADi__MX__setNZ''' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__append" c_CasADi__MX__append
+  :: Ptr MX' -> Ptr MX' -> IO ()
+casADi__MX__append
+  :: MX -> MX -> IO ()
+casADi__MX__append x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__append x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Append a matrix vertically (NOTE: only efficient if vector)
+-}
+mx_append :: MXClass a => a -> MX -> IO ()
+mx_append x = casADi__MX__append (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__appendColumns" c_CasADi__MX__appendColumns
+  :: Ptr MX' -> Ptr MX' -> IO ()
+casADi__MX__appendColumns
+  :: MX -> MX -> IO ()
+casADi__MX__appendColumns x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__appendColumns x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Append a matrix horizontally.
+-}
+mx_appendColumns :: MXClass a => a -> MX -> IO ()
+mx_appendColumns x = casADi__MX__appendColumns (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____add__" c_CasADi__MX____add__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____add__
+  :: MX -> MX -> IO MX
+casADi__MX____add__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____add__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___add__ :: MXClass a => a -> MX -> IO MX
+mx___add__ x = casADi__MX____add__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____sub__" c_CasADi__MX____sub__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____sub__
+  :: MX -> MX -> IO MX
+casADi__MX____sub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____sub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___sub__ :: MXClass a => a -> MX -> IO MX
+mx___sub__ x = casADi__MX____sub__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____mul__" c_CasADi__MX____mul__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____mul__
+  :: MX -> MX -> IO MX
+casADi__MX____mul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____mul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___mul__ :: MXClass a => a -> MX -> IO MX
+mx___mul__ x = casADi__MX____mul__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____div__" c_CasADi__MX____div__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____div__
+  :: MX -> MX -> IO MX
+casADi__MX____div__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____div__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___div__ :: MXClass a => a -> MX -> IO MX
+mx___div__ x = casADi__MX____div__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____lt__" c_CasADi__MX____lt__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____lt__
+  :: MX -> MX -> IO MX
+casADi__MX____lt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____lt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___lt__ :: MXClass a => a -> MX -> IO MX
+mx___lt__ x = casADi__MX____lt__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____le__" c_CasADi__MX____le__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____le__
+  :: MX -> MX -> IO MX
+casADi__MX____le__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____le__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___le__ :: MXClass a => a -> MX -> IO MX
+mx___le__ x = casADi__MX____le__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____eq__" c_CasADi__MX____eq__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____eq__
+  :: MX -> MX -> IO MX
+casADi__MX____eq__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____eq__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___eq__ :: MXClass a => a -> MX -> IO MX
+mx___eq__ x = casADi__MX____eq__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____ne__" c_CasADi__MX____ne__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____ne__
+  :: MX -> MX -> IO MX
+casADi__MX____ne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____ne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___ne__ :: MXClass a => a -> MX -> IO MX
+mx___ne__ x = casADi__MX____ne__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____truediv__" c_CasADi__MX____truediv__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____truediv__
+  :: MX -> MX -> IO MX
+casADi__MX____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___truediv__ :: MXClass a => a -> MX -> IO MX
+mx___truediv__ x = casADi__MX____truediv__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____pow__" c_CasADi__MX____pow__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____pow__
+  :: MX -> MX -> IO MX
+casADi__MX____pow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____pow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___pow__ :: MXClass a => a -> MX -> IO MX
+mx___pow__ x = casADi__MX____pow__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____constpow__" c_CasADi__MX____constpow__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____constpow__
+  :: MX -> MX -> IO MX
+casADi__MX____constpow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____constpow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___constpow__ :: MXClass a => a -> MX -> IO MX
+mx___constpow__ x = casADi__MX____constpow__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____mrdivide__" c_CasADi__MX____mrdivide__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____mrdivide__
+  :: MX -> MX -> IO MX
+casADi__MX____mrdivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____mrdivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___mrdivide__ :: MXClass a => a -> MX -> IO MX
+mx___mrdivide__ x = casADi__MX____mrdivide__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____mpower__" c_CasADi__MX____mpower__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____mpower__
+  :: MX -> MX -> IO MX
+casADi__MX____mpower__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____mpower__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___mpower__ :: MXClass a => a -> MX -> IO MX
+mx___mpower__ x = casADi__MX____mpower__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__mul" c_CasADi__MX__mul
+  :: Ptr MX' -> Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__mul
+  :: MX -> MX -> Sparsity -> IO MX
+casADi__MX__mul x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__mul x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_mul :: MXClass a => a -> MX -> Sparsity -> IO MX
+mx_mul x = casADi__MX__mul (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__mul_TIC" c_CasADi__MX__mul_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__mul'
+  :: MX -> MX -> IO MX
+casADi__MX__mul' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__mul_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_mul' :: MXClass a => a -> MX -> IO MX
+mx_mul' x = casADi__MX__mul' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__mul_full" c_CasADi__MX__mul_full
+  :: Ptr MX' -> Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__mul_full
+  :: MX -> MX -> Sparsity -> IO MX
+casADi__MX__mul_full x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__mul_full x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mx_mul_full :: MXClass a => a -> MX -> Sparsity -> IO MX
+mx_mul_full x = casADi__MX__mul_full (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__mul_full_TIC" c_CasADi__MX__mul_full_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__mul_full'
+  :: MX -> MX -> IO MX
+casADi__MX__mul_full' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__mul_full_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_mul_full' :: MXClass a => a -> MX -> IO MX
+mx_mul_full' x = casADi__MX__mul_full' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__inner_prod" c_CasADi__MX__inner_prod
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__inner_prod
+  :: MX -> MX -> IO MX
+casADi__MX__inner_prod x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__inner_prod x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_inner_prod :: MXClass a => a -> MX -> IO MX
+mx_inner_prod x = casADi__MX__inner_prod (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__outer_prod" c_CasADi__MX__outer_prod
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__outer_prod
+  :: MX -> MX -> IO MX
+casADi__MX__outer_prod x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__outer_prod x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_outer_prod :: MXClass a => a -> MX -> IO MX
+mx_outer_prod x = casADi__MX__outer_prod (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__constpow" c_CasADi__MX__constpow
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__constpow
+  :: MX -> MX -> IO MX
+casADi__MX__constpow x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__constpow x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_constpow :: MXClass a => a -> MX -> IO MX
+mx_constpow x = casADi__MX__constpow (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__fmin" c_CasADi__MX__fmin
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__fmin
+  :: MX -> MX -> IO MX
+casADi__MX__fmin x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__fmin x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_fmin :: MXClass a => a -> MX -> IO MX
+mx_fmin x = casADi__MX__fmin (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__fmax" c_CasADi__MX__fmax
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__fmax
+  :: MX -> MX -> IO MX
+casADi__MX__fmax x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__fmax x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_fmax :: MXClass a => a -> MX -> IO MX
+mx_fmax x = casADi__MX__fmax (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__printme" c_CasADi__MX__printme
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__printme
+  :: MX -> MX -> IO MX
+casADi__MX__printme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__printme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_printme :: MXClass a => a -> MX -> IO MX
+mx_printme x = casADi__MX__printme (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arctan2" c_CasADi__MX__arctan2
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__arctan2
+  :: MX -> MX -> IO MX
+casADi__MX__arctan2 x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__arctan2 x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_arctan2 :: MXClass a => a -> MX -> IO MX
+mx_arctan2 x = casADi__MX__arctan2 (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__logic_and" c_CasADi__MX__logic_and
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__logic_and
+  :: MX -> MX -> IO MX
+casADi__MX__logic_and x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__logic_and x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_logic_and :: MXClass a => a -> MX -> IO MX
+mx_logic_and x = casADi__MX__logic_and (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__logic_or" c_CasADi__MX__logic_or
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__logic_or
+  :: MX -> MX -> IO MX
+casADi__MX__logic_or x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__logic_or x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_logic_or :: MXClass a => a -> MX -> IO MX
+mx_logic_or x = casADi__MX__logic_or (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__if_else_zero" c_CasADi__MX__if_else_zero
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__if_else_zero
+  :: MX -> MX -> IO MX
+casADi__MX__if_else_zero x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__if_else_zero x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_if_else_zero :: MXClass a => a -> MX -> IO MX
+mx_if_else_zero x = casADi__MX__if_else_zero (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX____copysign__" c_CasADi__MX____copysign__
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX____copysign__
+  :: MX -> MX -> IO MX
+casADi__MX____copysign__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX____copysign__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx___copysign__ :: MXClass a => a -> MX -> IO MX
+mx___copysign__ x = casADi__MX____copysign__ (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__exp" c_CasADi__MX__exp
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__exp
+  :: MX -> IO MX
+casADi__MX__exp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__exp x0' >>= wrapReturn
+
+-- classy wrapper
+mx_exp :: MXClass a => a -> IO MX
+mx_exp x = casADi__MX__exp (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__log" c_CasADi__MX__log
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__log
+  :: MX -> IO MX
+casADi__MX__log x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__log x0' >>= wrapReturn
+
+-- classy wrapper
+mx_log :: MXClass a => a -> IO MX
+mx_log x = casADi__MX__log (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__log10" c_CasADi__MX__log10
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__log10
+  :: MX -> IO MX
+casADi__MX__log10 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__log10 x0' >>= wrapReturn
+
+-- classy wrapper
+mx_log10 :: MXClass a => a -> IO MX
+mx_log10 x = casADi__MX__log10 (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__sqrt" c_CasADi__MX__sqrt
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__sqrt
+  :: MX -> IO MX
+casADi__MX__sqrt x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__sqrt x0' >>= wrapReturn
+
+-- classy wrapper
+mx_sqrt :: MXClass a => a -> IO MX
+mx_sqrt x = casADi__MX__sqrt (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__sin" c_CasADi__MX__sin
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__sin
+  :: MX -> IO MX
+casADi__MX__sin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__sin x0' >>= wrapReturn
+
+-- classy wrapper
+mx_sin :: MXClass a => a -> IO MX
+mx_sin x = casADi__MX__sin (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__cos" c_CasADi__MX__cos
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__cos
+  :: MX -> IO MX
+casADi__MX__cos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__cos x0' >>= wrapReturn
+
+-- classy wrapper
+mx_cos :: MXClass a => a -> IO MX
+mx_cos x = casADi__MX__cos (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__tan" c_CasADi__MX__tan
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__tan
+  :: MX -> IO MX
+casADi__MX__tan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__tan x0' >>= wrapReturn
+
+-- classy wrapper
+mx_tan :: MXClass a => a -> IO MX
+mx_tan x = casADi__MX__tan (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arcsin" c_CasADi__MX__arcsin
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__arcsin
+  :: MX -> IO MX
+casADi__MX__arcsin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__arcsin x0' >>= wrapReturn
+
+-- classy wrapper
+mx_arcsin :: MXClass a => a -> IO MX
+mx_arcsin x = casADi__MX__arcsin (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arccos" c_CasADi__MX__arccos
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__arccos
+  :: MX -> IO MX
+casADi__MX__arccos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__arccos x0' >>= wrapReturn
+
+-- classy wrapper
+mx_arccos :: MXClass a => a -> IO MX
+mx_arccos x = casADi__MX__arccos (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arctan" c_CasADi__MX__arctan
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__arctan
+  :: MX -> IO MX
+casADi__MX__arctan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__arctan x0' >>= wrapReturn
+
+-- classy wrapper
+mx_arctan :: MXClass a => a -> IO MX
+mx_arctan x = casADi__MX__arctan (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__floor" c_CasADi__MX__floor
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__floor
+  :: MX -> IO MX
+casADi__MX__floor x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__floor x0' >>= wrapReturn
+
+-- classy wrapper
+mx_floor :: MXClass a => a -> IO MX
+mx_floor x = casADi__MX__floor (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__ceil" c_CasADi__MX__ceil
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__ceil
+  :: MX -> IO MX
+casADi__MX__ceil x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__ceil x0' >>= wrapReturn
+
+-- classy wrapper
+mx_ceil :: MXClass a => a -> IO MX
+mx_ceil x = casADi__MX__ceil (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__fabs" c_CasADi__MX__fabs
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__fabs
+  :: MX -> IO MX
+casADi__MX__fabs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__fabs x0' >>= wrapReturn
+
+-- classy wrapper
+mx_fabs :: MXClass a => a -> IO MX
+mx_fabs x = casADi__MX__fabs (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__sign" c_CasADi__MX__sign
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__sign
+  :: MX -> IO MX
+casADi__MX__sign x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__sign x0' >>= wrapReturn
+
+-- classy wrapper
+mx_sign :: MXClass a => a -> IO MX
+mx_sign x = casADi__MX__sign (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__erfinv" c_CasADi__MX__erfinv
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__erfinv
+  :: MX -> IO MX
+casADi__MX__erfinv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__erfinv x0' >>= wrapReturn
+
+-- classy wrapper
+mx_erfinv :: MXClass a => a -> IO MX
+mx_erfinv x = casADi__MX__erfinv (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__erf" c_CasADi__MX__erf
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__erf
+  :: MX -> IO MX
+casADi__MX__erf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__erf x0' >>= wrapReturn
+
+-- classy wrapper
+mx_erf :: MXClass a => a -> IO MX
+mx_erf x = casADi__MX__erf (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__sinh" c_CasADi__MX__sinh
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__sinh
+  :: MX -> IO MX
+casADi__MX__sinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__sinh x0' >>= wrapReturn
+
+-- classy wrapper
+mx_sinh :: MXClass a => a -> IO MX
+mx_sinh x = casADi__MX__sinh (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__cosh" c_CasADi__MX__cosh
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__cosh
+  :: MX -> IO MX
+casADi__MX__cosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__cosh x0' >>= wrapReturn
+
+-- classy wrapper
+mx_cosh :: MXClass a => a -> IO MX
+mx_cosh x = casADi__MX__cosh (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__tanh" c_CasADi__MX__tanh
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__tanh
+  :: MX -> IO MX
+casADi__MX__tanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__tanh x0' >>= wrapReturn
+
+-- classy wrapper
+mx_tanh :: MXClass a => a -> IO MX
+mx_tanh x = casADi__MX__tanh (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arcsinh" c_CasADi__MX__arcsinh
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__arcsinh
+  :: MX -> IO MX
+casADi__MX__arcsinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__arcsinh x0' >>= wrapReturn
+
+-- classy wrapper
+mx_arcsinh :: MXClass a => a -> IO MX
+mx_arcsinh x = casADi__MX__arcsinh (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arccosh" c_CasADi__MX__arccosh
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__arccosh
+  :: MX -> IO MX
+casADi__MX__arccosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__arccosh x0' >>= wrapReturn
+
+-- classy wrapper
+mx_arccosh :: MXClass a => a -> IO MX
+mx_arccosh x = casADi__MX__arccosh (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__arctanh" c_CasADi__MX__arctanh
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__arctanh
+  :: MX -> IO MX
+casADi__MX__arctanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__arctanh x0' >>= wrapReturn
+
+-- classy wrapper
+mx_arctanh :: MXClass a => a -> IO MX
+mx_arctanh x = casADi__MX__arctanh (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__logic_not" c_CasADi__MX__logic_not
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__logic_not
+  :: MX -> IO MX
+casADi__MX__logic_not x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__logic_not x0' >>= wrapReturn
+
+-- classy wrapper
+mx_logic_not :: MXClass a => a -> IO MX
+mx_logic_not x = casADi__MX__logic_not (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__attachAssert" c_CasADi__MX__attachAssert
+  :: Ptr MX' -> Ptr MX' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MX__attachAssert
+  :: MX -> MX -> String -> IO MX
+casADi__MX__attachAssert x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__attachAssert x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>returns itself, but with an assertion attached
+>
+>If y does not evaluate to 1, a runtime error is raised
+-}
+mx_attachAssert :: MXClass a => a -> MX -> String -> IO MX
+mx_attachAssert x = casADi__MX__attachAssert (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__attachAssert_TIC" c_CasADi__MX__attachAssert_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__attachAssert'
+  :: MX -> MX -> IO MX
+casADi__MX__attachAssert' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__attachAssert_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_attachAssert' :: MXClass a => a -> MX -> IO MX
+mx_attachAssert' x = casADi__MX__attachAssert' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSparse" c_CasADi__MX__setSparse
+  :: Ptr MX' -> Ptr Sparsity' -> CInt -> IO (Ptr MX')
+casADi__MX__setSparse
+  :: MX -> Sparsity -> Bool -> IO MX
+casADi__MX__setSparse x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MX__setSparse x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set sparse.
+-}
+mx_setSparse :: MXClass a => a -> Sparsity -> Bool -> IO MX
+mx_setSparse x = casADi__MX__setSparse (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setSparse_TIC" c_CasADi__MX__setSparse_TIC
+  :: Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__setSparse'
+  :: MX -> Sparsity -> IO MX
+casADi__MX__setSparse' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__setSparse_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx_setSparse' :: MXClass a => a -> Sparsity -> IO MX
+mx_setSparse' x = casADi__MX__setSparse' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__densify" c_CasADi__MX__densify
+  :: Ptr MX' -> Ptr MX' -> IO ()
+casADi__MX__densify
+  :: MX -> MX -> IO ()
+casADi__MX__densify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__densify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Make the matrix dense.
+-}
+mx_densify :: MXClass a => a -> MX -> IO ()
+mx_densify x = casADi__MX__densify (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__densify_TIC" c_CasADi__MX__densify_TIC
+  :: Ptr MX' -> IO ()
+casADi__MX__densify'
+  :: MX -> IO ()
+casADi__MX__densify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__densify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx_densify' :: MXClass a => a -> IO ()
+mx_densify' x = casADi__MX__densify' (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__lift" c_CasADi__MX__lift
+  :: Ptr MX' -> Ptr MX' -> IO ()
+casADi__MX__lift
+  :: MX -> MX -> IO ()
+casADi__MX__lift x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__lift x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Lift an expression.
+-}
+mx_lift :: MXClass a => a -> MX -> IO ()
+mx_lift x = casADi__MX__lift (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__addToSum" c_CasADi__MX__addToSum
+  :: Ptr MX' -> Ptr MX' -> IO ()
+casADi__MX__addToSum
+  :: MX -> MX -> IO ()
+casADi__MX__addToSum x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__addToSum x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Add an expression to the expression if the expression is non-empty,
+>otherwise assign.
+-}
+mx_addToSum :: MXClass a => a -> MX -> IO ()
+mx_addToSum x = casADi__MX__addToSum (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__trans" c_CasADi__MX__trans
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__trans
+  :: MX -> IO MX
+casADi__MX__trans x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__trans x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Transpose the matrix.
+-}
+mx_trans :: MXClass a => a -> IO MX
+mx_trans x = casADi__MX__trans (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__mapping" c_CasADi__MX__mapping
+  :: Ptr MX' -> IO (Ptr IMatrix')
+casADi__MX__mapping
+  :: MX -> IO IMatrix
+casADi__MX__mapping x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__mapping x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get an IMatrix representation of a GetNonzeros or SetNonzeros node.
+-}
+mx_mapping :: MXClass a => a -> IO IMatrix
+mx_mapping x = casADi__MX__mapping (castMX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setMaxNumCallsInPrint" c_CasADi__MX__setMaxNumCallsInPrint
+  :: CLong -> IO ()
+casADi__MX__setMaxNumCallsInPrint
+  :: Int -> IO ()
+casADi__MX__setMaxNumCallsInPrint x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__setMaxNumCallsInPrint x0' >>= wrapReturn
+
+-- classy wrapper
+mx_setMaxNumCallsInPrint :: Int -> IO ()
+mx_setMaxNumCallsInPrint = casADi__MX__setMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setMaxNumCallsInPrint_TIC" c_CasADi__MX__setMaxNumCallsInPrint_TIC
+  :: IO ()
+casADi__MX__setMaxNumCallsInPrint'
+  :: IO ()
+casADi__MX__setMaxNumCallsInPrint'  =
+  c_CasADi__MX__setMaxNumCallsInPrint_TIC  >>= wrapReturn
+
+-- classy wrapper
+mx_setMaxNumCallsInPrint' :: IO ()
+mx_setMaxNumCallsInPrint' = casADi__MX__setMaxNumCallsInPrint'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getMaxNumCallsInPrint" c_CasADi__MX__getMaxNumCallsInPrint
+  :: IO CLong
+casADi__MX__getMaxNumCallsInPrint
+  :: IO Int
+casADi__MX__getMaxNumCallsInPrint  =
+  c_CasADi__MX__getMaxNumCallsInPrint  >>= wrapReturn
+
+-- classy wrapper
+mx_getMaxNumCallsInPrint :: IO Int
+mx_getMaxNumCallsInPrint = casADi__MX__getMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setEqualityCheckingDepth" c_CasADi__MX__setEqualityCheckingDepth
+  :: CInt -> IO ()
+casADi__MX__setEqualityCheckingDepth
+  :: Int -> IO ()
+casADi__MX__setEqualityCheckingDepth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__setEqualityCheckingDepth x0' >>= wrapReturn
+
+-- classy wrapper
+mx_setEqualityCheckingDepth :: Int -> IO ()
+mx_setEqualityCheckingDepth = casADi__MX__setEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__setEqualityCheckingDepth_TIC" c_CasADi__MX__setEqualityCheckingDepth_TIC
+  :: IO ()
+casADi__MX__setEqualityCheckingDepth'
+  :: IO ()
+casADi__MX__setEqualityCheckingDepth'  =
+  c_CasADi__MX__setEqualityCheckingDepth_TIC  >>= wrapReturn
+
+-- classy wrapper
+mx_setEqualityCheckingDepth' :: IO ()
+mx_setEqualityCheckingDepth' = casADi__MX__setEqualityCheckingDepth'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__getEqualityCheckingDepth" c_CasADi__MX__getEqualityCheckingDepth
+  :: IO CInt
+casADi__MX__getEqualityCheckingDepth
+  :: IO Int
+casADi__MX__getEqualityCheckingDepth  =
+  c_CasADi__MX__getEqualityCheckingDepth  >>= wrapReturn
+
+-- classy wrapper
+mx_getEqualityCheckingDepth :: IO Int
+mx_getEqualityCheckingDepth = casADi__MX__getEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX" c_CasADi__MX__MX
+  :: IO (Ptr MX')
+casADi__MX__MX
+  :: IO MX
+casADi__MX__MX  =
+  c_CasADi__MX__MX  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::MX::MX(const std::string &name, int nrow=1, int ncol=1)
+>
+>>  CasADi::MX::MX(const std::string &name, const std::pair< int, int > &rc)
+>
+>>  CasADi::MX::MX(const std::string &name, const Sparsity &sp)
+>
+>>  CasADi::MX::MX(int nrow, int ncol)
+>
+>>  CasADi::MX::MX(int nrow, int ncol, const MX &val)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+>
+>>  CasADi::MX::MX(const Sparsity &sp, int val=0)
+>
+>>  CasADi::MX::MX(const Sparsity &sp, double val)
+>
+>>  CasADi::MX::MX(const Sparsity &sp, const MX &val)
+>------------------------------------------------------------------------
+>
+>Construct constant matrix with a given sparsity.
+>
+>>  CasADi::MX::MX()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::MX::MX(double x)
+>------------------------------------------------------------------------
+>
+>Create scalar constant (also implicit type conversion)
+>
+>>  CasADi::MX::MX(const MX &x)
+>------------------------------------------------------------------------
+>
+>Copy constructor.
+>
+>>  CasADi::MX::MX(const std::vector< double > &x)
+>------------------------------------------------------------------------
+>
+>Create vector constant (also implicit type conversion)
+>
+>>  CasADi::MX::MX(const Matrix< double > &x)
+>------------------------------------------------------------------------
+>
+>Create sparse matrix constant (also implicit type conversion)
+-}
+mx :: IO MX
+mx = casADi__MX__MX
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC" c_CasADi__MX__MX_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr MX')
+casADi__MX__MX'
+  :: Sparsity -> Int -> IO MX
+casADi__MX__MX' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__MX_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx' :: Sparsity -> Int -> IO MX
+mx' = casADi__MX__MX'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC" c_CasADi__MX__MX_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr MX')
+casADi__MX__MX''
+  :: Sparsity -> IO MX
+casADi__MX__MX'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__MX_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx'' :: Sparsity -> IO MX
+mx'' = casADi__MX__MX''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC
+  :: Ptr Sparsity' -> CDouble -> IO (Ptr MX')
+casADi__MX__MX'''
+  :: Sparsity -> Double -> IO MX
+casADi__MX__MX''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__MX_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx''' :: Sparsity -> Double -> IO MX
+mx''' = casADi__MX__MX'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr MX' -> IO (Ptr MX')
+casADi__MX__MX''''
+  :: Sparsity -> MX -> IO MX
+casADi__MX__MX'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MX__MX_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mx'''' :: Sparsity -> MX -> IO MX
+mx'''' = casADi__MX__MX''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC
+  :: CDouble -> IO (Ptr MX')
+casADi__MX__MX'''''
+  :: Double -> IO MX
+casADi__MX__MX''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx''''' :: Double -> IO MX
+mx''''' = casADi__MX__MX'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+casADi__MX__MX''''''
+  :: MX -> IO MX
+casADi__MX__MX'''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx'''''' :: MX -> IO MX
+mx'''''' = casADi__MX__MX''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CDouble) -> IO (Ptr MX')
+casADi__MX__MX'''''''
+  :: Vector Double -> IO MX
+casADi__MX__MX''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx''''''' :: Vector Double -> IO MX
+mx''''''' = casADi__MX__MX'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr MX')
+casADi__MX__MX''''''''
+  :: DMatrix -> IO MX
+casADi__MX__MX'''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MX__MX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mx'''''''' :: DMatrix -> IO MX
+mx'''''''' = casADi__MX__MX''''''''
 
diff --git a/Casadi/Wrappers/Classes/MXFunction.hs b/Casadi/Wrappers/Classes/MXFunction.hs
--- a/Casadi/Wrappers/Classes/MXFunction.hs
+++ b/Casadi/Wrappers/Classes/MXFunction.hs
@@ -11,14 +11,44 @@
          MXFunctionClass(..),
          mxFunction,
          mxFunction',
+         mxFunction'',
          mxFunction_checkNode,
          mxFunction_countNodes,
+         mxFunction_expand,
+         mxFunction_expand',
          mxFunction_generateLiftingFunctions,
          mxFunction_getAlgorithmSize,
          mxFunction_getFree,
          mxFunction_getWorkSize,
          mxFunction_grad,
+         mxFunction_grad',
+         mxFunction_grad'',
+         mxFunction_grad''',
+         mxFunction_grad'''',
+         mxFunction_grad''''',
+         mxFunction_grad'''''',
          mxFunction_jac,
+         mxFunction_jac',
+         mxFunction_jac'',
+         mxFunction_jac''',
+         mxFunction_jac'''',
+         mxFunction_jac''''',
+         mxFunction_jac'''''',
+         mxFunction_jac''''''',
+         mxFunction_jac'''''''',
+         mxFunction_jac''''''''',
+         mxFunction_jac'''''''''',
+         mxFunction_jac''''''''''',
+         mxFunction_jac'''''''''''',
+         mxFunction_jac''''''''''''',
+         mxFunction_jac'''''''''''''',
+         mxFunction_tang,
+         mxFunction_tang',
+         mxFunction_tang'',
+         mxFunction_tang''',
+         mxFunction_tang'''',
+         mxFunction_tang''''',
+         mxFunction_tang'''''',
        ) where
 
 
@@ -130,6 +160,236 @@
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC" c_CasADi__MXFunction__jac_TIC
+  :: Ptr MXFunction' -> CInt -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac'
+  :: MXFunction -> Int -> Int -> Bool -> IO MX
+casADi__MXFunction__jac' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MXFunction__jac_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac' :: MXFunctionClass a => a -> Int -> Int -> Bool -> IO MX
+mxFunction_jac' x = casADi__MXFunction__jac' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac''
+  :: MXFunction -> Int -> Int -> IO MX
+casADi__MXFunction__jac'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__jac_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'' :: MXFunctionClass a => a -> Int -> Int -> IO MX
+mxFunction_jac'' x = casADi__MXFunction__jac'' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac'''
+  :: MXFunction -> Int -> IO MX
+casADi__MXFunction__jac''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac''' :: MXFunctionClass a => a -> Int -> IO MX
+mxFunction_jac''' x = casADi__MXFunction__jac''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> IO (Ptr MX')
+casADi__MXFunction__jac''''
+  :: MXFunction -> IO MX
+casADi__MXFunction__jac'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'''' :: MXFunctionClass a => a -> IO MX
+mxFunction_jac'''' x = casADi__MXFunction__jac'''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac'''''
+  :: MXFunction -> String -> Int -> Bool -> Bool -> IO MX
+casADi__MXFunction__jac''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac''''' :: MXFunctionClass a => a -> String -> Int -> Bool -> Bool -> IO MX
+mxFunction_jac''''' x = casADi__MXFunction__jac''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac''''''
+  :: MXFunction -> String -> Int -> Bool -> IO MX
+casADi__MXFunction__jac'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'''''' :: MXFunctionClass a => a -> String -> Int -> Bool -> IO MX
+mxFunction_jac'''''' x = casADi__MXFunction__jac'''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac'''''''
+  :: MXFunction -> String -> Int -> IO MX
+casADi__MXFunction__jac''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac''''''' :: MXFunctionClass a => a -> String -> Int -> IO MX
+mxFunction_jac''''''' x = casADi__MXFunction__jac''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__jac''''''''
+  :: MXFunction -> String -> IO MX
+casADi__MXFunction__jac'''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'''''''' :: MXFunctionClass a => a -> String -> IO MX
+mxFunction_jac'''''''' x = casADi__MXFunction__jac'''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> Ptr StdString' -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac'''''''''
+  :: MXFunction -> Int -> String -> Bool -> Bool -> IO MX
+casADi__MXFunction__jac''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac''''''''' :: MXFunctionClass a => a -> Int -> String -> Bool -> Bool -> IO MX
+mxFunction_jac''''''''' x = casADi__MXFunction__jac''''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> Ptr StdString' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac''''''''''
+  :: MXFunction -> Int -> String -> Bool -> IO MX
+casADi__MXFunction__jac'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'''''''''' :: MXFunctionClass a => a -> Int -> String -> Bool -> IO MX
+mxFunction_jac'''''''''' x = casADi__MXFunction__jac'''''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__jac'''''''''''
+  :: MXFunction -> Int -> String -> IO MX
+casADi__MXFunction__jac''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac''''''''''' :: MXFunctionClass a => a -> Int -> String -> IO MX
+mxFunction_jac''''''''''' x = casADi__MXFunction__jac''''''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac''''''''''''
+  :: MXFunction -> String -> String -> Bool -> Bool -> IO MX
+casADi__MXFunction__jac'''''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'''''''''''' :: MXFunctionClass a => a -> String -> String -> Bool -> Bool -> IO MX
+mxFunction_jac'''''''''''' x = casADi__MXFunction__jac'''''''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> Ptr StdString' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__jac'''''''''''''
+  :: MXFunction -> String -> String -> Bool -> IO MX
+casADi__MXFunction__jac''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac''''''''''''' :: MXFunctionClass a => a -> String -> String -> Bool -> IO MX
+mxFunction_jac''''''''''''' x = casADi__MXFunction__jac''''''''''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__jac''''''''''''''
+  :: MXFunction -> String -> String -> IO MX
+casADi__MXFunction__jac'''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_jac'''''''''''''' :: MXFunctionClass a => a -> String -> String -> IO MX
+mxFunction_jac'''''''''''''' x = casADi__MXFunction__jac'''''''''''''' (castMXFunction x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__MXFunction__grad" c_CasADi__MXFunction__grad
   :: Ptr MXFunction' -> CInt -> CInt -> IO (Ptr MX')
 casADi__MXFunction__grad
@@ -149,6 +409,241 @@
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__grad_TIC" c_CasADi__MXFunction__grad_TIC
+  :: Ptr MXFunction' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__grad'
+  :: MXFunction -> Int -> IO MX
+casADi__MXFunction__grad' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__grad_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_grad' :: MXFunctionClass a => a -> Int -> IO MX
+mxFunction_grad' x = casADi__MXFunction__grad' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__grad_TIC_TIC" c_CasADi__MXFunction__grad_TIC_TIC
+  :: Ptr MXFunction' -> IO (Ptr MX')
+casADi__MXFunction__grad''
+  :: MXFunction -> IO MX
+casADi__MXFunction__grad'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MXFunction__grad_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_grad'' :: MXFunctionClass a => a -> IO MX
+mxFunction_grad'' x = casADi__MXFunction__grad'' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__grad_TIC_TIC_TIC" c_CasADi__MXFunction__grad_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__grad'''
+  :: MXFunction -> String -> Int -> IO MX
+casADi__MXFunction__grad''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__grad_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_grad''' :: MXFunctionClass a => a -> String -> Int -> IO MX
+mxFunction_grad''' x = casADi__MXFunction__grad''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__grad_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__grad_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__grad''''
+  :: MXFunction -> String -> IO MX
+casADi__MXFunction__grad'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__grad_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_grad'''' :: MXFunctionClass a => a -> String -> IO MX
+mxFunction_grad'''' x = casADi__MXFunction__grad'''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__grad_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__grad_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__grad'''''
+  :: MXFunction -> Int -> String -> IO MX
+casADi__MXFunction__grad''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__grad_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_grad''''' :: MXFunctionClass a => a -> Int -> String -> IO MX
+mxFunction_grad''''' x = casADi__MXFunction__grad''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__grad_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__grad_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__grad''''''
+  :: MXFunction -> String -> String -> IO MX
+casADi__MXFunction__grad'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__grad_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_grad'''''' :: MXFunctionClass a => a -> String -> String -> IO MX
+mxFunction_grad'''''' x = casADi__MXFunction__grad'''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang" c_CasADi__MXFunction__tang
+  :: Ptr MXFunction' -> CInt -> CInt -> IO (Ptr MX')
+casADi__MXFunction__tang
+  :: MXFunction -> Int -> Int -> IO MX
+casADi__MXFunction__tang x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__tang x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Tangent via source code transformation.
+-}
+mxFunction_tang :: MXFunctionClass a => a -> Int -> Int -> IO MX
+mxFunction_tang x = casADi__MXFunction__tang (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang_TIC" c_CasADi__MXFunction__tang_TIC
+  :: Ptr MXFunction' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__tang'
+  :: MXFunction -> Int -> IO MX
+casADi__MXFunction__tang' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__tang_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_tang' :: MXFunctionClass a => a -> Int -> IO MX
+mxFunction_tang' x = casADi__MXFunction__tang' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang_TIC_TIC" c_CasADi__MXFunction__tang_TIC_TIC
+  :: Ptr MXFunction' -> IO (Ptr MX')
+casADi__MXFunction__tang''
+  :: MXFunction -> IO MX
+casADi__MXFunction__tang'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MXFunction__tang_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_tang'' :: MXFunctionClass a => a -> IO MX
+mxFunction_tang'' x = casADi__MXFunction__tang'' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang_TIC_TIC_TIC" c_CasADi__MXFunction__tang_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> CInt -> IO (Ptr MX')
+casADi__MXFunction__tang'''
+  :: MXFunction -> String -> Int -> IO MX
+casADi__MXFunction__tang''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__tang_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_tang''' :: MXFunctionClass a => a -> String -> Int -> IO MX
+mxFunction_tang''' x = casADi__MXFunction__tang''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__tang_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__tang''''
+  :: MXFunction -> String -> IO MX
+casADi__MXFunction__tang'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__tang_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_tang'''' :: MXFunctionClass a => a -> String -> IO MX
+mxFunction_tang'''' x = casADi__MXFunction__tang'''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__tang_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> CInt -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__tang'''''
+  :: MXFunction -> Int -> String -> IO MX
+casADi__MXFunction__tang''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__tang_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_tang''''' :: MXFunctionClass a => a -> Int -> String -> IO MX
+mxFunction_tang''''' x = casADi__MXFunction__tang''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__tang_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__MXFunction__tang_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr MX')
+casADi__MXFunction__tang''''''
+  :: MXFunction -> String -> String -> IO MX
+casADi__MXFunction__tang'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__MXFunction__tang_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_tang'''''' :: MXFunctionClass a => a -> String -> String -> IO MX
+mxFunction_tang'''''' x = casADi__MXFunction__tang'''''' (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__expand" c_CasADi__MXFunction__expand
+  :: Ptr MXFunction' -> Ptr (CppVec (Ptr SX')) -> IO (Ptr SXFunction')
+casADi__MXFunction__expand
+  :: MXFunction -> Vector SX -> IO SXFunction
+casADi__MXFunction__expand x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__expand x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Expand the matrix valued graph into a scalar valued graph.
+-}
+mxFunction_expand :: MXFunctionClass a => a -> Vector SX -> IO SXFunction
+mxFunction_expand x = casADi__MXFunction__expand (castMXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__expand_TIC" c_CasADi__MXFunction__expand_TIC
+  :: Ptr MXFunction' -> IO (Ptr SXFunction')
+casADi__MXFunction__expand'
+  :: MXFunction -> IO SXFunction
+casADi__MXFunction__expand' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MXFunction__expand_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mxFunction_expand' :: MXFunctionClass a => a -> IO SXFunction
+mxFunction_expand' x = casADi__MXFunction__expand' (castMXFunction x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__MXFunction__getFree" c_CasADi__MXFunction__getFree
   :: Ptr MXFunction' -> IO (Ptr (CppVec (Ptr MX')))
 casADi__MXFunction__getFree
@@ -178,35 +673,19 @@
 
 -- classy wrapper
 {-|
->Extract the functions needed for the Lifted Newton method.
+>[INTERNAL]  Extract the functions needed for the Lifted Newton method.
 -}
 mxFunction_generateLiftingFunctions :: MXFunctionClass a => a -> MXFunction -> MXFunction -> IO ()
 mxFunction_generateLiftingFunctions x = casADi__MXFunction__generateLiftingFunctions (castMXFunction x)
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__MXFunction__MXFunction_TIC" c_CasADi__MXFunction__MXFunction_TIC
-  :: Ptr FX' -> IO (Ptr MXFunction')
-casADi__MXFunction__MXFunction'
-  :: FX -> IO MXFunction
-casADi__MXFunction__MXFunction' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__MXFunction__MXFunction_TIC x0' >>= wrapReturn
-
--- classy wrapper
-mxFunction' :: FX -> IO MXFunction
-mxFunction' = casADi__MXFunction__MXFunction'
-
-
--- direct wrapper
 foreign import ccall unsafe "CasADi__MXFunction__MXFunction" c_CasADi__MXFunction__MXFunction
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MXFunction')
+  :: IO (Ptr MXFunction')
 casADi__MXFunction__MXFunction
-  :: Vector MX -> Vector MX -> IO MXFunction
-casADi__MXFunction__MXFunction x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__MXFunction__MXFunction x0' x1' >>= wrapReturn
+  :: IO MXFunction
+casADi__MXFunction__MXFunction  =
+  c_CasADi__MXFunction__MXFunction  >>= wrapReturn
 
 -- classy wrapper
 {-|
@@ -215,24 +694,24 @@
 >
 >Default constructor.
 >
->>  CasADi::MXFunction::MXFunction(const FX &fx)
+>>  CasADi::MXFunction::MXFunction(const Function &function)
 >------------------------------------------------------------------------
 >
->Attempt to form an MXFunction out of an FX.
+>Attempt to form an MXFunction out of an Function.
 >
 >>  CasADi::MXFunction::MXFunction(const MX &input, const MX &output)
 >------------------------------------------------------------------------
->
+>[INTERNAL] 
 >Single input, single output.
 >
 >>  CasADi::MXFunction::MXFunction(const MX &input, const std::vector< MX > &output)
 >------------------------------------------------------------------------
->
+>[INTERNAL] 
 >Single input, multiple output.
 >
 >>  CasADi::MXFunction::MXFunction(const std::vector< MX > &input, const MX &output)
 >------------------------------------------------------------------------
->
+>[INTERNAL] 
 >Multiple input, single output.
 >
 >>  CasADi::MXFunction::MXFunction(const std::vector< MX > &input, const std::vector< MX > &output)
@@ -246,6 +725,35 @@
 >
 >Multiple input, multiple output.
 -}
-mxFunction :: Vector MX -> Vector MX -> IO MXFunction
+mxFunction :: IO MXFunction
 mxFunction = casADi__MXFunction__MXFunction
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__MXFunction_TIC" c_CasADi__MXFunction__MXFunction_TIC
+  :: Ptr Function' -> IO (Ptr MXFunction')
+casADi__MXFunction__MXFunction'
+  :: Function -> IO MXFunction
+casADi__MXFunction__MXFunction' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__MXFunction__MXFunction_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+mxFunction' :: Function -> IO MXFunction
+mxFunction' = casADi__MXFunction__MXFunction'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__MXFunction__MXFunction_TIC_TIC" c_CasADi__MXFunction__MXFunction_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MXFunction')
+casADi__MXFunction__MXFunction''
+  :: Vector MX -> Vector MX -> IO MXFunction
+casADi__MXFunction__MXFunction'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__MXFunction__MXFunction_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+mxFunction'' :: Vector MX -> Vector MX -> IO MXFunction
+mxFunction'' = casADi__MXFunction__MXFunction''
 
diff --git a/Casadi/Wrappers/Classes/NLPImplicitSolver.hs b/Casadi/Wrappers/Classes/NLPImplicitSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/NLPImplicitSolver.hs
@@ -0,0 +1,157 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.NLPImplicitSolver
+       (
+         NLPImplicitSolver,
+         NLPImplicitSolverClass(..),
+         nlpImplicitSolver,
+         nlpImplicitSolver',
+         nlpImplicitSolver'',
+         nlpImplicitSolver''',
+         nlpImplicitSolver_checkNode,
+         nlpImplicitSolver_creator,
+         nlpImplicitSolver_getNLPSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show NLPImplicitSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__checkNode" c_CasADi__NLPImplicitSolver__checkNode
+  :: Ptr NLPImplicitSolver' -> IO CInt
+casADi__NLPImplicitSolver__checkNode
+  :: NLPImplicitSolver -> IO Bool
+casADi__NLPImplicitSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPImplicitSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+nlpImplicitSolver_checkNode :: NLPImplicitSolverClass a => a -> IO Bool
+nlpImplicitSolver_checkNode x = casADi__NLPImplicitSolver__checkNode (castNLPImplicitSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__getNLPSolver" c_CasADi__NLPImplicitSolver__getNLPSolver
+  :: Ptr NLPImplicitSolver' -> IO (Ptr NLPSolver')
+casADi__NLPImplicitSolver__getNLPSolver
+  :: NLPImplicitSolver -> IO NLPSolver
+casADi__NLPImplicitSolver__getNLPSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPImplicitSolver__getNLPSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access NLP solver.
+-}
+nlpImplicitSolver_getNLPSolver :: NLPImplicitSolverClass a => a -> IO NLPSolver
+nlpImplicitSolver_getNLPSolver x = casADi__NLPImplicitSolver__getNLPSolver (castNLPImplicitSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__creator" c_CasADi__NLPImplicitSolver__creator
+  :: Ptr Function' -> Ptr Function' -> Ptr LinearSolver' -> IO (Ptr ImplicitFunction')
+casADi__NLPImplicitSolver__creator
+  :: Function -> Function -> LinearSolver -> IO ImplicitFunction
+casADi__NLPImplicitSolver__creator x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__NLPImplicitSolver__creator x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+nlpImplicitSolver_creator :: Function -> Function -> LinearSolver -> IO ImplicitFunction
+nlpImplicitSolver_creator = casADi__NLPImplicitSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__NLPImplicitSolver" c_CasADi__NLPImplicitSolver__NLPImplicitSolver
+  :: IO (Ptr NLPImplicitSolver')
+casADi__NLPImplicitSolver__NLPImplicitSolver
+  :: IO NLPImplicitSolver
+casADi__NLPImplicitSolver__NLPImplicitSolver  =
+  c_CasADi__NLPImplicitSolver__NLPImplicitSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::NLPImplicitSolver::NLPImplicitSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::NLPImplicitSolver::NLPImplicitSolver(const Function &f, const Function &jac=Function(), const LinearSolver &linsol=LinearSolver())
+>------------------------------------------------------------------------
+>
+>Create a new solver instance.
+-}
+nlpImplicitSolver :: IO NLPImplicitSolver
+nlpImplicitSolver = casADi__NLPImplicitSolver__NLPImplicitSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC" c_CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr LinearSolver' -> IO (Ptr NLPImplicitSolver')
+casADi__NLPImplicitSolver__NLPImplicitSolver'
+  :: Function -> Function -> LinearSolver -> IO NLPImplicitSolver
+casADi__NLPImplicitSolver__NLPImplicitSolver' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+nlpImplicitSolver' :: Function -> Function -> LinearSolver -> IO NLPImplicitSolver
+nlpImplicitSolver' = casADi__NLPImplicitSolver__NLPImplicitSolver'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC_TIC" c_CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr NLPImplicitSolver')
+casADi__NLPImplicitSolver__NLPImplicitSolver''
+  :: Function -> Function -> IO NLPImplicitSolver
+casADi__NLPImplicitSolver__NLPImplicitSolver'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+nlpImplicitSolver'' :: Function -> Function -> IO NLPImplicitSolver
+nlpImplicitSolver'' = casADi__NLPImplicitSolver__NLPImplicitSolver''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC_TIC_TIC" c_CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr NLPImplicitSolver')
+casADi__NLPImplicitSolver__NLPImplicitSolver'''
+  :: Function -> IO NLPImplicitSolver
+casADi__NLPImplicitSolver__NLPImplicitSolver''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPImplicitSolver__NLPImplicitSolver_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+nlpImplicitSolver''' :: Function -> IO NLPImplicitSolver
+nlpImplicitSolver''' = casADi__NLPImplicitSolver__NLPImplicitSolver'''
+
diff --git a/Casadi/Wrappers/Classes/NLPQPSolver.hs b/Casadi/Wrappers/Classes/NLPQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/NLPQPSolver.hs
@@ -0,0 +1,121 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.NLPQPSolver
+       (
+         NLPQPSolver,
+         NLPQPSolverClass(..),
+         nlpqpSolver,
+         nlpqpSolver',
+         nlpqpSolver_checkNode,
+         nlpqpSolver_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show NLPQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPQPSolver__checkNode" c_CasADi__NLPQPSolver__checkNode
+  :: Ptr NLPQPSolver' -> IO CInt
+casADi__NLPQPSolver__checkNode
+  :: NLPQPSolver -> IO Bool
+casADi__NLPQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  bool CasADi::NLPQPSolver::checkNode() const 
+>------------------------------------------------------------------------
+>
+>Check if the node is pointing to the right type of object.
+>
+>>  virtual bool CasADi::NLPQPSolver::checkNode() const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Check if the node is pointing to the right type of object.
+-}
+nlpqpSolver_checkNode :: NLPQPSolverClass a => a -> IO Bool
+nlpqpSolver_checkNode x = casADi__NLPQPSolver__checkNode (castNLPQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPQPSolver__creator" c_CasADi__NLPQPSolver__creator
+  :: Ptr QPStructure' -> IO (Ptr QPSolver')
+casADi__NLPQPSolver__creator
+  :: QPStructure -> IO QPSolver
+casADi__NLPQPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPQPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+nlpqpSolver_creator :: QPStructure -> IO QPSolver
+nlpqpSolver_creator = casADi__NLPQPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPQPSolver__NLPQPSolver" c_CasADi__NLPQPSolver__NLPQPSolver
+  :: IO (Ptr NLPQPSolver')
+casADi__NLPQPSolver__NLPQPSolver
+  :: IO NLPQPSolver
+casADi__NLPQPSolver__NLPQPSolver  =
+  c_CasADi__NLPQPSolver__NLPQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::NLPQPSolver::NLPQPSolver()
+>
+>>  CasADi::NLPQPSolver::NLPQPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::NLPQPSolver::NLPQPSolver(const QPStructure &st)
+>
+>>  CasADi::NLPQPSolver::NLPQPSolver(const QPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+nlpqpSolver :: IO NLPQPSolver
+nlpqpSolver = casADi__NLPQPSolver__NLPQPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPQPSolver__NLPQPSolver_TIC" c_CasADi__NLPQPSolver__NLPQPSolver_TIC
+  :: Ptr QPStructure' -> IO (Ptr NLPQPSolver')
+casADi__NLPQPSolver__NLPQPSolver'
+  :: QPStructure -> IO NLPQPSolver
+casADi__NLPQPSolver__NLPQPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPQPSolver__NLPQPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+nlpqpSolver' :: QPStructure -> IO NLPQPSolver
+nlpqpSolver' = casADi__NLPQPSolver__NLPQPSolver'
+
diff --git a/Casadi/Wrappers/Classes/NLPSolver.hs b/Casadi/Wrappers/Classes/NLPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/NLPSolver.hs
@@ -0,0 +1,327 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.NLPSolver
+       (
+         NLPSolver,
+         NLPSolverClass(..),
+         nlpSolver,
+         nlpSolver_checkNode,
+         nlpSolver_getReportConstraints,
+         nlpSolver_gradF,
+         nlpSolver_hessLag,
+         nlpSolver_jacG,
+         nlpSolver_joinFG,
+         nlpSolver_nlp,
+         nlpSolver_reportConstraints',
+         nlpSolver_setQPOptions,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show NLPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__checkNode" c_CasADi__NLPSolver__checkNode
+  :: Ptr NLPSolver' -> IO CInt
+casADi__NLPSolver__checkNode
+  :: NLPSolver -> IO Bool
+casADi__NLPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+nlpSolver_checkNode :: NLPSolverClass a => a -> IO Bool
+nlpSolver_checkNode x = casADi__NLPSolver__checkNode (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__reportConstraints_TIC" c_CasADi__NLPSolver__reportConstraints_TIC
+  :: Ptr NLPSolver' -> IO ()
+casADi__NLPSolver__reportConstraints'
+  :: NLPSolver -> IO ()
+casADi__NLPSolver__reportConstraints' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__reportConstraints_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+nlpSolver_reportConstraints' :: NLPSolverClass a => a -> IO ()
+nlpSolver_reportConstraints' x = casADi__NLPSolver__reportConstraints' (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__getReportConstraints" c_CasADi__NLPSolver__getReportConstraints
+  :: Ptr NLPSolver' -> IO (Ptr StdString')
+casADi__NLPSolver__getReportConstraints
+  :: NLPSolver -> IO String
+casADi__NLPSolver__getReportConstraints x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__getReportConstraints x0' >>= wrapReturn
+
+-- classy wrapper
+nlpSolver_getReportConstraints :: NLPSolverClass a => a -> IO String
+nlpSolver_getReportConstraints x = casADi__NLPSolver__getReportConstraints (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__setQPOptions" c_CasADi__NLPSolver__setQPOptions
+  :: Ptr NLPSolver' -> IO ()
+casADi__NLPSolver__setQPOptions
+  :: NLPSolver -> IO ()
+casADi__NLPSolver__setQPOptions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__setQPOptions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set options that make the NLP solver more suitable for solving QPs.
+-}
+nlpSolver_setQPOptions :: NLPSolverClass a => a -> IO ()
+nlpSolver_setQPOptions x = casADi__NLPSolver__setQPOptions (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__nlp" c_CasADi__NLPSolver__nlp
+  :: Ptr NLPSolver' -> IO (Ptr Function')
+casADi__NLPSolver__nlp
+  :: NLPSolver -> IO Function
+casADi__NLPSolver__nlp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__nlp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the NLP.
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+-}
+nlpSolver_nlp :: NLPSolverClass a => a -> IO Function
+nlpSolver_nlp x = casADi__NLPSolver__nlp (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__gradF" c_CasADi__NLPSolver__gradF
+  :: Ptr NLPSolver' -> IO (Ptr Function')
+casADi__NLPSolver__gradF
+  :: NLPSolver -> IO Function
+casADi__NLPSolver__gradF x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__gradF x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the objective gradient function>Input scheme: CasADi::GradFInput
+>(GRADF_NUM_IN = 3) [gradFIn] +-----------+-------+---------------------+ |
+>Full name | Short |     Description     |
+>+===========+=======+=====================+ | GRADF_X   | x     | Decision
+>variable . | +-----------+-------+---------------------+ | GRADF_P   | p
+>| Fixed parameter .   | +-----------+-------+---------------------+
+-}
+nlpSolver_gradF :: NLPSolverClass a => a -> IO Function
+nlpSolver_gradF x = casADi__NLPSolver__gradF (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__jacG" c_CasADi__NLPSolver__jacG
+  :: Ptr NLPSolver' -> IO (Ptr Function')
+casADi__NLPSolver__jacG
+  :: NLPSolver -> IO Function
+casADi__NLPSolver__jacG x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__jacG x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the Jacobian of the constraint function.
+>
+>>Input scheme: CasADi::HessLagInput (HESSLAG_NUM_IN = 5) [hessLagIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| HESSLAG_X              | x                      | Decision variable .    |
+>+------------------------+------------------------+------------------------+
+>| HESSLAG_P              | p                      | Fixed parameter .      |
+>+------------------------+------------------------+------------------------+
+>| HESSLAG_LAM_F          | lam_f                  | Multiplier for f. Just |
+>|                        |                        | a scalar factor for    |
+>|                        |                        | the objective that the |
+>|                        |                        | NLP solver might use   |
+>|                        |                        | to scale the           |
+>|                        |                        | objective. .           |
+>+------------------------+------------------------+------------------------+
+>| HESSLAG_LAM_G          | lam_g                  | Multiplier for g .     |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::HessLagOutput (HESSLAG_NUM_OUT = 6) [hessLagOut]
+>+----------------+--------+------------------------------------------------+
+>|   Full name    | Short  |                  Description                   |
+>+================+========+================================================+
+>| HESSLAG_HESS   | hess   | Hessian of the Lagrangian .                    |
+>+----------------+--------+------------------------------------------------+
+>| HESSLAG_F      | f      | Objective function .                           |
+>+----------------+--------+------------------------------------------------+
+>| HESSLAG_G      | g      | Constraint function .                          |
+>+----------------+--------+------------------------------------------------+
+>| HESSLAG_GRAD_X | grad_x | Gradient of the Lagrangian with respect to x . |
+>+----------------+--------+------------------------------------------------+
+>| HESSLAG_GRAD_P | grad_p | Gradient of the Lagrangian with respect to p . |
+>+----------------+--------+------------------------------------------------+
+-}
+nlpSolver_jacG :: NLPSolverClass a => a -> IO Function
+nlpSolver_jacG x = casADi__NLPSolver__jacG (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__hessLag" c_CasADi__NLPSolver__hessLag
+  :: Ptr NLPSolver' -> IO (Ptr Function')
+casADi__NLPSolver__hessLag
+  :: NLPSolver -> IO Function
+casADi__NLPSolver__hessLag x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NLPSolver__hessLag x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access the Hessian of the Lagrangian function.
+>
+>>Input scheme: CasADi::JacGInput (JACG_NUM_IN = 3) [jacGIn]
+>+-----------+-------+---------------------+
+>| Full name | Short |     Description     |
+>+===========+=======+=====================+
+>| JACG_X    | x     | Decision variable . |
+>+-----------+-------+---------------------+
+>| JACG_P    | p     | Fixed parameter .   |
+>+-----------+-------+---------------------+
+>
+>>Output scheme: CasADi::JacGOutput (JACG_NUM_OUT = 4) [jacGOut]
+>+-----------+-------+-------------------------------+
+>| Full name | Short |          Description          |
+>+===========+=======+===============================+
+>| JACG_JAC  | jac   | Jacobian of the constraints . |
+>+-----------+-------+-------------------------------+
+>| JACG_F    | f     | Objective function .          |
+>+-----------+-------+-------------------------------+
+>| JACG_G    | g     | Constraint function .         |
+>+-----------+-------+-------------------------------+
+-}
+nlpSolver_hessLag :: NLPSolverClass a => a -> IO Function
+nlpSolver_hessLag x = casADi__NLPSolver__hessLag (castNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__joinFG" c_CasADi__NLPSolver__joinFG
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr Function')
+casADi__NLPSolver__joinFG
+  :: Function -> Function -> IO Function
+casADi__NLPSolver__joinFG x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__NLPSolver__joinFG x0' x1' >>= wrapReturn
+
+-- classy wrapper
+nlpSolver_joinFG :: Function -> Function -> IO Function
+nlpSolver_joinFG = casADi__NLPSolver__joinFG
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NLPSolver__NLPSolver" c_CasADi__NLPSolver__NLPSolver
+  :: IO (Ptr NLPSolver')
+casADi__NLPSolver__NLPSolver
+  :: IO NLPSolver
+casADi__NLPSolver__NLPSolver  =
+  c_CasADi__NLPSolver__NLPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+nlpSolver :: IO NLPSolver
+nlpSolver = casADi__NLPSolver__NLPSolver
+
diff --git a/Casadi/Wrappers/Classes/NewtonImplicitSolver.hs b/Casadi/Wrappers/Classes/NewtonImplicitSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/NewtonImplicitSolver.hs
@@ -0,0 +1,139 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.NewtonImplicitSolver
+       (
+         NewtonImplicitSolver,
+         NewtonImplicitSolverClass(..),
+         newtonImplicitSolver,
+         newtonImplicitSolver',
+         newtonImplicitSolver'',
+         newtonImplicitSolver''',
+         newtonImplicitSolver_checkNode,
+         newtonImplicitSolver_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show NewtonImplicitSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NewtonImplicitSolver__checkNode" c_CasADi__NewtonImplicitSolver__checkNode
+  :: Ptr NewtonImplicitSolver' -> IO CInt
+casADi__NewtonImplicitSolver__checkNode
+  :: NewtonImplicitSolver -> IO Bool
+casADi__NewtonImplicitSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NewtonImplicitSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+newtonImplicitSolver_checkNode :: NewtonImplicitSolverClass a => a -> IO Bool
+newtonImplicitSolver_checkNode x = casADi__NewtonImplicitSolver__checkNode (castNewtonImplicitSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NewtonImplicitSolver__creator" c_CasADi__NewtonImplicitSolver__creator
+  :: Ptr Function' -> Ptr Function' -> Ptr LinearSolver' -> IO (Ptr ImplicitFunction')
+casADi__NewtonImplicitSolver__creator
+  :: Function -> Function -> LinearSolver -> IO ImplicitFunction
+casADi__NewtonImplicitSolver__creator x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__NewtonImplicitSolver__creator x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+newtonImplicitSolver_creator :: Function -> Function -> LinearSolver -> IO ImplicitFunction
+newtonImplicitSolver_creator = casADi__NewtonImplicitSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NewtonImplicitSolver__NewtonImplicitSolver" c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver
+  :: IO (Ptr NewtonImplicitSolver')
+casADi__NewtonImplicitSolver__NewtonImplicitSolver
+  :: IO NewtonImplicitSolver
+casADi__NewtonImplicitSolver__NewtonImplicitSolver  =
+  c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::NewtonImplicitSolver::NewtonImplicitSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::NewtonImplicitSolver::NewtonImplicitSolver(const Function &f, const Function &jac=Function(), const LinearSolver &linsol=LinearSolver())
+>------------------------------------------------------------------------
+>
+>Create a solver instance.
+-}
+newtonImplicitSolver :: IO NewtonImplicitSolver
+newtonImplicitSolver = casADi__NewtonImplicitSolver__NewtonImplicitSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC" c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC
+  :: Ptr Function' -> Ptr Function' -> Ptr LinearSolver' -> IO (Ptr NewtonImplicitSolver')
+casADi__NewtonImplicitSolver__NewtonImplicitSolver'
+  :: Function -> Function -> LinearSolver -> IO NewtonImplicitSolver
+casADi__NewtonImplicitSolver__NewtonImplicitSolver' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+newtonImplicitSolver' :: Function -> Function -> LinearSolver -> IO NewtonImplicitSolver
+newtonImplicitSolver' = casADi__NewtonImplicitSolver__NewtonImplicitSolver'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC_TIC" c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr NewtonImplicitSolver')
+casADi__NewtonImplicitSolver__NewtonImplicitSolver''
+  :: Function -> Function -> IO NewtonImplicitSolver
+casADi__NewtonImplicitSolver__NewtonImplicitSolver'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+newtonImplicitSolver'' :: Function -> Function -> IO NewtonImplicitSolver
+newtonImplicitSolver'' = casADi__NewtonImplicitSolver__NewtonImplicitSolver''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC_TIC_TIC" c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr NewtonImplicitSolver')
+casADi__NewtonImplicitSolver__NewtonImplicitSolver'''
+  :: Function -> IO NewtonImplicitSolver
+casADi__NewtonImplicitSolver__NewtonImplicitSolver''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__NewtonImplicitSolver__NewtonImplicitSolver_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+newtonImplicitSolver''' :: Function -> IO NewtonImplicitSolver
+newtonImplicitSolver''' = casADi__NewtonImplicitSolver__NewtonImplicitSolver'''
+
diff --git a/Casadi/Wrappers/Classes/Nullspace.hs b/Casadi/Wrappers/Classes/Nullspace.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Nullspace.hs
@@ -0,0 +1,66 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Nullspace
+       (
+         Nullspace,
+         NullspaceClass(..),
+         nullspace,
+         nullspace_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Nullspace where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Nullspace__checkNode" c_CasADi__Nullspace__checkNode
+  :: Ptr Nullspace' -> IO CInt
+casADi__Nullspace__checkNode
+  :: Nullspace -> IO Bool
+casADi__Nullspace__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Nullspace__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+nullspace_checkNode :: NullspaceClass a => a -> IO Bool
+nullspace_checkNode x = casADi__Nullspace__checkNode (castNullspace x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Nullspace__Nullspace" c_CasADi__Nullspace__Nullspace
+  :: IO (Ptr Nullspace')
+casADi__Nullspace__Nullspace
+  :: IO Nullspace
+casADi__Nullspace__Nullspace  =
+  c_CasADi__Nullspace__Nullspace  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+nullspace :: IO Nullspace
+nullspace = casADi__Nullspace__Nullspace
+
diff --git a/Casadi/Wrappers/Classes/OCPSolver.hs b/Casadi/Wrappers/Classes/OCPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/OCPSolver.hs
@@ -0,0 +1,108 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.OCPSolver
+       (
+         OCPSolver,
+         OCPSolverClass(..),
+         ocpSolver,
+         ocpSolver_getCfcn,
+         ocpSolver_getFfcn,
+         ocpSolver_getMfcn,
+         ocpSolver_getRfcn,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show OCPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OCPSolver__getFfcn" c_CasADi__OCPSolver__getFfcn
+  :: Ptr OCPSolver' -> IO (Ptr Function')
+casADi__OCPSolver__getFfcn
+  :: OCPSolver -> IO Function
+casADi__OCPSolver__getFfcn x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__OCPSolver__getFfcn x0' >>= wrapReturn
+
+-- classy wrapper
+ocpSolver_getFfcn :: OCPSolverClass a => a -> IO Function
+ocpSolver_getFfcn x = casADi__OCPSolver__getFfcn (castOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OCPSolver__getMfcn" c_CasADi__OCPSolver__getMfcn
+  :: Ptr OCPSolver' -> IO (Ptr Function')
+casADi__OCPSolver__getMfcn
+  :: OCPSolver -> IO Function
+casADi__OCPSolver__getMfcn x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__OCPSolver__getMfcn x0' >>= wrapReturn
+
+-- classy wrapper
+ocpSolver_getMfcn :: OCPSolverClass a => a -> IO Function
+ocpSolver_getMfcn x = casADi__OCPSolver__getMfcn (castOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OCPSolver__getCfcn" c_CasADi__OCPSolver__getCfcn
+  :: Ptr OCPSolver' -> IO (Ptr Function')
+casADi__OCPSolver__getCfcn
+  :: OCPSolver -> IO Function
+casADi__OCPSolver__getCfcn x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__OCPSolver__getCfcn x0' >>= wrapReturn
+
+-- classy wrapper
+ocpSolver_getCfcn :: OCPSolverClass a => a -> IO Function
+ocpSolver_getCfcn x = casADi__OCPSolver__getCfcn (castOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OCPSolver__getRfcn" c_CasADi__OCPSolver__getRfcn
+  :: Ptr OCPSolver' -> IO (Ptr Function')
+casADi__OCPSolver__getRfcn
+  :: OCPSolver -> IO Function
+casADi__OCPSolver__getRfcn x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__OCPSolver__getRfcn x0' >>= wrapReturn
+
+-- classy wrapper
+ocpSolver_getRfcn :: OCPSolverClass a => a -> IO Function
+ocpSolver_getRfcn x = casADi__OCPSolver__getRfcn (castOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OCPSolver__OCPSolver" c_CasADi__OCPSolver__OCPSolver
+  :: IO (Ptr OCPSolver')
+casADi__OCPSolver__OCPSolver
+  :: IO OCPSolver
+casADi__OCPSolver__OCPSolver  =
+  c_CasADi__OCPSolver__OCPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+ocpSolver :: IO OCPSolver
+ocpSolver = casADi__OCPSolver__OCPSolver
+
diff --git a/Casadi/Wrappers/Classes/OldCollocationIntegrator.hs b/Casadi/Wrappers/Classes/OldCollocationIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/OldCollocationIntegrator.hs
@@ -0,0 +1,185 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.OldCollocationIntegrator
+       (
+         OldCollocationIntegrator,
+         OldCollocationIntegratorClass(..),
+         oldCollocationIntegrator,
+         oldCollocationIntegrator',
+         oldCollocationIntegrator'',
+         oldCollocationIntegrator_checkNode,
+         oldCollocationIntegrator_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show OldCollocationIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OldCollocationIntegrator__checkNode" c_CasADi__OldCollocationIntegrator__checkNode
+  :: Ptr OldCollocationIntegrator' -> IO CInt
+casADi__OldCollocationIntegrator__checkNode
+  :: OldCollocationIntegrator -> IO Bool
+casADi__OldCollocationIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__OldCollocationIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+oldCollocationIntegrator_checkNode :: OldCollocationIntegratorClass a => a -> IO Bool
+oldCollocationIntegrator_checkNode x = casADi__OldCollocationIntegrator__checkNode (castOldCollocationIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OldCollocationIntegrator__creator" c_CasADi__OldCollocationIntegrator__creator
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr Integrator')
+casADi__OldCollocationIntegrator__creator
+  :: Function -> Function -> IO Integrator
+casADi__OldCollocationIntegrator__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__OldCollocationIntegrator__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+oldCollocationIntegrator_creator :: Function -> Function -> IO Integrator
+oldCollocationIntegrator_creator = casADi__OldCollocationIntegrator__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OldCollocationIntegrator__OldCollocationIntegrator" c_CasADi__OldCollocationIntegrator__OldCollocationIntegrator
+  :: IO (Ptr OldCollocationIntegrator')
+casADi__OldCollocationIntegrator__OldCollocationIntegrator
+  :: IO OldCollocationIntegrator
+casADi__OldCollocationIntegrator__OldCollocationIntegrator  =
+  c_CasADi__OldCollocationIntegrator__OldCollocationIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::OldCollocationIntegrator::OldCollocationIntegrator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::OldCollocationIntegrator::OldCollocationIntegrator(const Function &f, const Function &g=Function())
+>------------------------------------------------------------------------
+>
+>Create an integrator for explicit ODEs.
+>
+>Parameters:
+>-----------
+>
+>f:  dynamical system
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>g:  backwards system
+>
+>>Input scheme: CasADi::RDAEInput (RDAE_NUM_IN = 8) [rdaeIn]
+>+-----------+-------+-------------------------------+
+>| Full name | Short |          Description          |
+>+===========+=======+===============================+
+>| RDAE_RX   | rx    | Backward differential state . |
+>+-----------+-------+-------------------------------+
+>| RDAE_RZ   | rz    | Backward algebraic state .    |
+>+-----------+-------+-------------------------------+
+>| RDAE_RP   | rp    | Backward parameter vector .   |
+>+-----------+-------+-------------------------------+
+>| RDAE_X    | x     | Forward differential state .  |
+>+-----------+-------+-------------------------------+
+>| RDAE_Z    | z     | Forward algebraic state .     |
+>+-----------+-------+-------------------------------+
+>| RDAE_P    | p     | Parameter vector .            |
+>+-----------+-------+-------------------------------+
+>| RDAE_T    | t     | Explicit time dependence .    |
+>+-----------+-------+-------------------------------+
+>
+>>Output scheme: CasADi::RDAEOutput (RDAE_NUM_OUT = 4) [rdaeOut]
+>+-----------+-------+-------------------------------------------+
+>| Full name | Short |                Description                |
+>+===========+=======+===========================================+
+>| RDAE_ODE  | ode   | Right hand side of ODE. .                 |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_ALG  | alg   | Right hand side of algebraic equations. . |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_QUAD | quad  | Right hand side of quadratures. .         |
+>+-----------+-------+-------------------------------------------+
+-}
+oldCollocationIntegrator :: IO OldCollocationIntegrator
+oldCollocationIntegrator = casADi__OldCollocationIntegrator__OldCollocationIntegrator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OldCollocationIntegrator__OldCollocationIntegrator_TIC" c_CasADi__OldCollocationIntegrator__OldCollocationIntegrator_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr OldCollocationIntegrator')
+casADi__OldCollocationIntegrator__OldCollocationIntegrator'
+  :: Function -> Function -> IO OldCollocationIntegrator
+casADi__OldCollocationIntegrator__OldCollocationIntegrator' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__OldCollocationIntegrator__OldCollocationIntegrator_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+oldCollocationIntegrator' :: Function -> Function -> IO OldCollocationIntegrator
+oldCollocationIntegrator' = casADi__OldCollocationIntegrator__OldCollocationIntegrator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__OldCollocationIntegrator__OldCollocationIntegrator_TIC_TIC" c_CasADi__OldCollocationIntegrator__OldCollocationIntegrator_TIC_TIC
+  :: Ptr Function' -> IO (Ptr OldCollocationIntegrator')
+casADi__OldCollocationIntegrator__OldCollocationIntegrator''
+  :: Function -> IO OldCollocationIntegrator
+casADi__OldCollocationIntegrator__OldCollocationIntegrator'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__OldCollocationIntegrator__OldCollocationIntegrator_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+oldCollocationIntegrator'' :: Function -> IO OldCollocationIntegrator
+oldCollocationIntegrator'' = casADi__OldCollocationIntegrator__OldCollocationIntegrator''
+
diff --git a/Casadi/Wrappers/Classes/OptionsFunctionality.hs b/Casadi/Wrappers/Classes/OptionsFunctionality.hs
--- a/Casadi/Wrappers/Classes/OptionsFunctionality.hs
+++ b/Casadi/Wrappers/Classes/OptionsFunctionality.hs
@@ -197,7 +197,8 @@
 
 -- classy wrapper
 {-|
->Assert that the node is pointing to the right type of object.
+>[INTERNAL]
+>Assert that the node is pointing to the right type of object
 -}
 optionsFunctionality_checkNode :: OptionsFunctionalityClass a => a -> IO Bool
 optionsFunctionality_checkNode x = casADi__OptionsFunctionality__checkNode (castOptionsFunctionality x)
@@ -214,7 +215,9 @@
 
 -- classy wrapper
 {-|
->Get a list of all option names.
+>INTERNAL.
+>
+>Get a list of all option names
 -}
 optionsFunctionality_getOptionNames :: OptionsFunctionalityClass a => a -> IO (Vector String)
 optionsFunctionality_getOptionNames x = casADi__OptionsFunctionality__getOptionNames (castOptionsFunctionality x)
@@ -304,7 +307,7 @@
 
 -- classy wrapper
 {-|
->Get the index into allowed options of a certain option.
+>[INTERNAL]  Get the index into allowed options of a certain option.
 -}
 optionsFunctionality_getOptionAllowedIndex :: OptionsFunctionalityClass a => a -> String -> IO Int
 optionsFunctionality_getOptionAllowedIndex x = casADi__OptionsFunctionality__getOptionAllowedIndex (castOptionsFunctionality x)
@@ -323,7 +326,8 @@
 
 -- classy wrapper
 {-|
->Set a certain option by giving its index into the allowed values.
+>[INTERNAL]  Set a certain option by giving its index into the allowed
+>values.
 -}
 optionsFunctionality_setOptionByAllowedIndex :: OptionsFunctionalityClass a => a -> String -> Int -> IO ()
 optionsFunctionality_setOptionByAllowedIndex x = casADi__OptionsFunctionality__setOptionByAllowedIndex (castOptionsFunctionality x)
@@ -341,7 +345,7 @@
 
 -- classy wrapper
 {-|
->Get the enum value corresponding to th certain option.
+>[INTERNAL]  Get the enum value corresponding to th certain option.
 -}
 optionsFunctionality_getOptionEnumValue :: OptionsFunctionalityClass a => a -> String -> IO Int
 optionsFunctionality_getOptionEnumValue x = casADi__OptionsFunctionality__getOptionEnumValue (castOptionsFunctionality x)
@@ -360,7 +364,7 @@
 
 -- classy wrapper
 {-|
->Set a certain option by giving an enum value.
+>[INTERNAL]  Set a certain option by giving an enum value.
 -}
 optionsFunctionality_setOptionByEnumValue :: OptionsFunctionalityClass a => a -> String -> Int -> IO ()
 optionsFunctionality_setOptionByEnumValue x = casADi__OptionsFunctionality__setOptionByEnumValue (castOptionsFunctionality x)
@@ -378,7 +382,9 @@
 
 -- classy wrapper
 {-|
->Get the default of a certain option.
+>INTERNAL.
+>
+>Get the default of a certain option
 -}
 optionsFunctionality_getOptionDefault :: OptionsFunctionalityClass a => a -> String -> IO GenericType
 optionsFunctionality_getOptionDefault x = casADi__OptionsFunctionality__getOptionDefault (castOptionsFunctionality x)
diff --git a/Casadi/Wrappers/Classes/Parallelizer.hs b/Casadi/Wrappers/Classes/Parallelizer.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Parallelizer.hs
@@ -0,0 +1,71 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Parallelizer
+       (
+         Parallelizer,
+         ParallelizerClass(..),
+         parallelizer,
+         parallelizer',
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Parallelizer where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Parallelizer__Parallelizer" c_CasADi__Parallelizer__Parallelizer
+  :: IO (Ptr Parallelizer')
+casADi__Parallelizer__Parallelizer
+  :: IO Parallelizer
+casADi__Parallelizer__Parallelizer  =
+  c_CasADi__Parallelizer__Parallelizer  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Parallelizer::Parallelizer()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::Parallelizer::Parallelizer(const std::vector< Function > &funcs)
+>------------------------------------------------------------------------
+>
+>Create a Parallelizer.
+-}
+parallelizer :: IO Parallelizer
+parallelizer = casADi__Parallelizer__Parallelizer
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Parallelizer__Parallelizer_TIC" c_CasADi__Parallelizer__Parallelizer_TIC
+  :: Ptr (CppVec (Ptr Function')) -> IO (Ptr Parallelizer')
+casADi__Parallelizer__Parallelizer'
+  :: Vector Function -> IO Parallelizer
+casADi__Parallelizer__Parallelizer' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Parallelizer__Parallelizer_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+parallelizer' :: Vector Function -> IO Parallelizer
+parallelizer' = casADi__Parallelizer__Parallelizer'
+
diff --git a/Casadi/Wrappers/Classes/QCQPQPSolver.hs b/Casadi/Wrappers/Classes/QCQPQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QCQPQPSolver.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QCQPQPSolver
+       (
+         QCQPQPSolver,
+         QCQPQPSolverClass(..),
+         qcqpqpSolver,
+         qcqpqpSolver',
+         qcqpqpSolver_checkNode,
+         qcqpqpSolver_creator,
+         qcqpqpSolver_getSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QCQPQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPQPSolver__checkNode" c_CasADi__QCQPQPSolver__checkNode
+  :: Ptr QCQPQPSolver' -> IO CInt
+casADi__QCQPQPSolver__checkNode
+  :: QCQPQPSolver -> IO Bool
+casADi__QCQPQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+qcqpqpSolver_checkNode :: QCQPQPSolverClass a => a -> IO Bool
+qcqpqpSolver_checkNode x = casADi__QCQPQPSolver__checkNode (castQCQPQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPQPSolver__creator" c_CasADi__QCQPQPSolver__creator
+  :: Ptr QPStructure' -> IO (Ptr QPSolver')
+casADi__QCQPQPSolver__creator
+  :: QPStructure -> IO QPSolver
+casADi__QCQPQPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPQPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+qcqpqpSolver_creator :: QPStructure -> IO QPSolver
+qcqpqpSolver_creator = casADi__QCQPQPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPQPSolver__getSolver" c_CasADi__QCQPQPSolver__getSolver
+  :: Ptr QCQPQPSolver' -> IO (Ptr QCQPSolver')
+casADi__QCQPQPSolver__getSolver
+  :: QCQPQPSolver -> IO QCQPSolver
+casADi__QCQPQPSolver__getSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPQPSolver__getSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access underlying QCQP solver.
+-}
+qcqpqpSolver_getSolver :: QCQPQPSolverClass a => a -> IO QCQPSolver
+qcqpqpSolver_getSolver x = casADi__QCQPQPSolver__getSolver (castQCQPQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPQPSolver__QCQPQPSolver" c_CasADi__QCQPQPSolver__QCQPQPSolver
+  :: IO (Ptr QCQPQPSolver')
+casADi__QCQPQPSolver__QCQPQPSolver
+  :: IO QCQPQPSolver
+casADi__QCQPQPSolver__QCQPQPSolver  =
+  c_CasADi__QCQPQPSolver__QCQPQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::QCQPQPSolver::QCQPQPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::QCQPQPSolver::QCQPQPSolver(const QPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+qcqpqpSolver :: IO QCQPQPSolver
+qcqpqpSolver = casADi__QCQPQPSolver__QCQPQPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPQPSolver__QCQPQPSolver_TIC" c_CasADi__QCQPQPSolver__QCQPQPSolver_TIC
+  :: Ptr QPStructure' -> IO (Ptr QCQPQPSolver')
+casADi__QCQPQPSolver__QCQPQPSolver'
+  :: QPStructure -> IO QCQPQPSolver
+casADi__QCQPQPSolver__QCQPQPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPQPSolver__QCQPQPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+qcqpqpSolver' :: QPStructure -> IO QCQPQPSolver
+qcqpqpSolver' = casADi__QCQPQPSolver__QCQPQPSolver'
+
diff --git a/Casadi/Wrappers/Classes/QCQPSolver.hs b/Casadi/Wrappers/Classes/QCQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QCQPSolver.hs
@@ -0,0 +1,84 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QCQPSolver
+       (
+         QCQPSolver,
+         QCQPSolverClass(..),
+         qcqpSolver,
+         qcqpSolver_checkNode,
+         qcqpSolver_setQPOptions,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QCQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPSolver__checkNode" c_CasADi__QCQPSolver__checkNode
+  :: Ptr QCQPSolver' -> IO CInt
+casADi__QCQPSolver__checkNode
+  :: QCQPSolver -> IO Bool
+casADi__QCQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+qcqpSolver_checkNode :: QCQPSolverClass a => a -> IO Bool
+qcqpSolver_checkNode x = casADi__QCQPSolver__checkNode (castQCQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPSolver__setQPOptions" c_CasADi__QCQPSolver__setQPOptions
+  :: Ptr QCQPSolver' -> IO ()
+casADi__QCQPSolver__setQPOptions
+  :: QCQPSolver -> IO ()
+casADi__QCQPSolver__setQPOptions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPSolver__setQPOptions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set options that make the QP solver more suitable for solving LPs.
+-}
+qcqpSolver_setQPOptions :: QCQPSolverClass a => a -> IO ()
+qcqpSolver_setQPOptions x = casADi__QCQPSolver__setQPOptions (castQCQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPSolver__QCQPSolver" c_CasADi__QCQPSolver__QCQPSolver
+  :: IO (Ptr QCQPSolver')
+casADi__QCQPSolver__QCQPSolver
+  :: IO QCQPSolver
+casADi__QCQPSolver__QCQPSolver  =
+  c_CasADi__QCQPSolver__QCQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+qcqpSolver :: IO QCQPSolver
+qcqpSolver = casADi__QCQPSolver__QCQPSolver
+
diff --git a/Casadi/Wrappers/Classes/QCQPStructure.hs b/Casadi/Wrappers/Classes/QCQPStructure.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QCQPStructure.hs
@@ -0,0 +1,49 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QCQPStructure
+       (
+         QCQPStructure,
+         QCQPStructureClass(..),
+         qcqpStructure,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QCQPStructure where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QCQPStructIOSchemeVector_CasADi__Sparsity___QCQPStructure" c_CasADi__QCQPStructIOSchemeVector_CasADi__Sparsity___QCQPStructure
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr QCQPStructure')
+casADi__QCQPStructIOSchemeVector_CasADi__Sparsity___QCQPStructure
+  :: Vector Sparsity -> IO QCQPStructure
+casADi__QCQPStructIOSchemeVector_CasADi__Sparsity___QCQPStructure x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QCQPStructIOSchemeVector_CasADi__Sparsity___QCQPStructure x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+qcqpStructure :: Vector Sparsity -> IO QCQPStructure
+qcqpStructure = casADi__QCQPStructIOSchemeVector_CasADi__Sparsity___QCQPStructure
+
diff --git a/Casadi/Wrappers/Classes/QPLPSolver.hs b/Casadi/Wrappers/Classes/QPLPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QPLPSolver.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QPLPSolver
+       (
+         QPLPSolver,
+         QPLPSolverClass(..),
+         qplpSolver,
+         qplpSolver',
+         qplpSolver_checkNode,
+         qplpSolver_creator,
+         qplpSolver_getSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QPLPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPLPSolver__checkNode" c_CasADi__QPLPSolver__checkNode
+  :: Ptr QPLPSolver' -> IO CInt
+casADi__QPLPSolver__checkNode
+  :: QPLPSolver -> IO Bool
+casADi__QPLPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPLPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+qplpSolver_checkNode :: QPLPSolverClass a => a -> IO Bool
+qplpSolver_checkNode x = casADi__QPLPSolver__checkNode (castQPLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPLPSolver__creator" c_CasADi__QPLPSolver__creator
+  :: Ptr LPStructure' -> IO (Ptr LPSolver')
+casADi__QPLPSolver__creator
+  :: LPStructure -> IO LPSolver
+casADi__QPLPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPLPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+qplpSolver_creator :: LPStructure -> IO LPSolver
+qplpSolver_creator = casADi__QPLPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPLPSolver__getSolver" c_CasADi__QPLPSolver__getSolver
+  :: Ptr QPLPSolver' -> IO (Ptr QPSolver')
+casADi__QPLPSolver__getSolver
+  :: QPLPSolver -> IO QPSolver
+casADi__QPLPSolver__getSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPLPSolver__getSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access underlying QP solver.
+-}
+qplpSolver_getSolver :: QPLPSolverClass a => a -> IO QPSolver
+qplpSolver_getSolver x = casADi__QPLPSolver__getSolver (castQPLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPLPSolver__QPLPSolver" c_CasADi__QPLPSolver__QPLPSolver
+  :: IO (Ptr QPLPSolver')
+casADi__QPLPSolver__QPLPSolver
+  :: IO QPLPSolver
+casADi__QPLPSolver__QPLPSolver  =
+  c_CasADi__QPLPSolver__QPLPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::QPLPSolver::QPLPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::QPLPSolver::QPLPSolver(const LPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+qplpSolver :: IO QPLPSolver
+qplpSolver = casADi__QPLPSolver__QPLPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPLPSolver__QPLPSolver_TIC" c_CasADi__QPLPSolver__QPLPSolver_TIC
+  :: Ptr LPStructure' -> IO (Ptr QPLPSolver')
+casADi__QPLPSolver__QPLPSolver'
+  :: LPStructure -> IO QPLPSolver
+casADi__QPLPSolver__QPLPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPLPSolver__QPLPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+qplpSolver' :: LPStructure -> IO QPLPSolver
+qplpSolver' = casADi__QPLPSolver__QPLPSolver'
+
diff --git a/Casadi/Wrappers/Classes/QPSolver.hs b/Casadi/Wrappers/Classes/QPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QPSolver.hs
@@ -0,0 +1,103 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QPSolver
+       (
+         QPSolver,
+         QPSolverClass(..),
+         qpSolver,
+         qpSolver_checkNode,
+         qpSolver_generateNativeCode,
+         qpSolver_setLPOptions,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPSolver__checkNode" c_CasADi__QPSolver__checkNode
+  :: Ptr QPSolver' -> IO CInt
+casADi__QPSolver__checkNode
+  :: QPSolver -> IO Bool
+casADi__QPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+qpSolver_checkNode :: QPSolverClass a => a -> IO Bool
+qpSolver_checkNode x = casADi__QPSolver__checkNode (castQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPSolver__setLPOptions" c_CasADi__QPSolver__setLPOptions
+  :: Ptr QPSolver' -> IO ()
+casADi__QPSolver__setLPOptions
+  :: QPSolver -> IO ()
+casADi__QPSolver__setLPOptions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPSolver__setLPOptions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set options that make the QP solver more suitable for solving LPs.
+-}
+qpSolver_setLPOptions :: QPSolverClass a => a -> IO ()
+qpSolver_setLPOptions x = casADi__QPSolver__setLPOptions (castQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPSolver__generateNativeCode" c_CasADi__QPSolver__generateNativeCode
+  :: Ptr QPSolver' -> Ptr StdString' -> IO ()
+casADi__QPSolver__generateNativeCode
+  :: QPSolver -> String -> IO ()
+casADi__QPSolver__generateNativeCode x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__QPSolver__generateNativeCode x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate native code in the interfaced language for debugging
+-}
+qpSolver_generateNativeCode :: QPSolverClass a => a -> String -> IO ()
+qpSolver_generateNativeCode x = casADi__QPSolver__generateNativeCode (castQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPSolver__QPSolver" c_CasADi__QPSolver__QPSolver
+  :: IO (Ptr QPSolver')
+casADi__QPSolver__QPSolver
+  :: IO QPSolver
+casADi__QPSolver__QPSolver  =
+  c_CasADi__QPSolver__QPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+qpSolver :: IO QPSolver
+qpSolver = casADi__QPSolver__QPSolver
+
diff --git a/Casadi/Wrappers/Classes/QPStabilizer.hs b/Casadi/Wrappers/Classes/QPStabilizer.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QPStabilizer.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QPStabilizer
+       (
+         QPStabilizer,
+         QPStabilizerClass(..),
+         qpStabilizer,
+         qpStabilizer',
+         qpStabilizer_checkNode,
+         qpStabilizer_creator,
+         qpStabilizer_getSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QPStabilizer where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPStabilizer__checkNode" c_CasADi__QPStabilizer__checkNode
+  :: Ptr QPStabilizer' -> IO CInt
+casADi__QPStabilizer__checkNode
+  :: QPStabilizer -> IO Bool
+casADi__QPStabilizer__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPStabilizer__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+qpStabilizer_checkNode :: QPStabilizerClass a => a -> IO Bool
+qpStabilizer_checkNode x = casADi__QPStabilizer__checkNode (castQPStabilizer x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPStabilizer__creator" c_CasADi__QPStabilizer__creator
+  :: Ptr QPStructure' -> IO (Ptr StabilizedQPSolver')
+casADi__QPStabilizer__creator
+  :: QPStructure -> IO StabilizedQPSolver
+casADi__QPStabilizer__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPStabilizer__creator x0' >>= wrapReturn
+
+-- classy wrapper
+qpStabilizer_creator :: QPStructure -> IO StabilizedQPSolver
+qpStabilizer_creator = casADi__QPStabilizer__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPStabilizer__getSolver" c_CasADi__QPStabilizer__getSolver
+  :: Ptr QPStabilizer' -> IO (Ptr QPSolver')
+casADi__QPStabilizer__getSolver
+  :: QPStabilizer -> IO QPSolver
+casADi__QPStabilizer__getSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPStabilizer__getSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access underlying QP solver.
+-}
+qpStabilizer_getSolver :: QPStabilizerClass a => a -> IO QPSolver
+qpStabilizer_getSolver x = casADi__QPStabilizer__getSolver (castQPStabilizer x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPStabilizer__QPStabilizer" c_CasADi__QPStabilizer__QPStabilizer
+  :: IO (Ptr QPStabilizer')
+casADi__QPStabilizer__QPStabilizer
+  :: IO QPStabilizer
+casADi__QPStabilizer__QPStabilizer  =
+  c_CasADi__QPStabilizer__QPStabilizer  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::QPStabilizer::QPStabilizer()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::QPStabilizer::QPStabilizer(const QPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+qpStabilizer :: IO QPStabilizer
+qpStabilizer = casADi__QPStabilizer__QPStabilizer
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPStabilizer__QPStabilizer_TIC" c_CasADi__QPStabilizer__QPStabilizer_TIC
+  :: Ptr QPStructure' -> IO (Ptr QPStabilizer')
+casADi__QPStabilizer__QPStabilizer'
+  :: QPStructure -> IO QPStabilizer
+casADi__QPStabilizer__QPStabilizer' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPStabilizer__QPStabilizer_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+qpStabilizer' :: QPStructure -> IO QPStabilizer
+qpStabilizer' = casADi__QPStabilizer__QPStabilizer'
+
diff --git a/Casadi/Wrappers/Classes/QPStructure.hs b/Casadi/Wrappers/Classes/QPStructure.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/QPStructure.hs
@@ -0,0 +1,49 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.QPStructure
+       (
+         QPStructure,
+         QPStructureClass(..),
+         qpStructure,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show QPStructure where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__QPStructIOSchemeVector_CasADi__Sparsity___QPStructure" c_CasADi__QPStructIOSchemeVector_CasADi__Sparsity___QPStructure
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr QPStructure')
+casADi__QPStructIOSchemeVector_CasADi__Sparsity___QPStructure
+  :: Vector Sparsity -> IO QPStructure
+casADi__QPStructIOSchemeVector_CasADi__Sparsity___QPStructure x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__QPStructIOSchemeVector_CasADi__Sparsity___QPStructure x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+qpStructure :: Vector Sparsity -> IO QPStructure
+qpStructure = casADi__QPStructIOSchemeVector_CasADi__Sparsity___QPStructure
+
diff --git a/Casadi/Wrappers/Classes/RKIntegrator.hs b/Casadi/Wrappers/Classes/RKIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/RKIntegrator.hs
@@ -0,0 +1,185 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.RKIntegrator
+       (
+         RKIntegrator,
+         RKIntegratorClass(..),
+         rkIntegrator,
+         rkIntegrator',
+         rkIntegrator'',
+         rkIntegrator_checkNode,
+         rkIntegrator_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show RKIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__RKIntegrator__checkNode" c_CasADi__RKIntegrator__checkNode
+  :: Ptr RKIntegrator' -> IO CInt
+casADi__RKIntegrator__checkNode
+  :: RKIntegrator -> IO Bool
+casADi__RKIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__RKIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+rkIntegrator_checkNode :: RKIntegratorClass a => a -> IO Bool
+rkIntegrator_checkNode x = casADi__RKIntegrator__checkNode (castRKIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__RKIntegrator__creator" c_CasADi__RKIntegrator__creator
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr Integrator')
+casADi__RKIntegrator__creator
+  :: Function -> Function -> IO Integrator
+casADi__RKIntegrator__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__RKIntegrator__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+rkIntegrator_creator :: Function -> Function -> IO Integrator
+rkIntegrator_creator = casADi__RKIntegrator__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__RKIntegrator__RKIntegrator" c_CasADi__RKIntegrator__RKIntegrator
+  :: IO (Ptr RKIntegrator')
+casADi__RKIntegrator__RKIntegrator
+  :: IO RKIntegrator
+casADi__RKIntegrator__RKIntegrator  =
+  c_CasADi__RKIntegrator__RKIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::RKIntegrator::RKIntegrator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::RKIntegrator::RKIntegrator(const Function &f, const Function &g=Function())
+>------------------------------------------------------------------------
+>
+>Create an integrator for explicit ODEs.
+>
+>Parameters:
+>-----------
+>
+>f:  dynamical system
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>g:  backwards system
+>
+>>Input scheme: CasADi::RDAEInput (RDAE_NUM_IN = 8) [rdaeIn]
+>+-----------+-------+-------------------------------+
+>| Full name | Short |          Description          |
+>+===========+=======+===============================+
+>| RDAE_RX   | rx    | Backward differential state . |
+>+-----------+-------+-------------------------------+
+>| RDAE_RZ   | rz    | Backward algebraic state .    |
+>+-----------+-------+-------------------------------+
+>| RDAE_RP   | rp    | Backward parameter vector .   |
+>+-----------+-------+-------------------------------+
+>| RDAE_X    | x     | Forward differential state .  |
+>+-----------+-------+-------------------------------+
+>| RDAE_Z    | z     | Forward algebraic state .     |
+>+-----------+-------+-------------------------------+
+>| RDAE_P    | p     | Parameter vector .            |
+>+-----------+-------+-------------------------------+
+>| RDAE_T    | t     | Explicit time dependence .    |
+>+-----------+-------+-------------------------------+
+>
+>>Output scheme: CasADi::RDAEOutput (RDAE_NUM_OUT = 4) [rdaeOut]
+>+-----------+-------+-------------------------------------------+
+>| Full name | Short |                Description                |
+>+===========+=======+===========================================+
+>| RDAE_ODE  | ode   | Right hand side of ODE. .                 |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_ALG  | alg   | Right hand side of algebraic equations. . |
+>+-----------+-------+-------------------------------------------+
+>| RDAE_QUAD | quad  | Right hand side of quadratures. .         |
+>+-----------+-------+-------------------------------------------+
+-}
+rkIntegrator :: IO RKIntegrator
+rkIntegrator = casADi__RKIntegrator__RKIntegrator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__RKIntegrator__RKIntegrator_TIC" c_CasADi__RKIntegrator__RKIntegrator_TIC
+  :: Ptr Function' -> Ptr Function' -> IO (Ptr RKIntegrator')
+casADi__RKIntegrator__RKIntegrator'
+  :: Function -> Function -> IO RKIntegrator
+casADi__RKIntegrator__RKIntegrator' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__RKIntegrator__RKIntegrator_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+rkIntegrator' :: Function -> Function -> IO RKIntegrator
+rkIntegrator' = casADi__RKIntegrator__RKIntegrator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__RKIntegrator__RKIntegrator_TIC_TIC" c_CasADi__RKIntegrator__RKIntegrator_TIC_TIC
+  :: Ptr Function' -> IO (Ptr RKIntegrator')
+casADi__RKIntegrator__RKIntegrator''
+  :: Function -> IO RKIntegrator
+casADi__RKIntegrator__RKIntegrator'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__RKIntegrator__RKIntegrator_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+rkIntegrator'' :: Function -> IO RKIntegrator
+rkIntegrator'' = casADi__RKIntegrator__RKIntegrator''
+
diff --git a/Casadi/Wrappers/Classes/SCPgen.hs b/Casadi/Wrappers/Classes/SCPgen.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SCPgen.hs
@@ -0,0 +1,109 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SCPgen
+       (
+         SCPgen,
+         SCPgenClass(..),
+         scPgen,
+         scPgen',
+         scPgen_checkNode,
+         scPgen_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SCPgen where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SCPgen__checkNode" c_CasADi__SCPgen__checkNode
+  :: Ptr SCPgen' -> IO CInt
+casADi__SCPgen__checkNode
+  :: SCPgen -> IO Bool
+casADi__SCPgen__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SCPgen__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+scPgen_checkNode :: SCPgenClass a => a -> IO Bool
+scPgen_checkNode x = casADi__SCPgen__checkNode (castSCPgen x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SCPgen__creator" c_CasADi__SCPgen__creator
+  :: Ptr Function' -> IO (Ptr NLPSolver')
+casADi__SCPgen__creator
+  :: Function -> IO NLPSolver
+casADi__SCPgen__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SCPgen__creator x0' >>= wrapReturn
+
+-- classy wrapper
+scPgen_creator :: Function -> IO NLPSolver
+scPgen_creator = casADi__SCPgen__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SCPgen__SCPgen" c_CasADi__SCPgen__SCPgen
+  :: IO (Ptr SCPgen')
+casADi__SCPgen__SCPgen
+  :: IO SCPgen
+casADi__SCPgen__SCPgen  =
+  c_CasADi__SCPgen__SCPgen  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SCPgen::SCPgen()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SCPgen::SCPgen(const Function &F, const Function &G)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED] Create an NLP solver instance (legacy syntax)
+>
+>>  CasADi::SCPgen::SCPgen(const Function &nlp)
+>------------------------------------------------------------------------
+>
+>Create an NLP solver instance.
+-}
+scPgen :: IO SCPgen
+scPgen = casADi__SCPgen__SCPgen
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SCPgen__SCPgen_TIC" c_CasADi__SCPgen__SCPgen_TIC
+  :: Ptr Function' -> IO (Ptr SCPgen')
+casADi__SCPgen__SCPgen'
+  :: Function -> IO SCPgen
+casADi__SCPgen__SCPgen' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SCPgen__SCPgen_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+scPgen' :: Function -> IO SCPgen
+scPgen' = casADi__SCPgen__SCPgen'
+
diff --git a/Casadi/Wrappers/Classes/SDPSDQPSolver.hs b/Casadi/Wrappers/Classes/SDPSDQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SDPSDQPSolver.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SDPSDQPSolver
+       (
+         SDPSDQPSolver,
+         SDPSDQPSolverClass(..),
+         sdpsdqpSolver,
+         sdpsdqpSolver',
+         sdpsdqpSolver_checkNode,
+         sdpsdqpSolver_creator,
+         sdpsdqpSolver_getSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SDPSDQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSDQPSolver__checkNode" c_CasADi__SDPSDQPSolver__checkNode
+  :: Ptr SDPSDQPSolver' -> IO CInt
+casADi__SDPSDQPSolver__checkNode
+  :: SDPSDQPSolver -> IO Bool
+casADi__SDPSDQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSDQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sdpsdqpSolver_checkNode :: SDPSDQPSolverClass a => a -> IO Bool
+sdpsdqpSolver_checkNode x = casADi__SDPSDQPSolver__checkNode (castSDPSDQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSDQPSolver__creator" c_CasADi__SDPSDQPSolver__creator
+  :: Ptr SDQPStructure' -> IO (Ptr SDQPSolver')
+casADi__SDPSDQPSolver__creator
+  :: SDQPStructure -> IO SDQPSolver
+casADi__SDPSDQPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSDQPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+sdpsdqpSolver_creator :: SDQPStructure -> IO SDQPSolver
+sdpsdqpSolver_creator = casADi__SDPSDQPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSDQPSolver__getSolver" c_CasADi__SDPSDQPSolver__getSolver
+  :: Ptr SDPSDQPSolver' -> IO (Ptr SDPSolver')
+casADi__SDPSDQPSolver__getSolver
+  :: SDPSDQPSolver -> IO SDPSolver
+casADi__SDPSDQPSolver__getSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSDQPSolver__getSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access underlying SDP solver.
+-}
+sdpsdqpSolver_getSolver :: SDPSDQPSolverClass a => a -> IO SDPSolver
+sdpsdqpSolver_getSolver x = casADi__SDPSDQPSolver__getSolver (castSDPSDQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSDQPSolver__SDPSDQPSolver" c_CasADi__SDPSDQPSolver__SDPSDQPSolver
+  :: IO (Ptr SDPSDQPSolver')
+casADi__SDPSDQPSolver__SDPSDQPSolver
+  :: IO SDPSDQPSolver
+casADi__SDPSDQPSolver__SDPSDQPSolver  =
+  c_CasADi__SDPSDQPSolver__SDPSDQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SDPSDQPSolver::SDPSDQPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SDPSDQPSolver::SDPSDQPSolver(const SDQPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+sdpsdqpSolver :: IO SDPSDQPSolver
+sdpsdqpSolver = casADi__SDPSDQPSolver__SDPSDQPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSDQPSolver__SDPSDQPSolver_TIC" c_CasADi__SDPSDQPSolver__SDPSDQPSolver_TIC
+  :: Ptr SDQPStructure' -> IO (Ptr SDPSDQPSolver')
+casADi__SDPSDQPSolver__SDPSDQPSolver'
+  :: SDQPStructure -> IO SDPSDQPSolver
+casADi__SDPSDQPSolver__SDPSDQPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSDQPSolver__SDPSDQPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sdpsdqpSolver' :: SDQPStructure -> IO SDPSDQPSolver
+sdpsdqpSolver' = casADi__SDPSDQPSolver__SDPSDQPSolver'
+
diff --git a/Casadi/Wrappers/Classes/SDPSOCPSolver.hs b/Casadi/Wrappers/Classes/SDPSOCPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SDPSOCPSolver.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SDPSOCPSolver
+       (
+         SDPSOCPSolver,
+         SDPSOCPSolverClass(..),
+         sdpsocpSolver,
+         sdpsocpSolver',
+         sdpsocpSolver_checkNode,
+         sdpsocpSolver_creator,
+         sdpsocpSolver_getSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SDPSOCPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSOCPSolver__checkNode" c_CasADi__SDPSOCPSolver__checkNode
+  :: Ptr SDPSOCPSolver' -> IO CInt
+casADi__SDPSOCPSolver__checkNode
+  :: SDPSOCPSolver -> IO Bool
+casADi__SDPSOCPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSOCPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sdpsocpSolver_checkNode :: SDPSOCPSolverClass a => a -> IO Bool
+sdpsocpSolver_checkNode x = casADi__SDPSOCPSolver__checkNode (castSDPSOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSOCPSolver__creator" c_CasADi__SDPSOCPSolver__creator
+  :: Ptr SOCPStructure' -> IO (Ptr SOCPSolver')
+casADi__SDPSOCPSolver__creator
+  :: SOCPStructure -> IO SOCPSolver
+casADi__SDPSOCPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSOCPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+sdpsocpSolver_creator :: SOCPStructure -> IO SOCPSolver
+sdpsocpSolver_creator = casADi__SDPSOCPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSOCPSolver__getSolver" c_CasADi__SDPSOCPSolver__getSolver
+  :: Ptr SDPSOCPSolver' -> IO (Ptr SDPSolver')
+casADi__SDPSOCPSolver__getSolver
+  :: SDPSOCPSolver -> IO SDPSolver
+casADi__SDPSOCPSolver__getSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSOCPSolver__getSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access underlying SDP solver.
+-}
+sdpsocpSolver_getSolver :: SDPSOCPSolverClass a => a -> IO SDPSolver
+sdpsocpSolver_getSolver x = casADi__SDPSOCPSolver__getSolver (castSDPSOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSOCPSolver__SDPSOCPSolver" c_CasADi__SDPSOCPSolver__SDPSOCPSolver
+  :: IO (Ptr SDPSOCPSolver')
+casADi__SDPSOCPSolver__SDPSOCPSolver
+  :: IO SDPSOCPSolver
+casADi__SDPSOCPSolver__SDPSOCPSolver  =
+  c_CasADi__SDPSOCPSolver__SDPSOCPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SDPSOCPSolver::SDPSOCPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SDPSOCPSolver::SDPSOCPSolver(const SOCPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+sdpsocpSolver :: IO SDPSOCPSolver
+sdpsocpSolver = casADi__SDPSOCPSolver__SDPSOCPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSOCPSolver__SDPSOCPSolver_TIC" c_CasADi__SDPSOCPSolver__SDPSOCPSolver_TIC
+  :: Ptr SOCPStructure' -> IO (Ptr SDPSOCPSolver')
+casADi__SDPSOCPSolver__SDPSOCPSolver'
+  :: SOCPStructure -> IO SDPSOCPSolver
+casADi__SDPSOCPSolver__SDPSOCPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSOCPSolver__SDPSOCPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sdpsocpSolver' :: SOCPStructure -> IO SDPSOCPSolver
+sdpsocpSolver' = casADi__SDPSOCPSolver__SDPSOCPSolver'
+
diff --git a/Casadi/Wrappers/Classes/SDPSolver.hs b/Casadi/Wrappers/Classes/SDPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SDPSolver.hs
@@ -0,0 +1,84 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SDPSolver
+       (
+         SDPSolver,
+         SDPSolverClass(..),
+         sdpSolver,
+         sdpSolver_checkNode,
+         sdpSolver_setSOCPOptions,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SDPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSolver__checkNode" c_CasADi__SDPSolver__checkNode
+  :: Ptr SDPSolver' -> IO CInt
+casADi__SDPSolver__checkNode
+  :: SDPSolver -> IO Bool
+casADi__SDPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sdpSolver_checkNode :: SDPSolverClass a => a -> IO Bool
+sdpSolver_checkNode x = casADi__SDPSolver__checkNode (castSDPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSolver__setSOCPOptions" c_CasADi__SDPSolver__setSOCPOptions
+  :: Ptr SDPSolver' -> IO ()
+casADi__SDPSolver__setSOCPOptions
+  :: SDPSolver -> IO ()
+casADi__SDPSolver__setSOCPOptions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPSolver__setSOCPOptions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set options that make the SDP solver more suitable for solving SOCPs.
+-}
+sdpSolver_setSOCPOptions :: SDPSolverClass a => a -> IO ()
+sdpSolver_setSOCPOptions x = casADi__SDPSolver__setSOCPOptions (castSDPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPSolver__SDPSolver" c_CasADi__SDPSolver__SDPSolver
+  :: IO (Ptr SDPSolver')
+casADi__SDPSolver__SDPSolver
+  :: IO SDPSolver
+casADi__SDPSolver__SDPSolver  =
+  c_CasADi__SDPSolver__SDPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+sdpSolver :: IO SDPSolver
+sdpSolver = casADi__SDPSolver__SDPSolver
+
diff --git a/Casadi/Wrappers/Classes/SDPStructure.hs b/Casadi/Wrappers/Classes/SDPStructure.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SDPStructure.hs
@@ -0,0 +1,49 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SDPStructure
+       (
+         SDPStructure,
+         SDPStructureClass(..),
+         sdpStructure,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SDPStructure where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDPStructIOSchemeVector_CasADi__Sparsity___SDPStructure" c_CasADi__SDPStructIOSchemeVector_CasADi__Sparsity___SDPStructure
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr SDPStructure')
+casADi__SDPStructIOSchemeVector_CasADi__Sparsity___SDPStructure
+  :: Vector Sparsity -> IO SDPStructure
+casADi__SDPStructIOSchemeVector_CasADi__Sparsity___SDPStructure x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDPStructIOSchemeVector_CasADi__Sparsity___SDPStructure x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sdpStructure :: Vector Sparsity -> IO SDPStructure
+sdpStructure = casADi__SDPStructIOSchemeVector_CasADi__Sparsity___SDPStructure
+
diff --git a/Casadi/Wrappers/Classes/SDQPSolver.hs b/Casadi/Wrappers/Classes/SDQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SDQPSolver.hs
@@ -0,0 +1,84 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SDQPSolver
+       (
+         SDQPSolver,
+         SDQPSolverClass(..),
+         sdqpSolver,
+         sdqpSolver_checkNode,
+         sdqpSolver_setSOCQPOptions,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SDQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDQPSolver__checkNode" c_CasADi__SDQPSolver__checkNode
+  :: Ptr SDQPSolver' -> IO CInt
+casADi__SDQPSolver__checkNode
+  :: SDQPSolver -> IO Bool
+casADi__SDQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sdqpSolver_checkNode :: SDQPSolverClass a => a -> IO Bool
+sdqpSolver_checkNode x = casADi__SDQPSolver__checkNode (castSDQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDQPSolver__setSOCQPOptions" c_CasADi__SDQPSolver__setSOCQPOptions
+  :: Ptr SDQPSolver' -> IO ()
+casADi__SDQPSolver__setSOCQPOptions
+  :: SDQPSolver -> IO ()
+casADi__SDQPSolver__setSOCQPOptions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDQPSolver__setSOCQPOptions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set options that make the SDQP solver more suitable for solving SOCPs.
+-}
+sdqpSolver_setSOCQPOptions :: SDQPSolverClass a => a -> IO ()
+sdqpSolver_setSOCQPOptions x = casADi__SDQPSolver__setSOCQPOptions (castSDQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDQPSolver__SDQPSolver" c_CasADi__SDQPSolver__SDQPSolver
+  :: IO (Ptr SDQPSolver')
+casADi__SDQPSolver__SDQPSolver
+  :: IO SDQPSolver
+casADi__SDQPSolver__SDQPSolver  =
+  c_CasADi__SDQPSolver__SDQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+sdqpSolver :: IO SDQPSolver
+sdqpSolver = casADi__SDQPSolver__SDQPSolver
+
diff --git a/Casadi/Wrappers/Classes/SDQPStructure.hs b/Casadi/Wrappers/Classes/SDQPStructure.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SDQPStructure.hs
@@ -0,0 +1,49 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SDQPStructure
+       (
+         SDQPStructure,
+         SDQPStructureClass(..),
+         sdqpStructure,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SDQPStructure where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SDQPStructIOSchemeVector_CasADi__Sparsity___SDQPStructure" c_CasADi__SDQPStructIOSchemeVector_CasADi__Sparsity___SDQPStructure
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr SDQPStructure')
+casADi__SDQPStructIOSchemeVector_CasADi__Sparsity___SDQPStructure
+  :: Vector Sparsity -> IO SDQPStructure
+casADi__SDQPStructIOSchemeVector_CasADi__Sparsity___SDQPStructure x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SDQPStructIOSchemeVector_CasADi__Sparsity___SDQPStructure x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sdqpStructure :: Vector Sparsity -> IO SDQPStructure
+sdqpStructure = casADi__SDQPStructIOSchemeVector_CasADi__Sparsity___SDQPStructure
+
diff --git a/Casadi/Wrappers/Classes/SOCPQCQPSolver.hs b/Casadi/Wrappers/Classes/SOCPQCQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SOCPQCQPSolver.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SOCPQCQPSolver
+       (
+         SOCPQCQPSolver,
+         SOCPQCQPSolverClass(..),
+         socpqcqpSolver,
+         socpqcqpSolver',
+         socpqcqpSolver_checkNode,
+         socpqcqpSolver_creator,
+         socpqcqpSolver_getSolver,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SOCPQCQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPQCQPSolver__checkNode" c_CasADi__SOCPQCQPSolver__checkNode
+  :: Ptr SOCPQCQPSolver' -> IO CInt
+casADi__SOCPQCQPSolver__checkNode
+  :: SOCPQCQPSolver -> IO Bool
+casADi__SOCPQCQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SOCPQCQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+socpqcqpSolver_checkNode :: SOCPQCQPSolverClass a => a -> IO Bool
+socpqcqpSolver_checkNode x = casADi__SOCPQCQPSolver__checkNode (castSOCPQCQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPQCQPSolver__creator" c_CasADi__SOCPQCQPSolver__creator
+  :: Ptr QCQPStructure' -> IO (Ptr QCQPSolver')
+casADi__SOCPQCQPSolver__creator
+  :: QCQPStructure -> IO QCQPSolver
+casADi__SOCPQCQPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SOCPQCQPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+socpqcqpSolver_creator :: QCQPStructure -> IO QCQPSolver
+socpqcqpSolver_creator = casADi__SOCPQCQPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPQCQPSolver__getSolver" c_CasADi__SOCPQCQPSolver__getSolver
+  :: Ptr SOCPQCQPSolver' -> IO (Ptr SOCPSolver')
+casADi__SOCPQCQPSolver__getSolver
+  :: SOCPQCQPSolver -> IO SOCPSolver
+casADi__SOCPQCQPSolver__getSolver x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SOCPQCQPSolver__getSolver x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access underlying SOCP solver.
+-}
+socpqcqpSolver_getSolver :: SOCPQCQPSolverClass a => a -> IO SOCPSolver
+socpqcqpSolver_getSolver x = casADi__SOCPQCQPSolver__getSolver (castSOCPQCQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPQCQPSolver__SOCPQCQPSolver" c_CasADi__SOCPQCQPSolver__SOCPQCQPSolver
+  :: IO (Ptr SOCPQCQPSolver')
+casADi__SOCPQCQPSolver__SOCPQCQPSolver
+  :: IO SOCPQCQPSolver
+casADi__SOCPQCQPSolver__SOCPQCQPSolver  =
+  c_CasADi__SOCPQCQPSolver__SOCPQCQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SOCPQCQPSolver::SOCPQCQPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SOCPQCQPSolver::SOCPQCQPSolver(const QCQPStructure &st)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>st:  Problem structure
+-}
+socpqcqpSolver :: IO SOCPQCQPSolver
+socpqcqpSolver = casADi__SOCPQCQPSolver__SOCPQCQPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPQCQPSolver__SOCPQCQPSolver_TIC" c_CasADi__SOCPQCQPSolver__SOCPQCQPSolver_TIC
+  :: Ptr QCQPStructure' -> IO (Ptr SOCPQCQPSolver')
+casADi__SOCPQCQPSolver__SOCPQCQPSolver'
+  :: QCQPStructure -> IO SOCPQCQPSolver
+casADi__SOCPQCQPSolver__SOCPQCQPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SOCPQCQPSolver__SOCPQCQPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+socpqcqpSolver' :: QCQPStructure -> IO SOCPQCQPSolver
+socpqcqpSolver' = casADi__SOCPQCQPSolver__SOCPQCQPSolver'
+
diff --git a/Casadi/Wrappers/Classes/SOCPSolver.hs b/Casadi/Wrappers/Classes/SOCPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SOCPSolver.hs
@@ -0,0 +1,66 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SOCPSolver
+       (
+         SOCPSolver,
+         SOCPSolverClass(..),
+         socpSolver,
+         socpSolver_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SOCPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPSolver__checkNode" c_CasADi__SOCPSolver__checkNode
+  :: Ptr SOCPSolver' -> IO CInt
+casADi__SOCPSolver__checkNode
+  :: SOCPSolver -> IO Bool
+casADi__SOCPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SOCPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+socpSolver_checkNode :: SOCPSolverClass a => a -> IO Bool
+socpSolver_checkNode x = casADi__SOCPSolver__checkNode (castSOCPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPSolver__SOCPSolver" c_CasADi__SOCPSolver__SOCPSolver
+  :: IO (Ptr SOCPSolver')
+casADi__SOCPSolver__SOCPSolver
+  :: IO SOCPSolver
+casADi__SOCPSolver__SOCPSolver  =
+  c_CasADi__SOCPSolver__SOCPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+socpSolver :: IO SOCPSolver
+socpSolver = casADi__SOCPSolver__SOCPSolver
+
diff --git a/Casadi/Wrappers/Classes/SOCPStructure.hs b/Casadi/Wrappers/Classes/SOCPStructure.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SOCPStructure.hs
@@ -0,0 +1,49 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SOCPStructure
+       (
+         SOCPStructure,
+         SOCPStructureClass(..),
+         socpStructure,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SOCPStructure where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SOCPStructIOSchemeVector_CasADi__Sparsity___SOCPStructure" c_CasADi__SOCPStructIOSchemeVector_CasADi__Sparsity___SOCPStructure
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr SOCPStructure')
+casADi__SOCPStructIOSchemeVector_CasADi__Sparsity___SOCPStructure
+  :: Vector Sparsity -> IO SOCPStructure
+casADi__SOCPStructIOSchemeVector_CasADi__Sparsity___SOCPStructure x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SOCPStructIOSchemeVector_CasADi__Sparsity___SOCPStructure x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+socpStructure :: Vector Sparsity -> IO SOCPStructure
+socpStructure = casADi__SOCPStructIOSchemeVector_CasADi__Sparsity___SOCPStructure
+
diff --git a/Casadi/Wrappers/Classes/SQPMethod.hs b/Casadi/Wrappers/Classes/SQPMethod.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SQPMethod.hs
@@ -0,0 +1,109 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SQPMethod
+       (
+         SQPMethod,
+         SQPMethodClass(..),
+         sqpMethod,
+         sqpMethod',
+         sqpMethod_checkNode,
+         sqpMethod_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SQPMethod where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SQPMethod__checkNode" c_CasADi__SQPMethod__checkNode
+  :: Ptr SQPMethod' -> IO CInt
+casADi__SQPMethod__checkNode
+  :: SQPMethod -> IO Bool
+casADi__SQPMethod__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SQPMethod__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sqpMethod_checkNode :: SQPMethodClass a => a -> IO Bool
+sqpMethod_checkNode x = casADi__SQPMethod__checkNode (castSQPMethod x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SQPMethod__creator" c_CasADi__SQPMethod__creator
+  :: Ptr Function' -> IO (Ptr NLPSolver')
+casADi__SQPMethod__creator
+  :: Function -> IO NLPSolver
+casADi__SQPMethod__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SQPMethod__creator x0' >>= wrapReturn
+
+-- classy wrapper
+sqpMethod_creator :: Function -> IO NLPSolver
+sqpMethod_creator = casADi__SQPMethod__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SQPMethod__SQPMethod" c_CasADi__SQPMethod__SQPMethod
+  :: IO (Ptr SQPMethod')
+casADi__SQPMethod__SQPMethod
+  :: IO SQPMethod
+casADi__SQPMethod__SQPMethod  =
+  c_CasADi__SQPMethod__SQPMethod  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SQPMethod::SQPMethod()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SQPMethod::SQPMethod(const Function &F, const Function &G)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED] Create an NLP solver instance (legacy syntax)
+>
+>>  CasADi::SQPMethod::SQPMethod(const Function &nlp)
+>------------------------------------------------------------------------
+>
+>Create an NLP solver instance.
+-}
+sqpMethod :: IO SQPMethod
+sqpMethod = casADi__SQPMethod__SQPMethod
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SQPMethod__SQPMethod_TIC" c_CasADi__SQPMethod__SQPMethod_TIC
+  :: Ptr Function' -> IO (Ptr SQPMethod')
+casADi__SQPMethod__SQPMethod'
+  :: Function -> IO SQPMethod
+casADi__SQPMethod__SQPMethod' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SQPMethod__SQPMethod_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sqpMethod' :: Function -> IO SQPMethod
+sqpMethod' = casADi__SQPMethod__SQPMethod'
+
diff --git a/Casadi/Wrappers/Classes/SX.hs b/Casadi/Wrappers/Classes/SX.hs
--- a/Casadi/Wrappers/Classes/SX.hs
+++ b/Casadi/Wrappers/Classes/SX.hs
@@ -12,1591 +12,3859 @@
          sx,
          sx',
          sx'',
-         sx___add__,
-         sx___constpow__,
-         sx___div__,
-         sx___eq__,
-         sx___hash__,
-         sx___le__,
-         sx___lt__,
-         sx___mpower__,
-         sx___mrdivide__,
-         sx___mul__,
-         sx___ne__,
-         sx___nonzero__,
-         sx___pow__,
-         sx___sub__,
-         sx___truediv__,
-         sx_arccos,
-         sx_arccosh,
-         sx_arcsin,
-         sx_arcsinh,
-         sx_arctan,
-         sx_arctan2,
-         sx_arctan2',
-         sx_arctanh,
-         sx_assignIfDuplicate,
-         sx_assignIfDuplicate',
-         sx_binary,
-         sx_ceil,
-         sx_constpow,
-         sx_constpow',
-         sx_cos,
-         sx_cosh,
-         sx_erf,
-         sx_erfinv,
-         sx_exp,
-         sx_fabs,
-         sx_floor,
-         sx_fmax,
-         sx_fmax',
-         sx_fmin,
-         sx_fmin',
-         sx_getDep,
-         sx_getDep',
-         sx_getEqualityCheckingDepth,
-         sx_getIntValue,
-         sx_getMaxNumCallsInPrint,
-         sx_getNdeps,
-         sx_getOp,
-         sx_getTemp,
-         sx_getValue,
-         sx_hasDep,
-         sx_if_else_zero,
-         sx_inv,
-         sx_isCommutative,
-         sx_isConstant,
-         sx_isDoubled,
-         sx_isEqual,
-         sx_isEqual',
-         sx_isInf,
-         sx_isInteger,
-         sx_isLeaf,
-         sx_isMinusInf,
-         sx_isMinusOne,
-         sx_isNan,
-         sx_isNonNegative,
-         sx_isNull,
-         sx_isOne,
-         sx_isOp,
-         sx_isSymbolic,
-         sx_isZero,
-         sx_log,
-         sx_log10,
-         sx_logic_and,
-         sx_logic_not,
-         sx_logic_or,
-         sx_mark,
-         sx_marked,
-         sx_mul,
-         sx_operator_minus,
-         sx_printme,
-         sx_setEqualityCheckingDepth,
-         sx_setEqualityCheckingDepth',
-         sx_setMaxNumCallsInPrint,
-         sx_setMaxNumCallsInPrint',
-         sx_setTemp,
-         sx_sign,
-         sx_sin,
-         sx_sinh,
-         sx_sq,
-         sx_sqrt,
-         sx_tan,
-         sx_tanh,
-         sx_trans,
-         sx_unary,
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__binary" c_CasADi__SX__binary
-  :: CInt -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__binary
-  :: Int -> SX -> SX -> IO SX
-casADi__SX__binary x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__SX__binary x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sx_binary :: Int -> SX -> SX -> IO SX
-sx_binary = casADi__SX__binary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__unary" c_CasADi__SX__unary
-  :: CInt -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__unary
-  :: Int -> SX -> IO SX
-casADi__SX__unary x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__unary x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_unary :: Int -> SX -> IO SX
-sx_unary = casADi__SX__unary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____nonzero__" c_CasADi__SX____nonzero__
-  :: Ptr SX' -> IO CInt
-casADi__SX____nonzero__
-  :: SX -> IO Bool
-casADi__SX____nonzero__ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX____nonzero__ x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check the truth value of this node Introduced to catch bool(x) situations in
->python.
--}
-sx___nonzero__ :: SXClass a => a -> IO Bool
-sx___nonzero__ x = casADi__SX____nonzero__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isLeaf" c_CasADi__SX__isLeaf
-  :: Ptr SX' -> IO CInt
-casADi__SX__isLeaf
-  :: SX -> IO Bool
-casADi__SX__isLeaf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isLeaf x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->check if this SX is a leaf of the SX graph
->
->An SX qualifies as leaf when it has no dependencies.
--}
-sx_isLeaf :: SXClass a => a -> IO Bool
-sx_isLeaf x = casADi__SX__isLeaf (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isConstant" c_CasADi__SX__isConstant
-  :: Ptr SX' -> IO CInt
-casADi__SX__isConstant
-  :: SX -> IO Bool
-casADi__SX__isConstant x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isConstant x0' >>= wrapReturn
-
--- classy wrapper
-sx_isConstant :: SXClass a => a -> IO Bool
-sx_isConstant x = casADi__SX__isConstant (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isInteger" c_CasADi__SX__isInteger
-  :: Ptr SX' -> IO CInt
-casADi__SX__isInteger
-  :: SX -> IO Bool
-casADi__SX__isInteger x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isInteger x0' >>= wrapReturn
-
--- classy wrapper
-sx_isInteger :: SXClass a => a -> IO Bool
-sx_isInteger x = casADi__SX__isInteger (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isSymbolic" c_CasADi__SX__isSymbolic
-  :: Ptr SX' -> IO CInt
-casADi__SX__isSymbolic
-  :: SX -> IO Bool
-casADi__SX__isSymbolic x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isSymbolic x0' >>= wrapReturn
-
--- classy wrapper
-sx_isSymbolic :: SXClass a => a -> IO Bool
-sx_isSymbolic x = casADi__SX__isSymbolic (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__hasDep" c_CasADi__SX__hasDep
-  :: Ptr SX' -> IO CInt
-casADi__SX__hasDep
-  :: SX -> IO Bool
-casADi__SX__hasDep x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__hasDep x0' >>= wrapReturn
-
--- classy wrapper
-sx_hasDep :: SXClass a => a -> IO Bool
-sx_hasDep x = casADi__SX__hasDep (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isCommutative" c_CasADi__SX__isCommutative
-  :: Ptr SX' -> IO CInt
-casADi__SX__isCommutative
-  :: SX -> IO Bool
-casADi__SX__isCommutative x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isCommutative x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check wether a binary SX is commutative.
--}
-sx_isCommutative :: SXClass a => a -> IO Bool
-sx_isCommutative x = casADi__SX__isCommutative (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isZero" c_CasADi__SX__isZero
-  :: Ptr SX' -> IO CInt
-casADi__SX__isZero
-  :: SX -> IO Bool
-casADi__SX__isZero x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isZero x0' >>= wrapReturn
-
--- classy wrapper
-sx_isZero :: SXClass a => a -> IO Bool
-sx_isZero x = casADi__SX__isZero (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isOne" c_CasADi__SX__isOne
-  :: Ptr SX' -> IO CInt
-casADi__SX__isOne
-  :: SX -> IO Bool
-casADi__SX__isOne x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isOne x0' >>= wrapReturn
-
--- classy wrapper
-sx_isOne :: SXClass a => a -> IO Bool
-sx_isOne x = casADi__SX__isOne (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isMinusOne" c_CasADi__SX__isMinusOne
-  :: Ptr SX' -> IO CInt
-casADi__SX__isMinusOne
-  :: SX -> IO Bool
-casADi__SX__isMinusOne x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isMinusOne x0' >>= wrapReturn
-
--- classy wrapper
-sx_isMinusOne :: SXClass a => a -> IO Bool
-sx_isMinusOne x = casADi__SX__isMinusOne (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isNan" c_CasADi__SX__isNan
-  :: Ptr SX' -> IO CInt
-casADi__SX__isNan
-  :: SX -> IO Bool
-casADi__SX__isNan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isNan x0' >>= wrapReturn
-
--- classy wrapper
-sx_isNan :: SXClass a => a -> IO Bool
-sx_isNan x = casADi__SX__isNan (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isInf" c_CasADi__SX__isInf
-  :: Ptr SX' -> IO CInt
-casADi__SX__isInf
-  :: SX -> IO Bool
-casADi__SX__isInf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isInf x0' >>= wrapReturn
-
--- classy wrapper
-sx_isInf :: SXClass a => a -> IO Bool
-sx_isInf x = casADi__SX__isInf (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isMinusInf" c_CasADi__SX__isMinusInf
-  :: Ptr SX' -> IO CInt
-casADi__SX__isMinusInf
-  :: SX -> IO Bool
-casADi__SX__isMinusInf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isMinusInf x0' >>= wrapReturn
-
--- classy wrapper
-sx_isMinusInf :: SXClass a => a -> IO Bool
-sx_isMinusInf x = casADi__SX__isMinusInf (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getOp" c_CasADi__SX__getOp
-  :: Ptr SX' -> IO CInt
-casADi__SX__getOp
-  :: SX -> IO Int
-casADi__SX__getOp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__getOp x0' >>= wrapReturn
-
--- classy wrapper
-sx_getOp :: SXClass a => a -> IO Int
-sx_getOp x = casADi__SX__getOp (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isOp" c_CasADi__SX__isOp
-  :: Ptr SX' -> CInt -> IO CInt
-casADi__SX__isOp
-  :: SX -> Int -> IO Bool
-casADi__SX__isOp x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__isOp x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_isOp :: SXClass a => a -> Int -> IO Bool
-sx_isOp x = casADi__SX__isOp (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isEqual" c_CasADi__SX__isEqual
-  :: Ptr SX' -> Ptr SX' -> CInt -> IO CInt
-casADi__SX__isEqual
-  :: SX -> SX -> Int -> IO Bool
-casADi__SX__isEqual x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__SX__isEqual x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if two nodes are equivalent up to a given depth. Depth=0 checks if the
->expressions are identical, i.e. points to the same node.
->
->a = x*x b = x*x
->
->a.isEqual(b,0) will return false, but a.isEqual(b,1) will return true
--}
-sx_isEqual :: SXClass a => a -> SX -> Int -> IO Bool
-sx_isEqual x = casADi__SX__isEqual (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isEqual_TIC" c_CasADi__SX__isEqual_TIC
-  :: Ptr SX' -> Ptr SX' -> IO CInt
-casADi__SX__isEqual'
-  :: SX -> SX -> IO Bool
-casADi__SX__isEqual' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__isEqual_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_isEqual' :: SXClass a => a -> SX -> IO Bool
-sx_isEqual' x = casADi__SX__isEqual' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isNonNegative" c_CasADi__SX__isNonNegative
-  :: Ptr SX' -> IO CInt
-casADi__SX__isNonNegative
-  :: SX -> IO Bool
-casADi__SX__isNonNegative x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isNonNegative x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if a value is always nonnegative (false negatives are allowed)
--}
-sx_isNonNegative :: SXClass a => a -> IO Bool
-sx_isNonNegative x = casADi__SX__isNonNegative (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getValue" c_CasADi__SX__getValue
-  :: Ptr SX' -> IO CDouble
-casADi__SX__getValue
-  :: SX -> IO Double
-casADi__SX__getValue x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__getValue x0' >>= wrapReturn
-
--- classy wrapper
-sx_getValue :: SXClass a => a -> IO Double
-sx_getValue x = casADi__SX__getValue (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getIntValue" c_CasADi__SX__getIntValue
-  :: Ptr SX' -> IO CInt
-casADi__SX__getIntValue
-  :: SX -> IO Int
-casADi__SX__getIntValue x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__getIntValue x0' >>= wrapReturn
-
--- classy wrapper
-sx_getIntValue :: SXClass a => a -> IO Int
-sx_getIntValue x = casADi__SX__getIntValue (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getDep" c_CasADi__SX__getDep
-  :: Ptr SX' -> CInt -> IO (Ptr SX')
-casADi__SX__getDep
-  :: SX -> Int -> IO SX
-casADi__SX__getDep x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__getDep x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_getDep :: SXClass a => a -> Int -> IO SX
-sx_getDep x = casADi__SX__getDep (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getDep_TIC" c_CasADi__SX__getDep_TIC
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__getDep'
-  :: SX -> IO SX
-casADi__SX__getDep' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__getDep_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sx_getDep' :: SXClass a => a -> IO SX
-sx_getDep' x = casADi__SX__getDep' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isDoubled" c_CasADi__SX__isDoubled
-  :: Ptr SX' -> IO CInt
-casADi__SX__isDoubled
-  :: SX -> IO Bool
-casADi__SX__isDoubled x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isDoubled x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the node is the sum of two equal expressions.
--}
-sx_isDoubled :: SXClass a => a -> IO Bool
-sx_isDoubled x = casADi__SX__isDoubled (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getNdeps" c_CasADi__SX__getNdeps
-  :: Ptr SX' -> IO CInt
-casADi__SX__getNdeps
-  :: SX -> IO Int
-casADi__SX__getNdeps x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__getNdeps x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Get the number of dependencies of a binary SX.
--}
-sx_getNdeps :: SXClass a => a -> IO Int
-sx_getNdeps x = casADi__SX__getNdeps (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____hash__" c_CasADi__SX____hash__
-  :: Ptr SX' -> IO CLong
-casADi__SX____hash__
-  :: SX -> IO Int
-casADi__SX____hash__ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX____hash__ x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns a number that is unique for a given SXNode. If the SX does not point
->to any node, 0 is returned.
--}
-sx___hash__ :: SXClass a => a -> IO Int
-sx___hash__ x = casADi__SX____hash__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__operator_minus" c_CasADi__SX__operator_minus
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__operator_minus
-  :: SX -> IO SX
-casADi__SX__operator_minus x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__operator_minus x0' >>= wrapReturn
-
--- classy wrapper
-sx_operator_minus :: SXClass a => a -> IO SX
-sx_operator_minus x = casADi__SX__operator_minus (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____add__" c_CasADi__SX____add__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____add__
-  :: SX -> SX -> IO SX
-casADi__SX____add__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____add__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___add__ :: SXClass a => a -> SX -> IO SX
-sx___add__ x = casADi__SX____add__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____sub__" c_CasADi__SX____sub__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____sub__
-  :: SX -> SX -> IO SX
-casADi__SX____sub__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____sub__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___sub__ :: SXClass a => a -> SX -> IO SX
-sx___sub__ x = casADi__SX____sub__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____mul__" c_CasADi__SX____mul__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____mul__
-  :: SX -> SX -> IO SX
-casADi__SX____mul__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____mul__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___mul__ :: SXClass a => a -> SX -> IO SX
-sx___mul__ x = casADi__SX____mul__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____div__" c_CasADi__SX____div__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____div__
-  :: SX -> SX -> IO SX
-casADi__SX____div__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____div__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___div__ :: SXClass a => a -> SX -> IO SX
-sx___div__ x = casADi__SX____div__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____lt__" c_CasADi__SX____lt__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____lt__
-  :: SX -> SX -> IO SX
-casADi__SX____lt__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____lt__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___lt__ :: SXClass a => a -> SX -> IO SX
-sx___lt__ x = casADi__SX____lt__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____le__" c_CasADi__SX____le__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____le__
-  :: SX -> SX -> IO SX
-casADi__SX____le__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____le__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___le__ :: SXClass a => a -> SX -> IO SX
-sx___le__ x = casADi__SX____le__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____eq__" c_CasADi__SX____eq__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____eq__
-  :: SX -> SX -> IO SX
-casADi__SX____eq__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____eq__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___eq__ :: SXClass a => a -> SX -> IO SX
-sx___eq__ x = casADi__SX____eq__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____ne__" c_CasADi__SX____ne__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____ne__
-  :: SX -> SX -> IO SX
-casADi__SX____ne__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____ne__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___ne__ :: SXClass a => a -> SX -> IO SX
-sx___ne__ x = casADi__SX____ne__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____truediv__" c_CasADi__SX____truediv__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____truediv__
-  :: SX -> SX -> IO SX
-casADi__SX____truediv__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____truediv__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Division (with future.division in effect)
--}
-sx___truediv__ :: SXClass a => a -> SX -> IO SX
-sx___truediv__ x = casADi__SX____truediv__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____pow__" c_CasADi__SX____pow__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____pow__
-  :: SX -> SX -> IO SX
-casADi__SX____pow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____pow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___pow__ :: SXClass a => a -> SX -> IO SX
-sx___pow__ x = casADi__SX____pow__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____constpow__" c_CasADi__SX____constpow__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____constpow__
-  :: SX -> SX -> IO SX
-casADi__SX____constpow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____constpow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___constpow__ :: SXClass a => a -> SX -> IO SX
-sx___constpow__ x = casADi__SX____constpow__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____mrdivide__" c_CasADi__SX____mrdivide__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____mrdivide__
-  :: SX -> SX -> IO SX
-casADi__SX____mrdivide__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____mrdivide__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___mrdivide__ :: SXClass a => a -> SX -> IO SX
-sx___mrdivide__ x = casADi__SX____mrdivide__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX____mpower__" c_CasADi__SX____mpower__
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX____mpower__
-  :: SX -> SX -> IO SX
-casADi__SX____mpower__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX____mpower__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx___mpower__ :: SXClass a => a -> SX -> IO SX
-sx___mpower__ x = casADi__SX____mpower__ (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__trans" c_CasADi__SX__trans
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__trans
-  :: SX -> IO SX
-casADi__SX__trans x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__trans x0' >>= wrapReturn
-
--- classy wrapper
-sx_trans :: SXClass a => a -> IO SX
-sx_trans x = casADi__SX__trans (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__mul" c_CasADi__SX__mul
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__mul
-  :: SX -> SX -> IO SX
-casADi__SX__mul x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__mul x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->The following functions serves two purposes: Numpy compatibility and to
->allow unambigous access.
--}
-sx_mul :: SXClass a => a -> SX -> IO SX
-sx_mul x = casADi__SX__mul (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__exp" c_CasADi__SX__exp
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__exp
-  :: SX -> IO SX
-casADi__SX__exp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__exp x0' >>= wrapReturn
-
--- classy wrapper
-sx_exp :: SXClass a => a -> IO SX
-sx_exp x = casADi__SX__exp (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__log" c_CasADi__SX__log
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__log
-  :: SX -> IO SX
-casADi__SX__log x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__log x0' >>= wrapReturn
-
--- classy wrapper
-sx_log :: SXClass a => a -> IO SX
-sx_log x = casADi__SX__log (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__sqrt" c_CasADi__SX__sqrt
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__sqrt
-  :: SX -> IO SX
-casADi__SX__sqrt x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__sqrt x0' >>= wrapReturn
-
--- classy wrapper
-sx_sqrt :: SXClass a => a -> IO SX
-sx_sqrt x = casADi__SX__sqrt (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__sq" c_CasADi__SX__sq
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__sq
-  :: SX -> IO SX
-casADi__SX__sq x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__sq x0' >>= wrapReturn
-
--- classy wrapper
-sx_sq :: SXClass a => a -> IO SX
-sx_sq x = casADi__SX__sq (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__sin" c_CasADi__SX__sin
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__sin
-  :: SX -> IO SX
-casADi__SX__sin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__sin x0' >>= wrapReturn
-
--- classy wrapper
-sx_sin :: SXClass a => a -> IO SX
-sx_sin x = casADi__SX__sin (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__cos" c_CasADi__SX__cos
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__cos
-  :: SX -> IO SX
-casADi__SX__cos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__cos x0' >>= wrapReturn
-
--- classy wrapper
-sx_cos :: SXClass a => a -> IO SX
-sx_cos x = casADi__SX__cos (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__tan" c_CasADi__SX__tan
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__tan
-  :: SX -> IO SX
-casADi__SX__tan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__tan x0' >>= wrapReturn
-
--- classy wrapper
-sx_tan :: SXClass a => a -> IO SX
-sx_tan x = casADi__SX__tan (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arcsin" c_CasADi__SX__arcsin
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__arcsin
-  :: SX -> IO SX
-casADi__SX__arcsin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__arcsin x0' >>= wrapReturn
-
--- classy wrapper
-sx_arcsin :: SXClass a => a -> IO SX
-sx_arcsin x = casADi__SX__arcsin (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arccos" c_CasADi__SX__arccos
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__arccos
-  :: SX -> IO SX
-casADi__SX__arccos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__arccos x0' >>= wrapReturn
-
--- classy wrapper
-sx_arccos :: SXClass a => a -> IO SX
-sx_arccos x = casADi__SX__arccos (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arctan" c_CasADi__SX__arctan
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__arctan
-  :: SX -> IO SX
-casADi__SX__arctan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__arctan x0' >>= wrapReturn
-
--- classy wrapper
-sx_arctan :: SXClass a => a -> IO SX
-sx_arctan x = casADi__SX__arctan (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__floor" c_CasADi__SX__floor
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__floor
-  :: SX -> IO SX
-casADi__SX__floor x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__floor x0' >>= wrapReturn
-
--- classy wrapper
-sx_floor :: SXClass a => a -> IO SX
-sx_floor x = casADi__SX__floor (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__ceil" c_CasADi__SX__ceil
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__ceil
-  :: SX -> IO SX
-casADi__SX__ceil x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__ceil x0' >>= wrapReturn
-
--- classy wrapper
-sx_ceil :: SXClass a => a -> IO SX
-sx_ceil x = casADi__SX__ceil (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__erf" c_CasADi__SX__erf
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__erf
-  :: SX -> IO SX
-casADi__SX__erf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__erf x0' >>= wrapReturn
-
--- classy wrapper
-sx_erf :: SXClass a => a -> IO SX
-sx_erf x = casADi__SX__erf (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__erfinv" c_CasADi__SX__erfinv
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__erfinv
-  :: SX -> IO SX
-casADi__SX__erfinv x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__erfinv x0' >>= wrapReturn
-
--- classy wrapper
-sx_erfinv :: SXClass a => a -> IO SX
-sx_erfinv x = casADi__SX__erfinv (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__fabs" c_CasADi__SX__fabs
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__fabs
-  :: SX -> IO SX
-casADi__SX__fabs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__fabs x0' >>= wrapReturn
-
--- classy wrapper
-sx_fabs :: SXClass a => a -> IO SX
-sx_fabs x = casADi__SX__fabs (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__fmin" c_CasADi__SX__fmin
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__fmin
-  :: SX -> SX -> IO SX
-casADi__SX__fmin x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__fmin x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_fmin :: SXClass a => a -> SX -> IO SX
-sx_fmin x = casADi__SX__fmin (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__fmax" c_CasADi__SX__fmax
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__fmax
-  :: SX -> SX -> IO SX
-casADi__SX__fmax x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__fmax x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_fmax :: SXClass a => a -> SX -> IO SX
-sx_fmax x = casADi__SX__fmax (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__inv" c_CasADi__SX__inv
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__inv
-  :: SX -> IO SX
-casADi__SX__inv x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__inv x0' >>= wrapReturn
-
--- classy wrapper
-sx_inv :: SXClass a => a -> IO SX
-sx_inv x = casADi__SX__inv (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__sinh" c_CasADi__SX__sinh
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__sinh
-  :: SX -> IO SX
-casADi__SX__sinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__sinh x0' >>= wrapReturn
-
--- classy wrapper
-sx_sinh :: SXClass a => a -> IO SX
-sx_sinh x = casADi__SX__sinh (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__cosh" c_CasADi__SX__cosh
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__cosh
-  :: SX -> IO SX
-casADi__SX__cosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__cosh x0' >>= wrapReturn
-
--- classy wrapper
-sx_cosh :: SXClass a => a -> IO SX
-sx_cosh x = casADi__SX__cosh (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__tanh" c_CasADi__SX__tanh
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__tanh
-  :: SX -> IO SX
-casADi__SX__tanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__tanh x0' >>= wrapReturn
-
--- classy wrapper
-sx_tanh :: SXClass a => a -> IO SX
-sx_tanh x = casADi__SX__tanh (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arcsinh" c_CasADi__SX__arcsinh
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__arcsinh
-  :: SX -> IO SX
-casADi__SX__arcsinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__arcsinh x0' >>= wrapReturn
-
--- classy wrapper
-sx_arcsinh :: SXClass a => a -> IO SX
-sx_arcsinh x = casADi__SX__arcsinh (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arccosh" c_CasADi__SX__arccosh
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__arccosh
-  :: SX -> IO SX
-casADi__SX__arccosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__arccosh x0' >>= wrapReturn
-
--- classy wrapper
-sx_arccosh :: SXClass a => a -> IO SX
-sx_arccosh x = casADi__SX__arccosh (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arctanh" c_CasADi__SX__arctanh
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__arctanh
-  :: SX -> IO SX
-casADi__SX__arctanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__arctanh x0' >>= wrapReturn
-
--- classy wrapper
-sx_arctanh :: SXClass a => a -> IO SX
-sx_arctanh x = casADi__SX__arctanh (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arctan2" c_CasADi__SX__arctan2
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__arctan2
-  :: SX -> SX -> IO SX
-casADi__SX__arctan2 x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__arctan2 x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_arctan2 :: SXClass a => a -> SX -> IO SX
-sx_arctan2 x = casADi__SX__arctan2 (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__log10" c_CasADi__SX__log10
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__log10
-  :: SX -> IO SX
-casADi__SX__log10 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__log10 x0' >>= wrapReturn
-
--- classy wrapper
-sx_log10 :: SXClass a => a -> IO SX
-sx_log10 x = casADi__SX__log10 (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__printme" c_CasADi__SX__printme
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__printme
-  :: SX -> SX -> IO SX
-casADi__SX__printme x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__printme x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_printme :: SXClass a => a -> SX -> IO SX
-sx_printme x = casADi__SX__printme (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__sign" c_CasADi__SX__sign
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__sign
-  :: SX -> IO SX
-casADi__SX__sign x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__sign x0' >>= wrapReturn
-
--- classy wrapper
-sx_sign :: SXClass a => a -> IO SX
-sx_sign x = casADi__SX__sign (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__constpow" c_CasADi__SX__constpow
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__constpow
-  :: SX -> SX -> IO SX
-casADi__SX__constpow x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__constpow x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_constpow :: SXClass a => a -> SX -> IO SX
-sx_constpow x = casADi__SX__constpow (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__logic_not" c_CasADi__SX__logic_not
-  :: Ptr SX' -> IO (Ptr SX')
-casADi__SX__logic_not
-  :: SX -> IO SX
-casADi__SX__logic_not x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__logic_not x0' >>= wrapReturn
-
--- classy wrapper
-sx_logic_not :: SXClass a => a -> IO SX
-sx_logic_not x = casADi__SX__logic_not (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__logic_and" c_CasADi__SX__logic_and
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__logic_and
-  :: SX -> SX -> IO SX
-casADi__SX__logic_and x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__logic_and x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_logic_and :: SXClass a => a -> SX -> IO SX
-sx_logic_and x = casADi__SX__logic_and (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__logic_or" c_CasADi__SX__logic_or
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__logic_or
-  :: SX -> SX -> IO SX
-casADi__SX__logic_or x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__logic_or x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_logic_or :: SXClass a => a -> SX -> IO SX
-sx_logic_or x = casADi__SX__logic_or (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__if_else_zero" c_CasADi__SX__if_else_zero
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-casADi__SX__if_else_zero
-  :: SX -> SX -> IO SX
-casADi__SX__if_else_zero x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__if_else_zero x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_if_else_zero :: SXClass a => a -> SX -> IO SX
-sx_if_else_zero x = casADi__SX__if_else_zero (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__fmin_TIC" c_CasADi__SX__fmin_TIC
-  :: Ptr SX' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__SX__fmin'
-  :: SX -> SXMatrix -> IO SXMatrix
-casADi__SX__fmin' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__fmin_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_fmin' :: SXClass a => a -> SXMatrix -> IO SXMatrix
-sx_fmin' x = casADi__SX__fmin' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__fmax_TIC" c_CasADi__SX__fmax_TIC
-  :: Ptr SX' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__SX__fmax'
-  :: SX -> SXMatrix -> IO SXMatrix
-casADi__SX__fmax' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__fmax_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_fmax' :: SXClass a => a -> SXMatrix -> IO SXMatrix
-sx_fmax' x = casADi__SX__fmax' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__constpow_TIC" c_CasADi__SX__constpow_TIC
-  :: Ptr SX' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__SX__constpow'
-  :: SX -> SXMatrix -> IO SXMatrix
-casADi__SX__constpow' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__constpow_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_constpow' :: SXClass a => a -> SXMatrix -> IO SXMatrix
-sx_constpow' x = casADi__SX__constpow' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__arctan2_TIC" c_CasADi__SX__arctan2_TIC
-  :: Ptr SX' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__SX__arctan2'
-  :: SX -> SXMatrix -> IO SXMatrix
-casADi__SX__arctan2' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__arctan2_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_arctan2' :: SXClass a => a -> SXMatrix -> IO SXMatrix
-sx_arctan2' x = casADi__SX__arctan2' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getTemp" c_CasADi__SX__getTemp
-  :: Ptr SX' -> IO CInt
-casADi__SX__getTemp
-  :: SX -> IO Int
-casADi__SX__getTemp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__getTemp x0' >>= wrapReturn
-
--- classy wrapper
-sx_getTemp :: SXClass a => a -> IO Int
-sx_getTemp x = casADi__SX__getTemp (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__setTemp" c_CasADi__SX__setTemp
-  :: Ptr SX' -> CInt -> IO ()
-casADi__SX__setTemp
-  :: SX -> Int -> IO ()
-casADi__SX__setTemp x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__setTemp x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_setTemp :: SXClass a => a -> Int -> IO ()
-sx_setTemp x = casADi__SX__setTemp (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__marked" c_CasADi__SX__marked
-  :: Ptr SX' -> IO CInt
-casADi__SX__marked
-  :: SX -> IO Bool
-casADi__SX__marked x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__marked x0' >>= wrapReturn
-
--- classy wrapper
-sx_marked :: SXClass a => a -> IO Bool
-sx_marked x = casADi__SX__marked (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__mark" c_CasADi__SX__mark
-  :: Ptr SX' -> IO ()
-casADi__SX__mark
-  :: SX -> IO ()
-casADi__SX__mark x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__mark x0' >>= wrapReturn
-
--- classy wrapper
-sx_mark :: SXClass a => a -> IO ()
-sx_mark x = casADi__SX__mark (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__assignIfDuplicate" c_CasADi__SX__assignIfDuplicate
-  :: Ptr SX' -> Ptr SX' -> CInt -> IO ()
-casADi__SX__assignIfDuplicate
-  :: SX -> SX -> Int -> IO ()
-casADi__SX__assignIfDuplicate x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__SX__assignIfDuplicate x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Assign to another expression, if a duplicate. Check for equality up to a
->given depth.
--}
-sx_assignIfDuplicate :: SXClass a => a -> SX -> Int -> IO ()
-sx_assignIfDuplicate x = casADi__SX__assignIfDuplicate (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__assignIfDuplicate_TIC" c_CasADi__SX__assignIfDuplicate_TIC
-  :: Ptr SX' -> Ptr SX' -> IO ()
-casADi__SX__assignIfDuplicate'
-  :: SX -> SX -> IO ()
-casADi__SX__assignIfDuplicate' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SX__assignIfDuplicate_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sx_assignIfDuplicate' :: SXClass a => a -> SX -> IO ()
-sx_assignIfDuplicate' x = casADi__SX__assignIfDuplicate' (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__setMaxNumCallsInPrint" c_CasADi__SX__setMaxNumCallsInPrint
-  :: CLong -> IO ()
-casADi__SX__setMaxNumCallsInPrint
-  :: Int -> IO ()
-casADi__SX__setMaxNumCallsInPrint x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__setMaxNumCallsInPrint x0' >>= wrapReturn
-
--- classy wrapper
-sx_setMaxNumCallsInPrint :: Int -> IO ()
-sx_setMaxNumCallsInPrint = casADi__SX__setMaxNumCallsInPrint
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__setMaxNumCallsInPrint_TIC" c_CasADi__SX__setMaxNumCallsInPrint_TIC
-  :: IO ()
-casADi__SX__setMaxNumCallsInPrint'
-  :: IO ()
-casADi__SX__setMaxNumCallsInPrint'  =
-  c_CasADi__SX__setMaxNumCallsInPrint_TIC  >>= wrapReturn
-
--- classy wrapper
-sx_setMaxNumCallsInPrint' :: IO ()
-sx_setMaxNumCallsInPrint' = casADi__SX__setMaxNumCallsInPrint'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getMaxNumCallsInPrint" c_CasADi__SX__getMaxNumCallsInPrint
-  :: IO CLong
-casADi__SX__getMaxNumCallsInPrint
-  :: IO Int
-casADi__SX__getMaxNumCallsInPrint  =
-  c_CasADi__SX__getMaxNumCallsInPrint  >>= wrapReturn
-
--- classy wrapper
-sx_getMaxNumCallsInPrint :: IO Int
-sx_getMaxNumCallsInPrint = casADi__SX__getMaxNumCallsInPrint
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__setEqualityCheckingDepth" c_CasADi__SX__setEqualityCheckingDepth
-  :: CInt -> IO ()
-casADi__SX__setEqualityCheckingDepth
-  :: Int -> IO ()
-casADi__SX__setEqualityCheckingDepth x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__setEqualityCheckingDepth x0' >>= wrapReturn
-
--- classy wrapper
-sx_setEqualityCheckingDepth :: Int -> IO ()
-sx_setEqualityCheckingDepth = casADi__SX__setEqualityCheckingDepth
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__setEqualityCheckingDepth_TIC" c_CasADi__SX__setEqualityCheckingDepth_TIC
-  :: IO ()
-casADi__SX__setEqualityCheckingDepth'
-  :: IO ()
-casADi__SX__setEqualityCheckingDepth'  =
-  c_CasADi__SX__setEqualityCheckingDepth_TIC  >>= wrapReturn
-
--- classy wrapper
-sx_setEqualityCheckingDepth' :: IO ()
-sx_setEqualityCheckingDepth' = casADi__SX__setEqualityCheckingDepth'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__getEqualityCheckingDepth" c_CasADi__SX__getEqualityCheckingDepth
-  :: IO CInt
-casADi__SX__getEqualityCheckingDepth
-  :: IO Int
-casADi__SX__getEqualityCheckingDepth  =
-  c_CasADi__SX__getEqualityCheckingDepth  >>= wrapReturn
-
--- classy wrapper
-sx_getEqualityCheckingDepth :: IO Int
-sx_getEqualityCheckingDepth = casADi__SX__getEqualityCheckingDepth
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__isNull" c_CasADi__SX__isNull
-  :: Ptr SX' -> IO CInt
-casADi__SX__isNull
-  :: SX -> IO Bool
-casADi__SX__isNull x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__isNull x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->SX nodes are not allowed to be null.
--}
-sx_isNull :: SXClass a => a -> IO Bool
-sx_isNull x = casADi__SX__isNull (castSX x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__SX" c_CasADi__SX__SX
-  :: IO (Ptr SX')
-casADi__SX__SX
-  :: IO SX
-casADi__SX__SX  =
-  c_CasADi__SX__SX  >>= wrapReturn
-
--- classy wrapper
-{-|
->>  CasADi::SX::SX()
->------------------------------------------------------------------------
->
->Constructors.
->
->Default constructor (not-a-number)
->
->Object is initialised as not-a-number.
->
->>  CasADi::SX::SX(double val)
->------------------------------------------------------------------------
->
->Numerical constant constructor.
->
->Parameters:
->-----------
->
->val:  Numerical value
->
->>  CasADi::SX::SX(const std::string &name)
->------------------------------------------------------------------------
->
->Symbolic constructor.
->
->Parameters:
->-----------
->
->name:  Name of the symbol
->
->This is the name that wil be used by the "operator<<" and "toSTring"
->methods. The name is not used as identifier; you may construct distinct SX
->objects with non-unique names.
->
->>  CasADi::SX::SX(SXNode *node, bool dummy)
->------------------------------------------------------------------------
->
->Symbolic constructor.
->
->Parameters:
->-----------
->
->Name:  of the symbol
->
->This is the name that wil be used by the "operator<<" and "toSTring"
->methods. The name is not used as identifier; you may construct distinct SX
->objects with non-unique names.Create an expression from a node: extra dummy
->argument to avoid ambigousity for 0/NULL
->
->>  CasADi::SX::SX(const SX &scalar)
->------------------------------------------------------------------------
->
->Copy constructor.
--}
-sx :: IO SX
-sx = casADi__SX__SX
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__SX_TIC" c_CasADi__SX__SX_TIC
-  :: CDouble -> IO (Ptr SX')
-casADi__SX__SX'
-  :: Double -> IO SX
-casADi__SX__SX' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__SX_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sx' :: Double -> IO SX
-sx' = casADi__SX__SX'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__SX__SX_TIC_TIC" c_CasADi__SX__SX_TIC_TIC
-  :: Ptr StdString' -> IO (Ptr SX')
-casADi__SX__SX''
-  :: String -> IO SX
-casADi__SX__SX'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__SX__SX_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sx'' :: String -> IO SX
-sx'' = casADi__SX__SX''
+         sx''',
+         sx'''',
+         sx''''',
+         sx'''''',
+         sx''''''',
+         sx'''''''',
+         sx''''''''',
+         sx'''''''''',
+         sx''''''''''',
+         sx'''''''''''',
+         sx''''''''''''',
+         sx'''''''''''''',
+         sx___add__,
+         sx___constpow__,
+         sx___copysign__,
+         sx___div__,
+         sx___eq__,
+         sx___le__,
+         sx___lt__,
+         sx___mpower__,
+         sx___mrdivide__,
+         sx___mul__,
+         sx___ne__,
+         sx___nonzero__,
+         sx___pow__,
+         sx___sub__,
+         sx___truediv__,
+         sx_append,
+         sx_appendColumns,
+         sx_arccos,
+         sx_arccosh,
+         sx_arcsin,
+         sx_arcsinh,
+         sx_arctan,
+         sx_arctan2,
+         sx_arctanh,
+         sx_at,
+         sx_binary,
+         sx_ceil,
+         sx_className,
+         sx_clear,
+         sx_colind,
+         sx_cos,
+         sx_cosh,
+         sx_data,
+         sx_densify,
+         sx_densify',
+         sx_elem,
+         sx_elem',
+         sx_enlarge,
+         sx_erase,
+         sx_erf,
+         sx_erfinv,
+         sx_exp,
+         sx_eye,
+         sx_fabs,
+         sx_floor,
+         sx_fmax,
+         sx_fmin,
+         sx_get,
+         sx_get',
+         sx_get'',
+         sx_get''',
+         sx_get'''',
+         sx_get''''',
+         sx_getEqualityCheckingDepth,
+         sx_getMaxNumCallsInPrint,
+         sx_getName,
+         sx_getValue,
+         sx_hasNZ,
+         sx_hasNonStructuralZeros,
+         sx_if_else_zero,
+         sx_indexed_assignment,
+         sx_indexed_assignment',
+         sx_indexed_assignment'',
+         sx_indexed_assignment''',
+         sx_indexed_assignment'''',
+         sx_indexed_assignment''''',
+         sx_indexed_assignment'''''',
+         sx_indexed_assignment''''''',
+         sx_indexed_assignment'''''''',
+         sx_indexed_assignment''''''''',
+         sx_indexed_one_based_assignment,
+         sx_indexed_one_based_assignment',
+         sx_indexed_one_based_assignment'',
+         sx_indexed_zero_based_assignment,
+         sx_indexed_zero_based_assignment',
+         sx_indexed_zero_based_assignment'',
+         sx_inf,
+         sx_inf',
+         sx_inf'',
+         sx_inf''',
+         sx_isConstant,
+         sx_isEqual,
+         sx_isIdentity,
+         sx_isInteger,
+         sx_isMinusOne,
+         sx_isOne,
+         sx_isRegular,
+         sx_isSmooth,
+         sx_isSymbolic,
+         sx_isSymbolicSparse,
+         sx_isZero,
+         sx_log,
+         sx_log10,
+         sx_logic_and,
+         sx_logic_not,
+         sx_logic_or,
+         sx_matrix_matrix,
+         sx_matrix_scalar,
+         sx_mul,
+         sx_mul',
+         sx_mul_full,
+         sx_mul_full',
+         sx_mul_no_alloc_nn,
+         sx_mul_no_alloc_nn',
+         sx_mul_no_alloc_nt,
+         sx_mul_no_alloc_tn,
+         sx_mul_no_alloc_tn',
+         sx_nan,
+         sx_nan',
+         sx_nan'',
+         sx_nan''',
+         sx_nz_indexed_assignment,
+         sx_nz_indexed_assignment',
+         sx_nz_indexed_one_based_assignment,
+         sx_nz_indexed_one_based_assignment',
+         sx_nz_indexed_zero_based_assignment,
+         sx_nz_indexed_zero_based_assignment',
+         sx_operator_minus,
+         sx_operator_plus,
+         sx_printDense',
+         sx_printScalar',
+         sx_printSparse',
+         sx_printVector',
+         sx_printme,
+         sx_quad_form,
+         sx_remove,
+         sx_repmat,
+         sx_repmat',
+         sx_repmat'',
+         sx_repmat''',
+         sx_reserve,
+         sx_reserve',
+         sx_resize,
+         sx_row,
+         sx_sanityCheck,
+         sx_sanityCheck',
+         sx_scalar_matrix,
+         sx_set,
+         sx_set',
+         sx_set'',
+         sx_set''',
+         sx_set'''',
+         sx_set''''',
+         sx_setAll,
+         sx_setEqualityCheckingDepth,
+         sx_setEqualityCheckingDepth',
+         sx_setMaxNumCallsInPrint,
+         sx_setMaxNumCallsInPrint',
+         sx_setNZ,
+         sx_setNZ',
+         sx_setNZ'',
+         sx_setNZ''',
+         sx_setPrecision,
+         sx_setScientific,
+         sx_setSparse,
+         sx_setSparse',
+         sx_setSub,
+         sx_setSub',
+         sx_setSub'',
+         sx_setSub''',
+         sx_setSub'''',
+         sx_setSub''''',
+         sx_setSub'''''',
+         sx_setSub''''''',
+         sx_setSub'''''''',
+         sx_setSub''''''''',
+         sx_setSub'''''''''',
+         sx_setSub''''''''''',
+         sx_setSub'''''''''''',
+         sx_setSub''''''''''''',
+         sx_setWidth,
+         sx_setZero,
+         sx_sign,
+         sx_sin,
+         sx_sinh,
+         sx_sparsify,
+         sx_sparsify',
+         sx_sparsityRef,
+         sx_sqrt,
+         sx_tan,
+         sx_tanh,
+         sx_trans,
+         sx_triplet,
+         sx_triplet',
+         sx_unary,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SX where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sanityCheck" c_CasADi__Matrix_CasADi__SXElement___sanityCheck
+  :: Ptr SX' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___sanityCheck
+  :: SX -> Bool -> IO ()
+casADi__Matrix_CasADi__SXElement___sanityCheck x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___sanityCheck x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>dimensions and colind,row vectors are compatible.
+>
+>Parameters:
+>-----------
+>
+>complete:  set to true to also check elementwise throws an error as possible
+>result
+-}
+sx_sanityCheck :: SXClass a => a -> Bool -> IO ()
+sx_sanityCheck x = casADi__Matrix_CasADi__SXElement___sanityCheck (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sanityCheck_TIC" c_CasADi__Matrix_CasADi__SXElement___sanityCheck_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___sanityCheck'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___sanityCheck' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sanityCheck_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_sanityCheck' :: SXClass a => a -> IO ()
+sx_sanityCheck' x = casADi__Matrix_CasADi__SXElement___sanityCheck' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___at" c_CasADi__Matrix_CasADi__SXElement___at
+  :: Ptr SX' -> CInt -> IO (Ptr SXElement')
+casADi__Matrix_CasADi__SXElement___at
+  :: SX -> Int -> IO SXElement
+casADi__Matrix_CasADi__SXElement___at x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___at x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const DataType& CasADi::Matrix< T >::at(int k) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get a non-zero element.
+>
+>>  DataType& CasADi::Matrix< T >::at(int k)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Access a non-zero element.
+-}
+sx_at :: SXClass a => a -> Int -> IO SXElement
+sx_at x = casADi__Matrix_CasADi__SXElement___at (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___elem" c_CasADi__Matrix_CasADi__SXElement___elem
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr SXElement')
+casADi__Matrix_CasADi__SXElement___elem
+  :: SX -> Int -> Int -> IO SXElement
+casADi__Matrix_CasADi__SXElement___elem x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___elem x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const DataType & CasADi::Matrix< DataType >::elem(int rr, int cc=0) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>get an element
+>
+>>  DataType & CasADi::Matrix< DataType >::elem(int rr, int cc=0)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>get a reference to an element
+-}
+sx_elem :: SXClass a => a -> Int -> Int -> IO SXElement
+sx_elem x = casADi__Matrix_CasADi__SXElement___elem (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___elem_TIC" c_CasADi__Matrix_CasADi__SXElement___elem_TIC
+  :: Ptr SX' -> CInt -> IO (Ptr SXElement')
+casADi__Matrix_CasADi__SXElement___elem'
+  :: SX -> Int -> IO SXElement
+casADi__Matrix_CasADi__SXElement___elem' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___elem_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_elem' :: SXClass a => a -> Int -> IO SXElement
+sx_elem' x = casADi__Matrix_CasADi__SXElement___elem' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___hasNZ" c_CasADi__Matrix_CasADi__SXElement___hasNZ
+  :: Ptr SX' -> CInt -> CInt -> IO CInt
+casADi__Matrix_CasADi__SXElement___hasNZ
+  :: SX -> Int -> Int -> IO Bool
+casADi__Matrix_CasADi__SXElement___hasNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___hasNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns true if the matrix has a non-zero at location rr,cc.
+-}
+sx_hasNZ :: SXClass a => a -> Int -> Int -> IO Bool
+sx_hasNZ x = casADi__Matrix_CasADi__SXElement___hasNZ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____nonzero__" c_CasADi__Matrix_CasADi__SXElement_____nonzero__
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement_____nonzero__
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement_____nonzero__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement_____nonzero__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Returns the
+>truth value of a Matrix.
+-}
+sx___nonzero__ :: SXClass a => a -> IO Bool
+sx___nonzero__ x = casADi__Matrix_CasADi__SXElement_____nonzero__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub" c_CasADi__Matrix_CasADi__SXElement___setSub
+  :: Ptr SX' -> Ptr SX' -> CInt -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub
+  :: SX -> SX -> Int -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set a submatrix.
+-}
+sx_setSub :: SXClass a => a -> SX -> Int -> Int -> IO ()
+sx_setSub x = casADi__Matrix_CasADi__SXElement___setSub (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'
+  :: SX -> SX -> Vector Int -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub' :: SXClass a => a -> SX -> Vector Int -> Int -> IO ()
+sx_setSub' x = casADi__Matrix_CasADi__SXElement___setSub' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> CInt -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''
+  :: SX -> SX -> Int -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub'' :: SXClass a => a -> SX -> Int -> Vector Int -> IO ()
+sx_setSub'' x = casADi__Matrix_CasADi__SXElement___setSub'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''
+  :: SX -> SX -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub''' :: SXClass a => a -> SX -> Vector Int -> Vector Int -> IO ()
+sx_setSub''' x = casADi__Matrix_CasADi__SXElement___setSub''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr Slice' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''
+  :: SX -> SX -> Slice -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub'''' :: SXClass a => a -> SX -> Slice -> Vector Int -> IO ()
+sx_setSub'''' x = casADi__Matrix_CasADi__SXElement___setSub'''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr (CppVec CInt) -> Ptr Slice' -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''
+  :: SX -> SX -> Vector Int -> Slice -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub''''' :: SXClass a => a -> SX -> Vector Int -> Slice -> IO ()
+sx_setSub''''' x = casADi__Matrix_CasADi__SXElement___setSub''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr Slice' -> Ptr Slice' -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''
+  :: SX -> SX -> Slice -> Slice -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub'''''' :: SXClass a => a -> SX -> Slice -> Slice -> IO ()
+sx_setSub'''''' x = casADi__Matrix_CasADi__SXElement___setSub'''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr IMatrix' -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''
+  :: SX -> SX -> IMatrix -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub''''''' :: SXClass a => a -> SX -> IMatrix -> Vector Int -> IO ()
+sx_setSub''''''' x = casADi__Matrix_CasADi__SXElement___setSub''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr (CppVec CInt) -> Ptr IMatrix' -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''''
+  :: SX -> SX -> Vector Int -> IMatrix -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub'''''''' :: SXClass a => a -> SX -> Vector Int -> IMatrix -> IO ()
+sx_setSub'''''''' x = casADi__Matrix_CasADi__SXElement___setSub'''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr IMatrix' -> Ptr Slice' -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''''
+  :: SX -> SX -> IMatrix -> Slice -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub''''''''' :: SXClass a => a -> SX -> IMatrix -> Slice -> IO ()
+sx_setSub''''''''' x = casADi__Matrix_CasADi__SXElement___setSub''''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr Slice' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''''''
+  :: SX -> SX -> Slice -> IMatrix -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub'''''''''' :: SXClass a => a -> SX -> Slice -> IMatrix -> IO ()
+sx_setSub'''''''''' x = casADi__Matrix_CasADi__SXElement___setSub'''''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''''''
+  :: SX -> SX -> IMatrix -> IMatrix -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub''''''''''' :: SXClass a => a -> SX -> IMatrix -> IMatrix -> IO ()
+sx_setSub''''''''''' x = casADi__Matrix_CasADi__SXElement___setSub''''''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr Slice' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''''''''
+  :: SX -> SX -> Slice -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub'''''''''''' :: SXClass a => a -> SX -> Slice -> Int -> IO ()
+sx_setSub'''''''''''' x = casADi__Matrix_CasADi__SXElement___setSub'''''''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr Sparsity' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub'''''''''''''
+  :: SX -> SX -> Sparsity -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setSub''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSub_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_setSub''''''''''''' :: SXClass a => a -> SX -> Sparsity -> Int -> IO ()
+sx_setSub''''''''''''' x = casADi__Matrix_CasADi__SXElement___setSub''''''''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setNZ" c_CasADi__Matrix_CasADi__SXElement___setNZ
+  :: Ptr SX' -> CInt -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ
+  :: SX -> Int -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___setNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::setNZ(int k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< DataType >::setNZ(const std::vector< int > &k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< DataType >::setNZ(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set a set of nonzeros.
+>
+>>  void CasADi::Matrix< T >::setNZ(const Slice &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>
+>Set a set of nonzeros.
+-}
+sx_setNZ :: SXClass a => a -> Int -> SX -> IO ()
+sx_setNZ x = casADi__Matrix_CasADi__SXElement___setNZ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setNZ_TIC" c_CasADi__Matrix_CasADi__SXElement___setNZ_TIC
+  :: Ptr SX' -> Ptr (CppVec CInt) -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ'
+  :: SX -> Vector Int -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___setNZ_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_setNZ' :: SXClass a => a -> Vector Int -> SX -> IO ()
+sx_setNZ' x = casADi__Matrix_CasADi__SXElement___setNZ' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setNZ_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setNZ_TIC_TIC
+  :: Ptr SX' -> Ptr Slice' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ''
+  :: SX -> Slice -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___setNZ_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_setNZ'' :: SXClass a => a -> Slice -> SX -> IO ()
+sx_setNZ'' x = casADi__Matrix_CasADi__SXElement___setNZ'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setNZ_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___setNZ_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ'''
+  :: SX -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___setNZ''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___setNZ_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_setNZ''' :: SXClass a => a -> IMatrix -> SX -> IO ()
+sx_setNZ''' x = casADi__Matrix_CasADi__SXElement___setNZ''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___append" c_CasADi__Matrix_CasADi__SXElement___append
+  :: Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___append
+  :: SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___append x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___append x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Append a matrix
+>vertically (NOTE: only efficient if vector)
+-}
+sx_append :: SXClass a => a -> SX -> IO ()
+sx_append x = casADi__Matrix_CasADi__SXElement___append (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___appendColumns" c_CasADi__Matrix_CasADi__SXElement___appendColumns
+  :: Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___appendColumns
+  :: SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___appendColumns x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___appendColumns x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Append a
+>matrix horizontally.
+-}
+sx_appendColumns :: SXClass a => a -> SX -> IO ()
+sx_appendColumns x = casADi__Matrix_CasADi__SXElement___appendColumns (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment" c_CasADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment
+  :: Ptr SX' -> CInt -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment
+  :: SX -> Int -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::nz_indexed_one_based_assignment(int k, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a non-zero
+>
+>>  void CasADi::Matrix< T >::nz_indexed_one_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+-}
+sx_nz_indexed_one_based_assignment :: SXClass a => a -> Int -> SXElement -> IO ()
+sx_nz_indexed_one_based_assignment x = casADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment" c_CasADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment
+  :: Ptr SX' -> CInt -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment
+  :: SX -> Int -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Indexing for interfaced languages get a non-zero
+-}
+sx_nz_indexed_zero_based_assignment :: SXClass a => a -> Int -> SXElement -> IO ()
+sx_nz_indexed_zero_based_assignment x = casADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nz_indexed_assignment" c_CasADi__Matrix_CasADi__SXElement___nz_indexed_assignment
+  :: Ptr SX' -> Ptr Slice' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_assignment
+  :: SX -> Slice -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___nz_indexed_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Indexing for interfaced languages get a non-zero
+-}
+sx_nz_indexed_assignment :: SXClass a => a -> Slice -> SX -> IO ()
+sx_nz_indexed_assignment x = casADi__Matrix_CasADi__SXElement___nz_indexed_assignment (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment" c_CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment
+  :: SX -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(int rr, int cc, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a matrix element
+>
+>>  void CasADi::Matrix< T >::indexed_one_based_assignment(int rr, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>set a vector element
+-}
+sx_indexed_one_based_assignment :: SXClass a => a -> IMatrix -> SX -> IO ()
+sx_indexed_one_based_assignment x = casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment" c_CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment
+  :: SX -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(const Matrix< int > &k, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(int rr, int cc, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_zero_based_assignment(int rr, const DataType &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+sx_indexed_zero_based_assignment :: SXClass a => a -> IMatrix -> SX -> IO ()
+sx_indexed_zero_based_assignment x = casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment_TIC" c_CasADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment_TIC
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment'
+  :: SX -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_nz_indexed_one_based_assignment' :: SXClass a => a -> IMatrix -> SX -> IO ()
+sx_nz_indexed_one_based_assignment' x = casADi__Matrix_CasADi__SXElement___nz_indexed_one_based_assignment' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment_TIC" c_CasADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment_TIC
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment'
+  :: SX -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_nz_indexed_zero_based_assignment' :: SXClass a => a -> IMatrix -> SX -> IO ()
+sx_nz_indexed_zero_based_assignment' x = casADi__Matrix_CasADi__SXElement___nz_indexed_zero_based_assignment' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nz_indexed_assignment_TIC" c_CasADi__Matrix_CasADi__SXElement___nz_indexed_assignment_TIC
+  :: Ptr SX' -> Ptr IndexList' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_assignment'
+  :: SX -> IndexList -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___nz_indexed_assignment' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___nz_indexed_assignment_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_nz_indexed_assignment' :: SXClass a => a -> IndexList -> SX -> IO ()
+sx_nz_indexed_assignment' x = casADi__Matrix_CasADi__SXElement___nz_indexed_assignment' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment_TIC
+  :: Ptr SX' -> CInt -> CInt -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment'
+  :: SX -> Int -> Int -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_one_based_assignment' :: SXClass a => a -> Int -> Int -> SXElement -> IO ()
+sx_indexed_one_based_assignment' x = casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment_TIC
+  :: Ptr SX' -> CInt -> CInt -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment'
+  :: SX -> Int -> Int -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_zero_based_assignment' :: SXClass a => a -> Int -> Int -> SXElement -> IO ()
+sx_indexed_zero_based_assignment' x = casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment
+  :: Ptr SX' -> Ptr Slice' -> Ptr Slice' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment
+  :: SX -> Slice -> Slice -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Slice &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const IndexList &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const Slice &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const IndexList &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Matrix< int > &rr, const Matrix< int > &cc, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Sparsity &sp, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Indexing for interfaced languages get a non-zero
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const Slice &rr, const Matrix< DataType > &m)
+>
+>>  void CasADi::Matrix< T >::indexed_assignment(const IndexList &rr, const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+sx_indexed_assignment :: SXClass a => a -> Slice -> Slice -> SX -> IO ()
+sx_indexed_assignment x = casADi__Matrix_CasADi__SXElement___indexed_assignment (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC
+  :: Ptr SX' -> Ptr IndexList' -> Ptr IndexList' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'
+  :: SX -> IndexList -> IndexList -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment' :: SXClass a => a -> IndexList -> IndexList -> SX -> IO ()
+sx_indexed_assignment' x = casADi__Matrix_CasADi__SXElement___indexed_assignment' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC
+  :: Ptr SX' -> Ptr Slice' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''
+  :: SX -> Slice -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment'' :: SXClass a => a -> Slice -> IMatrix -> SX -> IO ()
+sx_indexed_assignment'' x = casADi__Matrix_CasADi__SXElement___indexed_assignment'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr Slice' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''
+  :: SX -> IMatrix -> Slice -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment''' :: SXClass a => a -> IMatrix -> Slice -> SX -> IO ()
+sx_indexed_assignment''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr IndexList' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''''
+  :: SX -> IMatrix -> IndexList -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment'''' :: SXClass a => a -> IMatrix -> IndexList -> SX -> IO ()
+sx_indexed_assignment'''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment'''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr IndexList' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''''
+  :: SX -> IndexList -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment''''' :: SXClass a => a -> IndexList -> IMatrix -> SX -> IO ()
+sx_indexed_assignment''''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr IMatrix' -> Ptr IMatrix' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''''''
+  :: SX -> IMatrix -> IMatrix -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment'''''' :: SXClass a => a -> IMatrix -> IMatrix -> SX -> IO ()
+sx_indexed_assignment'''''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment'''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr Sparsity' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''''''
+  :: SX -> Sparsity -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment''''''' :: SXClass a => a -> Sparsity -> SX -> IO ()
+sx_indexed_assignment''''''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment_TIC_TIC
+  :: Ptr SX' -> CInt -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment''
+  :: SX -> Int -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_one_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_one_based_assignment'' :: SXClass a => a -> Int -> SXElement -> IO ()
+sx_indexed_one_based_assignment'' x = casADi__Matrix_CasADi__SXElement___indexed_one_based_assignment'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment_TIC_TIC
+  :: Ptr SX' -> CInt -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment''
+  :: SX -> Int -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_zero_based_assignment'' :: SXClass a => a -> Int -> SXElement -> IO ()
+sx_indexed_zero_based_assignment'' x = casADi__Matrix_CasADi__SXElement___indexed_zero_based_assignment'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr Slice' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''''''''
+  :: SX -> Slice -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment'''''''' :: SXClass a => a -> Slice -> SX -> IO ()
+sx_indexed_assignment'''''''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment'''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr IndexList' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment'''''''''
+  :: SX -> IndexList -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___indexed_assignment''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___indexed_assignment_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_indexed_assignment''''''''' :: SXClass a => a -> IndexList -> SX -> IO ()
+sx_indexed_assignment''''''''' x = casADi__Matrix_CasADi__SXElement___indexed_assignment''''''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setZero" c_CasADi__Matrix_CasADi__SXElement___setZero
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___setZero
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___setZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___setZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set all elements
+>to zero.
+-}
+sx_setZero :: SXClass a => a -> IO ()
+sx_setZero x = casADi__Matrix_CasADi__SXElement___setZero (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setAll" c_CasADi__Matrix_CasADi__SXElement___setAll
+  :: Ptr SX' -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___setAll
+  :: SX -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___setAll x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___setAll x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set all elements
+>to a value.
+-}
+sx_setAll :: SXClass a => a -> SXElement -> IO ()
+sx_setAll x = casADi__Matrix_CasADi__SXElement___setAll (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSparse" c_CasADi__Matrix_CasADi__SXElement___setSparse
+  :: Ptr SX' -> Ptr Sparsity' -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___setSparse
+  :: SX -> Sparsity -> Bool -> IO SX
+casADi__Matrix_CasADi__SXElement___setSparse x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSparse x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Set sparse.
+-}
+sx_setSparse :: SXClass a => a -> Sparsity -> Bool -> IO SX
+sx_setSparse x = casADi__Matrix_CasADi__SXElement___setSparse (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setSparse_TIC" c_CasADi__Matrix_CasADi__SXElement___setSparse_TIC
+  :: Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___setSparse'
+  :: SX -> Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___setSparse' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___setSparse_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_setSparse' :: SXClass a => a -> Sparsity -> IO SX
+sx_setSparse' x = casADi__Matrix_CasADi__SXElement___setSparse' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___densify" c_CasADi__Matrix_CasADi__SXElement___densify
+  :: Ptr SX' -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___densify
+  :: SX -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___densify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___densify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Make the matrix
+>dense.
+-}
+sx_densify :: SXClass a => a -> SXElement -> IO ()
+sx_densify x = casADi__Matrix_CasADi__SXElement___densify (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___densify_TIC" c_CasADi__Matrix_CasADi__SXElement___densify_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___densify'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___densify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___densify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_densify' :: SXClass a => a -> IO ()
+sx_densify' x = casADi__Matrix_CasADi__SXElement___densify' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sparsify" c_CasADi__Matrix_CasADi__SXElement___sparsify
+  :: Ptr SX' -> CDouble -> IO ()
+casADi__Matrix_CasADi__SXElement___sparsify
+  :: SX -> Double -> IO ()
+casADi__Matrix_CasADi__SXElement___sparsify x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___sparsify x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Make a matrix
+>sparse by removing numerical zeros smaller in absolute value than a
+>specified tolerance.
+-}
+sx_sparsify :: SXClass a => a -> Double -> IO ()
+sx_sparsify x = casADi__Matrix_CasADi__SXElement___sparsify (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sparsify_TIC" c_CasADi__Matrix_CasADi__SXElement___sparsify_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___sparsify'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___sparsify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sparsify_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_sparsify' :: SXClass a => a -> IO ()
+sx_sparsify' x = casADi__Matrix_CasADi__SXElement___sparsify' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___operator_plus" c_CasADi__Matrix_CasADi__SXElement___operator_plus
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___operator_plus
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___operator_plus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___operator_plus x0' >>= wrapReturn
+
+-- classy wrapper
+sx_operator_plus :: SXClass a => a -> IO SX
+sx_operator_plus x = casADi__Matrix_CasADi__SXElement___operator_plus (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___operator_minus" c_CasADi__Matrix_CasADi__SXElement___operator_minus
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___operator_minus
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___operator_minus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___operator_minus x0' >>= wrapReturn
+
+-- classy wrapper
+sx_operator_minus :: SXClass a => a -> IO SX
+sx_operator_minus x = casADi__Matrix_CasADi__SXElement___operator_minus (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___binary" c_CasADi__Matrix_CasADi__SXElement___binary
+  :: CInt -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___binary
+  :: Int -> SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___binary x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___binary x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create nodes by
+>their ID.
+-}
+sx_binary :: Int -> SX -> SX -> IO SX
+sx_binary = casADi__Matrix_CasADi__SXElement___binary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___unary" c_CasADi__Matrix_CasADi__SXElement___unary
+  :: CInt -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___unary
+  :: Int -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___unary x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___unary x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create nodes by
+>their ID.
+-}
+sx_unary :: Int -> SX -> IO SX
+sx_unary = casADi__Matrix_CasADi__SXElement___unary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___scalar_matrix" c_CasADi__Matrix_CasADi__SXElement___scalar_matrix
+  :: CInt -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___scalar_matrix
+  :: Int -> SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___scalar_matrix x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___scalar_matrix x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+sx_scalar_matrix :: Int -> SX -> SX -> IO SX
+sx_scalar_matrix = casADi__Matrix_CasADi__SXElement___scalar_matrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___matrix_scalar" c_CasADi__Matrix_CasADi__SXElement___matrix_scalar
+  :: CInt -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___matrix_scalar
+  :: Int -> SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___matrix_scalar x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___matrix_scalar x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+sx_matrix_scalar :: Int -> SX -> SX -> IO SX
+sx_matrix_scalar = casADi__Matrix_CasADi__SXElement___matrix_scalar
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___matrix_matrix" c_CasADi__Matrix_CasADi__SXElement___matrix_matrix
+  :: CInt -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___matrix_matrix
+  :: Int -> SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___matrix_matrix x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___matrix_matrix x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Create
+>nodes by their ID.
+-}
+sx_matrix_matrix :: Int -> SX -> SX -> IO SX
+sx_matrix_matrix = casADi__Matrix_CasADi__SXElement___matrix_matrix
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____add__" c_CasADi__Matrix_CasADi__SXElement_____add__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____add__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____add__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____add__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___add__ :: SXClass a => a -> SX -> IO SX
+sx___add__ x = casADi__Matrix_CasADi__SXElement_____add__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____sub__" c_CasADi__Matrix_CasADi__SXElement_____sub__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____sub__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____sub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____sub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___sub__ :: SXClass a => a -> SX -> IO SX
+sx___sub__ x = casADi__Matrix_CasADi__SXElement_____sub__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____mul__" c_CasADi__Matrix_CasADi__SXElement_____mul__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____mul__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____mul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____mul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___mul__ :: SXClass a => a -> SX -> IO SX
+sx___mul__ x = casADi__Matrix_CasADi__SXElement_____mul__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____div__" c_CasADi__Matrix_CasADi__SXElement_____div__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____div__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____div__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____div__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___div__ :: SXClass a => a -> SX -> IO SX
+sx___div__ x = casADi__Matrix_CasADi__SXElement_____div__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____lt__" c_CasADi__Matrix_CasADi__SXElement_____lt__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____lt__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____lt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____lt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___lt__ :: SXClass a => a -> SX -> IO SX
+sx___lt__ x = casADi__Matrix_CasADi__SXElement_____lt__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____le__" c_CasADi__Matrix_CasADi__SXElement_____le__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____le__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____le__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____le__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___le__ :: SXClass a => a -> SX -> IO SX
+sx___le__ x = casADi__Matrix_CasADi__SXElement_____le__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____eq__" c_CasADi__Matrix_CasADi__SXElement_____eq__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____eq__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____eq__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____eq__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___eq__ :: SXClass a => a -> SX -> IO SX
+sx___eq__ x = casADi__Matrix_CasADi__SXElement_____eq__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____ne__" c_CasADi__Matrix_CasADi__SXElement_____ne__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____ne__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____ne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____ne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___ne__ :: SXClass a => a -> SX -> IO SX
+sx___ne__ x = casADi__Matrix_CasADi__SXElement_____ne__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____truediv__" c_CasADi__Matrix_CasADi__SXElement_____truediv__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____truediv__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___truediv__ :: SXClass a => a -> SX -> IO SX
+sx___truediv__ x = casADi__Matrix_CasADi__SXElement_____truediv__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____pow__" c_CasADi__Matrix_CasADi__SXElement_____pow__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____pow__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____pow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____pow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___pow__ :: SXClass a => a -> SX -> IO SX
+sx___pow__ x = casADi__Matrix_CasADi__SXElement_____pow__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____constpow__" c_CasADi__Matrix_CasADi__SXElement_____constpow__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____constpow__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____constpow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____constpow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___constpow__ :: SXClass a => a -> SX -> IO SX
+sx___constpow__ x = casADi__Matrix_CasADi__SXElement_____constpow__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____mpower__" c_CasADi__Matrix_CasADi__SXElement_____mpower__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____mpower__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____mpower__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____mpower__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___mpower__ :: SXClass a => a -> SX -> IO SX
+sx___mpower__ x = casADi__Matrix_CasADi__SXElement_____mpower__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____mrdivide__" c_CasADi__Matrix_CasADi__SXElement_____mrdivide__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____mrdivide__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____mrdivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____mrdivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Elementwise
+>operations Octave/Python naming.
+-}
+sx___mrdivide__ :: SXClass a => a -> SX -> IO SX
+sx___mrdivide__ x = casADi__Matrix_CasADi__SXElement_____mrdivide__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_full" c_CasADi__Matrix_CasADi__SXElement___mul_full
+  :: Ptr SX' -> Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___mul_full
+  :: SX -> SX -> Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___mul_full x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_full x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Matrix-matrix
+>product.
+-}
+sx_mul_full :: SXClass a => a -> SX -> Sparsity -> IO SX
+sx_mul_full x = casADi__Matrix_CasADi__SXElement___mul_full (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_full_TIC" c_CasADi__Matrix_CasADi__SXElement___mul_full_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___mul_full'
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___mul_full' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_full_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_mul_full' :: SXClass a => a -> SX -> IO SX
+sx_mul_full' x = casADi__Matrix_CasADi__SXElement___mul_full' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul" c_CasADi__Matrix_CasADi__SXElement___mul
+  :: Ptr SX' -> Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___mul
+  :: SX -> SX -> Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___mul x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Matrix-matrix
+>product.
+-}
+sx_mul :: SXClass a => a -> SX -> Sparsity -> IO SX
+sx_mul x = casADi__Matrix_CasADi__SXElement___mul (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_TIC" c_CasADi__Matrix_CasADi__SXElement___mul_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___mul'
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___mul' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_mul' :: SXClass a => a -> SX -> IO SX
+sx_mul' x = casADi__Matrix_CasADi__SXElement___mul' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nn" c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nn
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_nn
+  :: SX -> SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_nn x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nn x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_mul_no_alloc_nn :: SX -> SX -> SX -> IO ()
+sx_mul_no_alloc_nn = casADi__Matrix_CasADi__SXElement___mul_no_alloc_nn
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_no_alloc_tn" c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_tn
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_tn
+  :: SX -> SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_tn x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_tn x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_mul_no_alloc_tn :: SX -> SX -> SX -> IO ()
+sx_mul_no_alloc_tn = casADi__Matrix_CasADi__SXElement___mul_no_alloc_tn
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nt" c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nt
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_nt
+  :: SX -> SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_nt x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nt x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_mul_no_alloc_nt :: SX -> SX -> SX -> IO ()
+sx_mul_no_alloc_nt = casADi__Matrix_CasADi__SXElement___mul_no_alloc_nt
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_no_alloc_tn_TIC" c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_tn_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_tn'
+  :: SX -> Vector SXElement -> Vector SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_tn' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_tn_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_mul_no_alloc_tn' :: SX -> Vector SXElement -> Vector SXElement -> IO ()
+sx_mul_no_alloc_tn' = casADi__Matrix_CasADi__SXElement___mul_no_alloc_tn'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nn_TIC" c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nn_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_nn'
+  :: SX -> Vector SXElement -> Vector SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___mul_no_alloc_nn' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___mul_no_alloc_nn_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_mul_no_alloc_nn' :: SX -> Vector SXElement -> Vector SXElement -> IO ()
+sx_mul_no_alloc_nn' = casADi__Matrix_CasADi__SXElement___mul_no_alloc_nn'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___quad_form" c_CasADi__Matrix_CasADi__SXElement___quad_form
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> IO (Ptr SXElement')
+casADi__Matrix_CasADi__SXElement___quad_form
+  :: SX -> Vector SXElement -> IO SXElement
+casADi__Matrix_CasADi__SXElement___quad_form x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___quad_form x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_quad_form :: SX -> Vector SXElement -> IO SXElement
+sx_quad_form = casADi__Matrix_CasADi__SXElement___quad_form
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___trans" c_CasADi__Matrix_CasADi__SXElement___trans
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___trans
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___trans x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___trans x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]   Transpose the
+>matrix.
+-}
+sx_trans :: SXClass a => a -> IO SX
+sx_trans x = casADi__Matrix_CasADi__SXElement___trans (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sin" c_CasADi__Matrix_CasADi__SXElement___sin
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___sin
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___sin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sin x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_sin :: SXClass a => a -> IO SX
+sx_sin x = casADi__Matrix_CasADi__SXElement___sin (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___cos" c_CasADi__Matrix_CasADi__SXElement___cos
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___cos
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___cos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___cos x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_cos :: SXClass a => a -> IO SX
+sx_cos x = casADi__Matrix_CasADi__SXElement___cos (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___tan" c_CasADi__Matrix_CasADi__SXElement___tan
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___tan
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___tan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___tan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_tan :: SXClass a => a -> IO SX
+sx_tan x = casADi__Matrix_CasADi__SXElement___tan (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arcsin" c_CasADi__Matrix_CasADi__SXElement___arcsin
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arcsin
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arcsin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___arcsin x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arcsin :: SXClass a => a -> IO SX
+sx_arcsin x = casADi__Matrix_CasADi__SXElement___arcsin (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arccos" c_CasADi__Matrix_CasADi__SXElement___arccos
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arccos
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arccos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___arccos x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arccos :: SXClass a => a -> IO SX
+sx_arccos x = casADi__Matrix_CasADi__SXElement___arccos (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arctan" c_CasADi__Matrix_CasADi__SXElement___arctan
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arctan
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arctan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___arctan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arctan :: SXClass a => a -> IO SX
+sx_arctan x = casADi__Matrix_CasADi__SXElement___arctan (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___exp" c_CasADi__Matrix_CasADi__SXElement___exp
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___exp
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___exp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___exp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_exp :: SXClass a => a -> IO SX
+sx_exp x = casADi__Matrix_CasADi__SXElement___exp (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___log" c_CasADi__Matrix_CasADi__SXElement___log
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___log
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___log x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___log x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_log :: SXClass a => a -> IO SX
+sx_log x = casADi__Matrix_CasADi__SXElement___log (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sqrt" c_CasADi__Matrix_CasADi__SXElement___sqrt
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___sqrt
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___sqrt x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sqrt x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_sqrt :: SXClass a => a -> IO SX
+sx_sqrt x = casADi__Matrix_CasADi__SXElement___sqrt (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___floor" c_CasADi__Matrix_CasADi__SXElement___floor
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___floor
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___floor x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___floor x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_floor :: SXClass a => a -> IO SX
+sx_floor x = casADi__Matrix_CasADi__SXElement___floor (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___ceil" c_CasADi__Matrix_CasADi__SXElement___ceil
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___ceil
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___ceil x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___ceil x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_ceil :: SXClass a => a -> IO SX
+sx_ceil x = casADi__Matrix_CasADi__SXElement___ceil (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___fabs" c_CasADi__Matrix_CasADi__SXElement___fabs
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___fabs
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___fabs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___fabs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_fabs :: SXClass a => a -> IO SX
+sx_fabs x = casADi__Matrix_CasADi__SXElement___fabs (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sign" c_CasADi__Matrix_CasADi__SXElement___sign
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___sign
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___sign x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sign x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_sign :: SXClass a => a -> IO SX
+sx_sign x = casADi__Matrix_CasADi__SXElement___sign (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement_____copysign__" c_CasADi__Matrix_CasADi__SXElement_____copysign__
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement_____copysign__
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement_____copysign__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement_____copysign__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx___copysign__ :: SXClass a => a -> SX -> IO SX
+sx___copysign__ x = casADi__Matrix_CasADi__SXElement_____copysign__ (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___erfinv" c_CasADi__Matrix_CasADi__SXElement___erfinv
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___erfinv
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___erfinv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___erfinv x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_erfinv :: SXClass a => a -> IO SX
+sx_erfinv x = casADi__Matrix_CasADi__SXElement___erfinv (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___fmin" c_CasADi__Matrix_CasADi__SXElement___fmin
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___fmin
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___fmin x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___fmin x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_fmin :: SXClass a => a -> SX -> IO SX
+sx_fmin x = casADi__Matrix_CasADi__SXElement___fmin (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___fmax" c_CasADi__Matrix_CasADi__SXElement___fmax
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___fmax
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___fmax x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___fmax x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_fmax :: SXClass a => a -> SX -> IO SX
+sx_fmax x = casADi__Matrix_CasADi__SXElement___fmax (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___erf" c_CasADi__Matrix_CasADi__SXElement___erf
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___erf
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___erf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___erf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_erf :: SXClass a => a -> IO SX
+sx_erf x = casADi__Matrix_CasADi__SXElement___erf (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sinh" c_CasADi__Matrix_CasADi__SXElement___sinh
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___sinh
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___sinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sinh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_sinh :: SXClass a => a -> IO SX
+sx_sinh x = casADi__Matrix_CasADi__SXElement___sinh (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___cosh" c_CasADi__Matrix_CasADi__SXElement___cosh
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___cosh
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___cosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___cosh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_cosh :: SXClass a => a -> IO SX
+sx_cosh x = casADi__Matrix_CasADi__SXElement___cosh (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___tanh" c_CasADi__Matrix_CasADi__SXElement___tanh
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___tanh
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___tanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___tanh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_tanh :: SXClass a => a -> IO SX
+sx_tanh x = casADi__Matrix_CasADi__SXElement___tanh (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arcsinh" c_CasADi__Matrix_CasADi__SXElement___arcsinh
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arcsinh
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arcsinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___arcsinh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arcsinh :: SXClass a => a -> IO SX
+sx_arcsinh x = casADi__Matrix_CasADi__SXElement___arcsinh (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arccosh" c_CasADi__Matrix_CasADi__SXElement___arccosh
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arccosh
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arccosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___arccosh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arccosh :: SXClass a => a -> IO SX
+sx_arccosh x = casADi__Matrix_CasADi__SXElement___arccosh (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arctanh" c_CasADi__Matrix_CasADi__SXElement___arctanh
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arctanh
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arctanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___arctanh x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arctanh :: SXClass a => a -> IO SX
+sx_arctanh x = casADi__Matrix_CasADi__SXElement___arctanh (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___arctan2" c_CasADi__Matrix_CasADi__SXElement___arctan2
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___arctan2
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___arctan2 x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___arctan2 x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_arctan2 :: SXClass a => a -> SX -> IO SX
+sx_arctan2 x = casADi__Matrix_CasADi__SXElement___arctan2 (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___log10" c_CasADi__Matrix_CasADi__SXElement___log10
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___log10
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___log10 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___log10 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations defined
+>in the standard namespace for unambigous access and Numpy compatibility.
+-}
+sx_log10 :: SXClass a => a -> IO SX
+sx_log10 x = casADi__Matrix_CasADi__SXElement___log10 (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___printme" c_CasADi__Matrix_CasADi__SXElement___printme
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___printme
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___printme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___printme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_printme :: SXClass a => a -> SX -> IO SX
+sx_printme x = casADi__Matrix_CasADi__SXElement___printme (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___logic_not" c_CasADi__Matrix_CasADi__SXElement___logic_not
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___logic_not
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___logic_not x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___logic_not x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_logic_not :: SXClass a => a -> IO SX
+sx_logic_not x = casADi__Matrix_CasADi__SXElement___logic_not (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___logic_and" c_CasADi__Matrix_CasADi__SXElement___logic_and
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___logic_and
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___logic_and x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___logic_and x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_logic_and :: SXClass a => a -> SX -> IO SX
+sx_logic_and x = casADi__Matrix_CasADi__SXElement___logic_and (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___logic_or" c_CasADi__Matrix_CasADi__SXElement___logic_or
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___logic_or
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___logic_or x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___logic_or x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_logic_or :: SXClass a => a -> SX -> IO SX
+sx_logic_or x = casADi__Matrix_CasADi__SXElement___logic_or (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___if_else_zero" c_CasADi__Matrix_CasADi__SXElement___if_else_zero
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___if_else_zero
+  :: SX -> SX -> IO SX
+casADi__Matrix_CasADi__SXElement___if_else_zero x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___if_else_zero x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Operations
+>defined in the standard namespace for unambigous access and Numpy
+>compatibility.
+-}
+sx_if_else_zero :: SXClass a => a -> SX -> IO SX
+sx_if_else_zero x = casADi__Matrix_CasADi__SXElement___if_else_zero (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint" c_CasADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint
+  :: CLong -> IO ()
+casADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint
+  :: Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint x0' >>= wrapReturn
+
+-- classy wrapper
+sx_setMaxNumCallsInPrint :: Int -> IO ()
+sx_setMaxNumCallsInPrint = casADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint_TIC" c_CasADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint_TIC
+  :: IO ()
+casADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint'
+  :: IO ()
+casADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint'  =
+  c_CasADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint_TIC  >>= wrapReturn
+
+-- classy wrapper
+sx_setMaxNumCallsInPrint' :: IO ()
+sx_setMaxNumCallsInPrint' = casADi__Matrix_CasADi__SXElement___setMaxNumCallsInPrint'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___getMaxNumCallsInPrint" c_CasADi__Matrix_CasADi__SXElement___getMaxNumCallsInPrint
+  :: IO CLong
+casADi__Matrix_CasADi__SXElement___getMaxNumCallsInPrint
+  :: IO Int
+casADi__Matrix_CasADi__SXElement___getMaxNumCallsInPrint  =
+  c_CasADi__Matrix_CasADi__SXElement___getMaxNumCallsInPrint  >>= wrapReturn
+
+-- classy wrapper
+sx_getMaxNumCallsInPrint :: IO Int
+sx_getMaxNumCallsInPrint = casADi__Matrix_CasADi__SXElement___getMaxNumCallsInPrint
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth" c_CasADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth
+  :: CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth
+  :: Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth x0' >>= wrapReturn
+
+-- classy wrapper
+sx_setEqualityCheckingDepth :: Int -> IO ()
+sx_setEqualityCheckingDepth = casADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth_TIC" c_CasADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth_TIC
+  :: IO ()
+casADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth'
+  :: IO ()
+casADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth'  =
+  c_CasADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth_TIC  >>= wrapReturn
+
+-- classy wrapper
+sx_setEqualityCheckingDepth' :: IO ()
+sx_setEqualityCheckingDepth' = casADi__Matrix_CasADi__SXElement___setEqualityCheckingDepth'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___getEqualityCheckingDepth" c_CasADi__Matrix_CasADi__SXElement___getEqualityCheckingDepth
+  :: IO CInt
+casADi__Matrix_CasADi__SXElement___getEqualityCheckingDepth
+  :: IO Int
+casADi__Matrix_CasADi__SXElement___getEqualityCheckingDepth  =
+  c_CasADi__Matrix_CasADi__SXElement___getEqualityCheckingDepth  >>= wrapReturn
+
+-- classy wrapper
+sx_getEqualityCheckingDepth :: IO Int
+sx_getEqualityCheckingDepth = casADi__Matrix_CasADi__SXElement___getEqualityCheckingDepth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___className" c_CasADi__Matrix_CasADi__SXElement___className
+  :: IO (Ptr StdString')
+casADi__Matrix_CasADi__SXElement___className
+  :: IO String
+casADi__Matrix_CasADi__SXElement___className  =
+  c_CasADi__Matrix_CasADi__SXElement___className  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Printing.
+-}
+sx_className :: IO String
+sx_className = casADi__Matrix_CasADi__SXElement___className
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___printScalar_TIC" c_CasADi__Matrix_CasADi__SXElement___printScalar_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___printScalar'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___printScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___printScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_printScalar' :: SXClass a => a -> IO ()
+sx_printScalar' x = casADi__Matrix_CasADi__SXElement___printScalar' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___printVector_TIC" c_CasADi__Matrix_CasADi__SXElement___printVector_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___printVector'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___printVector' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___printVector_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_printVector' :: SXClass a => a -> IO ()
+sx_printVector' x = casADi__Matrix_CasADi__SXElement___printVector' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___printDense_TIC" c_CasADi__Matrix_CasADi__SXElement___printDense_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___printDense'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___printDense' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___printDense_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_printDense' :: SXClass a => a -> IO ()
+sx_printDense' x = casADi__Matrix_CasADi__SXElement___printDense' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___printSparse_TIC" c_CasADi__Matrix_CasADi__SXElement___printSparse_TIC
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___printSparse'
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___printSparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___printSparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_printSparse' :: SXClass a => a -> IO ()
+sx_printSparse' x = casADi__Matrix_CasADi__SXElement___printSparse' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___row" c_CasADi__Matrix_CasADi__SXElement___row
+  :: Ptr SX' -> CInt -> IO CInt
+casADi__Matrix_CasADi__SXElement___row
+  :: SX -> Int -> IO Int
+casADi__Matrix_CasADi__SXElement___row x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___row x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sx_row :: SXClass a => a -> Int -> IO Int
+sx_row x = casADi__Matrix_CasADi__SXElement___row (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___colind" c_CasADi__Matrix_CasADi__SXElement___colind
+  :: Ptr SX' -> CInt -> IO CInt
+casADi__Matrix_CasADi__SXElement___colind
+  :: SX -> Int -> IO Int
+casADi__Matrix_CasADi__SXElement___colind x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___colind x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sx_colind :: SXClass a => a -> Int -> IO Int
+sx_colind x = casADi__Matrix_CasADi__SXElement___colind (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___clear" c_CasADi__Matrix_CasADi__SXElement___clear
+  :: Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___clear
+  :: SX -> IO ()
+casADi__Matrix_CasADi__SXElement___clear x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___clear x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sx_clear :: SXClass a => a -> IO ()
+sx_clear x = casADi__Matrix_CasADi__SXElement___clear (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___resize" c_CasADi__Matrix_CasADi__SXElement___resize
+  :: Ptr SX' -> CInt -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___resize
+  :: SX -> Int -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___resize x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___resize x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sx_resize :: SXClass a => a -> Int -> Int -> IO ()
+sx_resize x = casADi__Matrix_CasADi__SXElement___resize (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___reserve" c_CasADi__Matrix_CasADi__SXElement___reserve
+  :: Ptr SX' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___reserve
+  :: SX -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___reserve x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___reserve x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sx_reserve :: SXClass a => a -> Int -> IO ()
+sx_reserve x = casADi__Matrix_CasADi__SXElement___reserve (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___reserve_TIC" c_CasADi__Matrix_CasADi__SXElement___reserve_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___reserve'
+  :: SX -> Int -> Int -> IO ()
+casADi__Matrix_CasADi__SXElement___reserve' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___reserve_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_reserve' :: SXClass a => a -> Int -> Int -> IO ()
+sx_reserve' x = casADi__Matrix_CasADi__SXElement___reserve' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___erase" c_CasADi__Matrix_CasADi__SXElement___erase
+  :: Ptr SX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___erase
+  :: SX -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___erase x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___erase x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Erase a submatrix
+>Erase rows and/or columns of a matrix.
+-}
+sx_erase :: SXClass a => a -> Vector Int -> Vector Int -> IO ()
+sx_erase x = casADi__Matrix_CasADi__SXElement___erase (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___remove" c_CasADi__Matrix_CasADi__SXElement___remove
+  :: Ptr SX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___remove
+  :: SX -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___remove x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___remove x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+> [INTERNAL]  Remove cols or
+>rows Rremove/delete rows and/or columns of a matrix.
+-}
+sx_remove :: SXClass a => a -> Vector Int -> Vector Int -> IO ()
+sx_remove x = casADi__Matrix_CasADi__SXElement___remove (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___enlarge" c_CasADi__Matrix_CasADi__SXElement___enlarge
+  :: Ptr SX' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Matrix_CasADi__SXElement___enlarge
+  :: SX -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+casADi__Matrix_CasADi__SXElement___enlarge x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Matrix_CasADi__SXElement___enlarge x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Enlarge matrix
+>Make the matrix larger by inserting empty rows and columns, keeping the
+>existing non-zeros.
+-}
+sx_enlarge :: SXClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+sx_enlarge x = casADi__Matrix_CasADi__SXElement___enlarge (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___data" c_CasADi__Matrix_CasADi__SXElement___data
+  :: Ptr SX' -> IO (Ptr (CppVec (Ptr SXElement')))
+casADi__Matrix_CasADi__SXElement___data
+  :: SX -> IO (Vector SXElement)
+casADi__Matrix_CasADi__SXElement___data x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___data x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::vector< DataType > & CasADi::Matrix< DataType >::data()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Access the non-zero elements.
+>
+>>  const std::vector< DataType > & CasADi::Matrix< DataType >::data() const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Const access the non-zero elements.
+-}
+sx_data :: SXClass a => a -> IO (Vector SXElement)
+sx_data x = casADi__Matrix_CasADi__SXElement___data (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___sparsityRef" c_CasADi__Matrix_CasADi__SXElement___sparsityRef
+  :: Ptr SX' -> IO (Ptr Sparsity')
+casADi__Matrix_CasADi__SXElement___sparsityRef
+  :: SX -> IO Sparsity
+casADi__Matrix_CasADi__SXElement___sparsityRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___sparsityRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Access the
+>sparsity, make a copy if there are multiple references to it.
+-}
+sx_sparsityRef :: SXClass a => a -> IO Sparsity
+sx_sparsityRef x = casADi__Matrix_CasADi__SXElement___sparsityRef (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___set" c_CasADi__Matrix_CasADi__SXElement___set
+  :: Ptr SX' -> Ptr SXElement' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___set
+  :: SX -> SXElement -> SparsityType -> IO ()
+casADi__Matrix_CasADi__SXElement___set x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___set x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::set(DataType val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, scalar.
+>
+>>  void CasADi::Matrix< DataType >::set(const std::vector< DataType > &val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, vector.
+>
+>>  void CasADi::Matrix< DataType >::set(const Matrix< DataType > &val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Set the non-zero elements, Matrix.
+>
+>>  void CasADi::Matrix< DataType >::set(const DataType *val, SparsityType sp=SPARSE)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Legacy - use setArray instead.
+-}
+sx_set :: SXClass a => a -> SXElement -> SparsityType -> IO ()
+sx_set x = casADi__Matrix_CasADi__SXElement___set (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___set_TIC" c_CasADi__Matrix_CasADi__SXElement___set_TIC
+  :: Ptr SX' -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___set'
+  :: SX -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___set' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___set_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_set' :: SXClass a => a -> SXElement -> IO ()
+sx_set' x = casADi__Matrix_CasADi__SXElement___set' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___get" c_CasADi__Matrix_CasADi__SXElement___get
+  :: Ptr SX' -> Ptr SXElement' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___get
+  :: SX -> SXElement -> SparsityType -> IO ()
+casADi__Matrix_CasADi__SXElement___get x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___get x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::Matrix< DataType >::get(DataType &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, scalar.
+>
+>>  void CasADi::Matrix< DataType >::get(std::vector< DataType > &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, vector.
+>
+>>  void CasADi::Matrix< DataType >::get(Matrix< DataType > &val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Get the non-zero elements, Matrix.
+>
+>>  void CasADi::Matrix< DataType >::get(DataType *val, SparsityType sp=SPARSE) const 
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Legacy - use getArray instead.
+-}
+sx_get :: SXClass a => a -> SXElement -> SparsityType -> IO ()
+sx_get x = casADi__Matrix_CasADi__SXElement___get (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___get_TIC" c_CasADi__Matrix_CasADi__SXElement___get_TIC
+  :: Ptr SX' -> Ptr SXElement' -> IO ()
+casADi__Matrix_CasADi__SXElement___get'
+  :: SX -> SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___get' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___get_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_get' :: SXClass a => a -> SXElement -> IO ()
+sx_get' x = casADi__Matrix_CasADi__SXElement___get' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___set_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___set''
+  :: SX -> Vector SXElement -> SparsityType -> IO ()
+casADi__Matrix_CasADi__SXElement___set'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_set'' :: SXClass a => a -> Vector SXElement -> SparsityType -> IO ()
+sx_set'' x = casADi__Matrix_CasADi__SXElement___set'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> IO ()
+casADi__Matrix_CasADi__SXElement___set'''
+  :: SX -> Vector SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___set''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_set''' :: SXClass a => a -> Vector SXElement -> IO ()
+sx_set''' x = casADi__Matrix_CasADi__SXElement___set''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___get_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___get''
+  :: SX -> Vector SXElement -> SparsityType -> IO ()
+casADi__Matrix_CasADi__SXElement___get'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_get'' :: SXClass a => a -> Vector SXElement -> SparsityType -> IO ()
+sx_get'' x = casADi__Matrix_CasADi__SXElement___get'' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> IO ()
+casADi__Matrix_CasADi__SXElement___get'''
+  :: SX -> Vector SXElement -> IO ()
+casADi__Matrix_CasADi__SXElement___get''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_get''' :: SXClass a => a -> Vector SXElement -> IO ()
+sx_get''' x = casADi__Matrix_CasADi__SXElement___get''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___set''''
+  :: SX -> SX -> SparsityType -> IO ()
+casADi__Matrix_CasADi__SXElement___set'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_set'''' :: SXClass a => a -> SX -> SparsityType -> IO ()
+sx_set'''' x = casADi__Matrix_CasADi__SXElement___set'''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___set'''''
+  :: SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___set''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___set_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_set''''' :: SXClass a => a -> SX -> IO ()
+sx_set''''' x = casADi__Matrix_CasADi__SXElement___set''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___get''''
+  :: SX -> SX -> SparsityType -> IO ()
+casADi__Matrix_CasADi__SXElement___get'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_get'''' :: SXClass a => a -> SX -> SparsityType -> IO ()
+sx_get'''' x = casADi__Matrix_CasADi__SXElement___get'''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO ()
+casADi__Matrix_CasADi__SXElement___get'''''
+  :: SX -> SX -> IO ()
+casADi__Matrix_CasADi__SXElement___get''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___get_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_get''''' :: SXClass a => a -> SX -> IO ()
+sx_get''''' x = casADi__Matrix_CasADi__SXElement___get''''' (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___triplet" c_CasADi__Matrix_CasADi__SXElement___triplet
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec (Ptr SXElement')) -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___triplet
+  :: Vector Int -> Vector Int -> Vector SXElement -> IO SX
+casADi__Matrix_CasADi__SXElement___triplet x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___triplet x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sx_triplet :: Vector Int -> Vector Int -> Vector SXElement -> IO SX
+sx_triplet = casADi__Matrix_CasADi__SXElement___triplet
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___triplet_TIC" c_CasADi__Matrix_CasADi__SXElement___triplet_TIC
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec (Ptr SXElement')) -> CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___triplet'
+  :: Vector Int -> Vector Int -> Vector SXElement -> Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___triplet' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Matrix_CasADi__SXElement___triplet_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+sx_triplet' :: Vector Int -> Vector Int -> Vector SXElement -> Int -> Int -> IO SX
+sx_triplet' = casADi__Matrix_CasADi__SXElement___triplet'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___inf" c_CasADi__Matrix_CasADi__SXElement___inf
+  :: Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___inf
+  :: Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___inf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___inf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix with
+>all inf
+-}
+sx_inf :: Sparsity -> IO SX
+sx_inf = casADi__Matrix_CasADi__SXElement___inf
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___inf_TIC" c_CasADi__Matrix_CasADi__SXElement___inf_TIC
+  :: CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___inf'
+  :: Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___inf' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___inf_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_inf' :: Int -> Int -> IO SX
+sx_inf' = casADi__Matrix_CasADi__SXElement___inf'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___inf_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___inf_TIC_TIC
+  :: CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___inf''
+  :: Int -> IO SX
+casADi__Matrix_CasADi__SXElement___inf'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___inf_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_inf'' :: Int -> IO SX
+sx_inf'' = casADi__Matrix_CasADi__SXElement___inf''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___inf_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___inf_TIC_TIC_TIC
+  :: IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___inf'''
+  :: IO SX
+casADi__Matrix_CasADi__SXElement___inf'''  =
+  c_CasADi__Matrix_CasADi__SXElement___inf_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+sx_inf''' :: IO SX
+sx_inf''' = casADi__Matrix_CasADi__SXElement___inf'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nan" c_CasADi__Matrix_CasADi__SXElement___nan
+  :: Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___nan
+  :: Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___nan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___nan x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix with
+>all nan
+-}
+sx_nan :: Sparsity -> IO SX
+sx_nan = casADi__Matrix_CasADi__SXElement___nan
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nan_TIC" c_CasADi__Matrix_CasADi__SXElement___nan_TIC
+  :: CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___nan'
+  :: Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___nan' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___nan_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_nan' :: Int -> Int -> IO SX
+sx_nan' = casADi__Matrix_CasADi__SXElement___nan'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nan_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___nan_TIC_TIC
+  :: CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___nan''
+  :: Int -> IO SX
+casADi__Matrix_CasADi__SXElement___nan'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___nan_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx_nan'' :: Int -> IO SX
+sx_nan'' = casADi__Matrix_CasADi__SXElement___nan''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___nan_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___nan_TIC_TIC_TIC
+  :: IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___nan'''
+  :: IO SX
+casADi__Matrix_CasADi__SXElement___nan'''  =
+  c_CasADi__Matrix_CasADi__SXElement___nan_TIC_TIC_TIC  >>= wrapReturn
+
+-- classy wrapper
+sx_nan''' :: IO SX
+sx_nan''' = casADi__Matrix_CasADi__SXElement___nan'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___repmat" c_CasADi__Matrix_CasADi__SXElement___repmat
+  :: Ptr SXElement' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___repmat
+  :: SXElement -> Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___repmat x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___repmat x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  create a matrix
+>by repeating an existing matrix
+-}
+sx_repmat :: SXElement -> Sparsity -> IO SX
+sx_repmat = casADi__Matrix_CasADi__SXElement___repmat
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___repmat_TIC" c_CasADi__Matrix_CasADi__SXElement___repmat_TIC
+  :: Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___repmat'
+  :: SX -> Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___repmat' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___repmat_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_repmat' :: SX -> Sparsity -> IO SX
+sx_repmat' = casADi__Matrix_CasADi__SXElement___repmat'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___repmat_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___repmat_TIC_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___repmat''
+  :: SX -> Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___repmat'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___repmat_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx_repmat'' :: SX -> Int -> Int -> IO SX
+sx_repmat'' = casADi__Matrix_CasADi__SXElement___repmat''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___repmat_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___repmat_TIC_TIC_TIC
+  :: Ptr SX' -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___repmat'''
+  :: SX -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___repmat''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___repmat_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx_repmat''' :: SX -> Int -> IO SX
+sx_repmat''' = casADi__Matrix_CasADi__SXElement___repmat'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___eye" c_CasADi__Matrix_CasADi__SXElement___eye
+  :: CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___eye
+  :: Int -> IO SX
+casADi__Matrix_CasADi__SXElement___eye x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___eye x0' >>= wrapReturn
+
+-- classy wrapper
+sx_eye :: Int -> IO SX
+sx_eye = casADi__Matrix_CasADi__SXElement___eye
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isRegular" c_CasADi__Matrix_CasADi__SXElement___isRegular
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isRegular
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isRegular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isRegular x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Checks if
+>expression does not contain NaN or Inf.
+-}
+sx_isRegular :: SXClass a => a -> IO Bool
+sx_isRegular x = casADi__Matrix_CasADi__SXElement___isRegular (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isSmooth" c_CasADi__Matrix_CasADi__SXElement___isSmooth
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isSmooth
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isSmooth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isSmooth x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>smooth.
+-}
+sx_isSmooth :: SXClass a => a -> IO Bool
+sx_isSmooth x = casADi__Matrix_CasADi__SXElement___isSmooth (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isSymbolic" c_CasADi__Matrix_CasADi__SXElement___isSymbolic
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isSymbolic
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isSymbolic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isSymbolic x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if
+>symbolic (Dense) Sparse matrices invariable return false.
+-}
+sx_isSymbolic :: SXClass a => a -> IO Bool
+sx_isSymbolic x = casADi__Matrix_CasADi__SXElement___isSymbolic (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isSymbolicSparse" c_CasADi__Matrix_CasADi__SXElement___isSymbolicSparse
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isSymbolicSparse
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isSymbolicSparse x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isSymbolicSparse x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check
+>if symbolic Sparse matrices can return true if all non-zero elements are
+>symbolic.
+-}
+sx_isSymbolicSparse :: SXClass a => a -> IO Bool
+sx_isSymbolicSparse x = casADi__Matrix_CasADi__SXElement___isSymbolicSparse (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isConstant" c_CasADi__Matrix_CasADi__SXElement___isConstant
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isConstant
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isConstant x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isConstant x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>matrix is constant (note that false negative answers are possible)
+-}
+sx_isConstant :: SXClass a => a -> IO Bool
+sx_isConstant x = casADi__Matrix_CasADi__SXElement___isConstant (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isInteger" c_CasADi__Matrix_CasADi__SXElement___isInteger
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isInteger
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isInteger x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isInteger x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if the
+>matrix is integer-valued (note that false negative answers are possible)
+-}
+sx_isInteger :: SXClass a => a -> IO Bool
+sx_isInteger x = casADi__Matrix_CasADi__SXElement___isInteger (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isZero" c_CasADi__Matrix_CasADi__SXElement___isZero
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isZero
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isZero x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is 0 (note that false negative answers are possible)
+-}
+sx_isZero :: SXClass a => a -> IO Bool
+sx_isZero x = casADi__Matrix_CasADi__SXElement___isZero (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isOne" c_CasADi__Matrix_CasADi__SXElement___isOne
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isOne
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is 1 (note that false negative answers are possible)
+-}
+sx_isOne :: SXClass a => a -> IO Bool
+sx_isOne x = casADi__Matrix_CasADi__SXElement___isOne (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isMinusOne" c_CasADi__Matrix_CasADi__SXElement___isMinusOne
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isMinusOne
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isMinusOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isMinusOne x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is -1 (note that false negative answers are possible)
+-}
+sx_isMinusOne :: SXClass a => a -> IO Bool
+sx_isMinusOne x = casADi__Matrix_CasADi__SXElement___isMinusOne (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isIdentity" c_CasADi__Matrix_CasADi__SXElement___isIdentity
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isIdentity
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isIdentity x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___isIdentity x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  check if the
+>matrix is an identity matrix (note that false negative answers are possible)
+-}
+sx_isIdentity :: SXClass a => a -> IO Bool
+sx_isIdentity x = casADi__Matrix_CasADi__SXElement___isIdentity (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___isEqual" c_CasADi__Matrix_CasADi__SXElement___isEqual
+  :: Ptr SX' -> Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___isEqual
+  :: SX -> SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___isEqual x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___isEqual x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if two
+>expressions are equal May give false negatives.
+>
+>Note: does not work when CasadiOptions.setSimplificationOnTheFly(False) was
+>called
+-}
+sx_isEqual :: SXClass a => a -> SX -> IO Bool
+sx_isEqual x = casADi__Matrix_CasADi__SXElement___isEqual (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___hasNonStructuralZeros" c_CasADi__Matrix_CasADi__SXElement___hasNonStructuralZeros
+  :: Ptr SX' -> IO CInt
+casADi__Matrix_CasADi__SXElement___hasNonStructuralZeros
+  :: SX -> IO Bool
+casADi__Matrix_CasADi__SXElement___hasNonStructuralZeros x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___hasNonStructuralZeros x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Check if the matrix has any zero entries which are not structural zeros.
+-}
+sx_hasNonStructuralZeros :: SXClass a => a -> IO Bool
+sx_hasNonStructuralZeros x = casADi__Matrix_CasADi__SXElement___hasNonStructuralZeros (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___getValue" c_CasADi__Matrix_CasADi__SXElement___getValue
+  :: Ptr SX' -> IO CDouble
+casADi__Matrix_CasADi__SXElement___getValue
+  :: SX -> IO Double
+casADi__Matrix_CasADi__SXElement___getValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___getValue x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get double
+>value (only if constant)
+-}
+sx_getValue :: SXClass a => a -> IO Double
+sx_getValue x = casADi__Matrix_CasADi__SXElement___getValue (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___getName" c_CasADi__Matrix_CasADi__SXElement___getName
+  :: Ptr SX' -> IO (Ptr StdString')
+casADi__Matrix_CasADi__SXElement___getName
+  :: SX -> IO String
+casADi__Matrix_CasADi__SXElement___getName x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___getName x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get name (only
+>if symbolic scalar)
+-}
+sx_getName :: SXClass a => a -> IO String
+sx_getName x = casADi__Matrix_CasADi__SXElement___getName (castSX x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setPrecision" c_CasADi__Matrix_CasADi__SXElement___setPrecision
+  :: CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setPrecision
+  :: Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setPrecision x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___setPrecision x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+sx_setPrecision :: Int -> IO ()
+sx_setPrecision = casADi__Matrix_CasADi__SXElement___setPrecision
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setWidth" c_CasADi__Matrix_CasADi__SXElement___setWidth
+  :: CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setWidth
+  :: Int -> IO ()
+casADi__Matrix_CasADi__SXElement___setWidth x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___setWidth x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+sx_setWidth :: Int -> IO ()
+sx_setWidth = casADi__Matrix_CasADi__SXElement___setWidth
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___setScientific" c_CasADi__Matrix_CasADi__SXElement___setScientific
+  :: CInt -> IO ()
+casADi__Matrix_CasADi__SXElement___setScientific
+  :: Bool -> IO ()
+casADi__Matrix_CasADi__SXElement___setScientific x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___setScientific x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the 'precision, width & scientific' used in printing and serializing to
+>streams.
+-}
+sx_setScientific :: Bool -> IO ()
+sx_setScientific = casADi__Matrix_CasADi__SXElement___setScientific
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX" c_CasADi__Matrix_CasADi__SXElement___SX
+  :: IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX
+  :: IO SX
+casADi__Matrix_CasADi__SXElement___SX  =
+  c_CasADi__Matrix_CasADi__SXElement___SX  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol)
+>
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol, const DataType &val)
+>
+>>  CasADi::Matrix< DataType >::Matrix(int nrow, int ncol, const std::vector< int > &colind, const std::vector< int > &row, const std::vector< DataType > &d=std::vector< DataType >())
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Sparsity &sparsity, const DataType &val=DataType(0))
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Sparse matrix with a given sparsity.
+>
+>>  CasADi::Matrix< DataType >::Matrix()
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>constructors
+>
+>empty 0-by-0 matrix constructor
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Matrix< DataType > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Copy constructor.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< std::vector< DataType > > &m)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Dense matrix constructor with data given as vector of vectors.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const Sparsity &sparsity, const std::vector< DataType > &d)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Sparse matrix with a given sparsity and non-zero elements.
+>
+>>  CasADi::Matrix< DataType >::Matrix(double val)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>This constructor enables implicit type conversion from a numeric type.
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< DataType > &x)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct from a vector.
+>
+>Thanks to implicit conversion, you can pretend that Matrix(const SXElement&
+>x); exists. Note: above remark applies only to C++, not python or octave
+>interfaces
+>
+>>  CasADi::Matrix< DataType >::Matrix(const std::vector< DataType > &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct dense matrix from a vector with the elements in column major
+>ordering.
+>
+>>  CasADi::Matrix< T >::Matrix(const Matrix< A > &x)
+>------------------------------------------------------------------------
+>
+>Create a matrix from a matrix with a different type of matrix entries
+>(assuming that the scalar conversion is valid)
+>
+>>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x)
+>------------------------------------------------------------------------
+>
+>Create an expression from an stl vector.
+>
+>>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>
+>Create a non-vector expression from an stl vector.
+-}
+sx :: IO SX
+sx = casADi__Matrix_CasADi__SXElement___SX
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'
+  :: SX -> IO SX
+casADi__Matrix_CasADi__SXElement___SX' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx' :: SX -> IO SX
+sx' = casADi__Matrix_CasADi__SXElement___SX'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC
+  :: Ptr (CppVec (Ptr (CppVec (Ptr SXElement')))) -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''
+  :: Vector (Vector SXElement) -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx'' :: Vector (Vector SXElement) -> IO SX
+sx'' = casADi__Matrix_CasADi__SXElement___SX''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr SXElement' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'''
+  :: Sparsity -> SXElement -> IO SX
+casADi__Matrix_CasADi__SXElement___SX''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx''' :: Sparsity -> SXElement -> IO SX
+sx''' = casADi__Matrix_CasADi__SXElement___SX'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''''
+  :: Sparsity -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx'''' :: Sparsity -> IO SX
+sx'''' = casADi__Matrix_CasADi__SXElement___SX''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec (Ptr SXElement')) -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'''''
+  :: Sparsity -> Vector SXElement -> IO SX
+casADi__Matrix_CasADi__SXElement___SX''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sx''''' :: Sparsity -> Vector SXElement -> IO SX
+sx''''' = casADi__Matrix_CasADi__SXElement___SX'''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC
+  :: CDouble -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''''''
+  :: Double -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx'''''' :: Double -> IO SX
+sx'''''' = casADi__Matrix_CasADi__SXElement___SX''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr SXElement')) -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'''''''
+  :: Vector SXElement -> IO SX
+casADi__Matrix_CasADi__SXElement___SX''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx''''''' :: Vector SXElement -> IO SX
+sx''''''' = casADi__Matrix_CasADi__SXElement___SX'''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr SXElement')) -> CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''''''''
+  :: Vector SXElement -> Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx'''''''' :: Vector SXElement -> Int -> Int -> IO SX
+sx'''''''' = casADi__Matrix_CasADi__SXElement___SX''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr IMatrix' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'''''''''
+  :: IMatrix -> IO SX
+casADi__Matrix_CasADi__SXElement___SX''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx''''''''' :: IMatrix -> IO SX
+sx''''''''' = casADi__Matrix_CasADi__SXElement___SX'''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''''''''''
+  :: Vector Int -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx'''''''''' :: Vector Int -> IO SX
+sx'''''''''' = casADi__Matrix_CasADi__SXElement___SX''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'''''''''''
+  :: Vector Int -> Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___SX''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx''''''''''' :: Vector Int -> Int -> Int -> IO SX
+sx''''''''''' = casADi__Matrix_CasADi__SXElement___SX'''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''''''''''''
+  :: DMatrix -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx'''''''''''' :: DMatrix -> IO SX
+sx'''''''''''' = casADi__Matrix_CasADi__SXElement___SX''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CDouble) -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX'''''''''''''
+  :: Vector Double -> IO SX
+casADi__Matrix_CasADi__SXElement___SX''''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sx''''''''''''' :: Vector Double -> IO SX
+sx''''''''''''' = casADi__Matrix_CasADi__SXElement___SX'''''''''''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CDouble) -> CInt -> CInt -> IO (Ptr SX')
+casADi__Matrix_CasADi__SXElement___SX''''''''''''''
+  :: Vector Double -> Int -> Int -> IO SX
+casADi__Matrix_CasADi__SXElement___SX'''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Matrix_CasADi__SXElement___SX_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sx'''''''''''''' :: Vector Double -> Int -> Int -> IO SX
+sx'''''''''''''' = casADi__Matrix_CasADi__SXElement___SX''''''''''''''
 
diff --git a/Casadi/Wrappers/Classes/SXElement.hs b/Casadi/Wrappers/Classes/SXElement.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SXElement.hs
@@ -0,0 +1,1570 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SXElement
+       (
+         SXElement,
+         SXElementClass(..),
+         sxElement,
+         sxElement',
+         sxElement___add__,
+         sxElement___constpow__,
+         sxElement___copysign__,
+         sxElement___copysign__',
+         sxElement___div__,
+         sxElement___eq__,
+         sxElement___hash__,
+         sxElement___le__,
+         sxElement___lt__,
+         sxElement___mpower__,
+         sxElement___mrdivide__,
+         sxElement___mul__,
+         sxElement___ne__,
+         sxElement___nonzero__,
+         sxElement___pow__,
+         sxElement___sub__,
+         sxElement___truediv__,
+         sxElement_arccos,
+         sxElement_arccosh,
+         sxElement_arcsin,
+         sxElement_arcsinh,
+         sxElement_arctan,
+         sxElement_arctan2,
+         sxElement_arctan2',
+         sxElement_arctanh,
+         sxElement_assignIfDuplicate,
+         sxElement_assignIfDuplicate',
+         sxElement_binary,
+         sxElement_ceil,
+         sxElement_constpow,
+         sxElement_constpow',
+         sxElement_cos,
+         sxElement_cosh,
+         sxElement_erf,
+         sxElement_erfinv,
+         sxElement_exp,
+         sxElement_fabs,
+         sxElement_floor,
+         sxElement_fmax,
+         sxElement_fmax',
+         sxElement_fmin,
+         sxElement_fmin',
+         sxElement_getDep,
+         sxElement_getDep',
+         sxElement_getIntValue,
+         sxElement_getNdeps,
+         sxElement_getOp,
+         sxElement_getTemp,
+         sxElement_getValue,
+         sxElement_hasDep,
+         sxElement_if_else_zero,
+         sxElement_inv,
+         sxElement_isAlmostZero,
+         sxElement_isCommutative,
+         sxElement_isConstant,
+         sxElement_isDoubled,
+         sxElement_isEqual,
+         sxElement_isEqual',
+         sxElement_isInf,
+         sxElement_isInteger,
+         sxElement_isLeaf,
+         sxElement_isMinusInf,
+         sxElement_isMinusOne,
+         sxElement_isNan,
+         sxElement_isNonNegative,
+         sxElement_isNull,
+         sxElement_isOne,
+         sxElement_isOp,
+         sxElement_isRegular,
+         sxElement_isSymbolic,
+         sxElement_isZero,
+         sxElement_log,
+         sxElement_log10,
+         sxElement_logic_and,
+         sxElement_logic_not,
+         sxElement_logic_or,
+         sxElement_mark,
+         sxElement_marked,
+         sxElement_mul,
+         sxElement_operator_minus,
+         sxElement_printme,
+         sxElement_setTemp,
+         sxElement_sign,
+         sxElement_sin,
+         sxElement_sinh,
+         sxElement_sq,
+         sxElement_sqrt,
+         sxElement_sym,
+         sxElement_tan,
+         sxElement_tanh,
+         sxElement_trans,
+         sxElement_unary,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__sym" c_CasADi__SXElement__sym
+  :: Ptr StdString' -> IO (Ptr SXElement')
+casADi__SXElement__sym
+  :: String -> IO SXElement
+casADi__SXElement__sym x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__sym x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_sym :: String -> IO SXElement
+sxElement_sym = casADi__SXElement__sym
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__binary" c_CasADi__SXElement__binary
+  :: CInt -> Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__binary
+  :: Int -> SXElement -> SXElement -> IO SXElement
+casADi__SXElement__binary x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXElement__binary x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxElement_binary :: Int -> SXElement -> SXElement -> IO SXElement
+sxElement_binary = casADi__SXElement__binary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__unary" c_CasADi__SXElement__unary
+  :: CInt -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__unary
+  :: Int -> SXElement -> IO SXElement
+casADi__SXElement__unary x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__unary x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_unary :: Int -> SXElement -> IO SXElement
+sxElement_unary = casADi__SXElement__unary
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____nonzero__" c_CasADi__SXElement____nonzero__
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement____nonzero__
+  :: SXElement -> IO Bool
+casADi__SXElement____nonzero__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement____nonzero__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check the truth value of this node Introduced to catch bool(x) situations in
+>python.
+-}
+sxElement___nonzero__ :: SXElementClass a => a -> IO Bool
+sxElement___nonzero__ x = casADi__SXElement____nonzero__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isLeaf" c_CasADi__SXElement__isLeaf
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isLeaf
+  :: SXElement -> IO Bool
+casADi__SXElement__isLeaf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isLeaf x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>check if this SXElement is a leaf of the SX graph
+>
+>An SXElement qualifies as leaf when it has no dependencies.
+-}
+sxElement_isLeaf :: SXElementClass a => a -> IO Bool
+sxElement_isLeaf x = casADi__SXElement__isLeaf (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isConstant" c_CasADi__SXElement__isConstant
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isConstant
+  :: SXElement -> IO Bool
+casADi__SXElement__isConstant x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isConstant x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isConstant :: SXElementClass a => a -> IO Bool
+sxElement_isConstant x = casADi__SXElement__isConstant (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isInteger" c_CasADi__SXElement__isInteger
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isInteger
+  :: SXElement -> IO Bool
+casADi__SXElement__isInteger x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isInteger x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isInteger :: SXElementClass a => a -> IO Bool
+sxElement_isInteger x = casADi__SXElement__isInteger (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isSymbolic" c_CasADi__SXElement__isSymbolic
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isSymbolic
+  :: SXElement -> IO Bool
+casADi__SXElement__isSymbolic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isSymbolic x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isSymbolic :: SXElementClass a => a -> IO Bool
+sxElement_isSymbolic x = casADi__SXElement__isSymbolic (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__hasDep" c_CasADi__SXElement__hasDep
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__hasDep
+  :: SXElement -> IO Bool
+casADi__SXElement__hasDep x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__hasDep x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_hasDep :: SXElementClass a => a -> IO Bool
+sxElement_hasDep x = casADi__SXElement__hasDep (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isCommutative" c_CasADi__SXElement__isCommutative
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isCommutative
+  :: SXElement -> IO Bool
+casADi__SXElement__isCommutative x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isCommutative x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check wether a binary SXElement is commutative.
+-}
+sxElement_isCommutative :: SXElementClass a => a -> IO Bool
+sxElement_isCommutative x = casADi__SXElement__isCommutative (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isZero" c_CasADi__SXElement__isZero
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isZero
+  :: SXElement -> IO Bool
+casADi__SXElement__isZero x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isZero x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isZero :: SXElementClass a => a -> IO Bool
+sxElement_isZero x = casADi__SXElement__isZero (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isAlmostZero" c_CasADi__SXElement__isAlmostZero
+  :: Ptr SXElement' -> CDouble -> IO CInt
+casADi__SXElement__isAlmostZero
+  :: SXElement -> Double -> IO Bool
+casADi__SXElement__isAlmostZero x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__isAlmostZero x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isAlmostZero :: SXElementClass a => a -> Double -> IO Bool
+sxElement_isAlmostZero x = casADi__SXElement__isAlmostZero (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isOne" c_CasADi__SXElement__isOne
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isOne
+  :: SXElement -> IO Bool
+casADi__SXElement__isOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isOne x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isOne :: SXElementClass a => a -> IO Bool
+sxElement_isOne x = casADi__SXElement__isOne (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isMinusOne" c_CasADi__SXElement__isMinusOne
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isMinusOne
+  :: SXElement -> IO Bool
+casADi__SXElement__isMinusOne x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isMinusOne x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isMinusOne :: SXElementClass a => a -> IO Bool
+sxElement_isMinusOne x = casADi__SXElement__isMinusOne (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isNan" c_CasADi__SXElement__isNan
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isNan
+  :: SXElement -> IO Bool
+casADi__SXElement__isNan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isNan x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isNan :: SXElementClass a => a -> IO Bool
+sxElement_isNan x = casADi__SXElement__isNan (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isInf" c_CasADi__SXElement__isInf
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isInf
+  :: SXElement -> IO Bool
+casADi__SXElement__isInf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isInf x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isInf :: SXElementClass a => a -> IO Bool
+sxElement_isInf x = casADi__SXElement__isInf (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isMinusInf" c_CasADi__SXElement__isMinusInf
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isMinusInf
+  :: SXElement -> IO Bool
+casADi__SXElement__isMinusInf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isMinusInf x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isMinusInf :: SXElementClass a => a -> IO Bool
+sxElement_isMinusInf x = casADi__SXElement__isMinusInf (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getOp" c_CasADi__SXElement__getOp
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__getOp
+  :: SXElement -> IO Int
+casADi__SXElement__getOp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__getOp x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_getOp :: SXElementClass a => a -> IO Int
+sxElement_getOp x = casADi__SXElement__getOp (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isOp" c_CasADi__SXElement__isOp
+  :: Ptr SXElement' -> CInt -> IO CInt
+casADi__SXElement__isOp
+  :: SXElement -> Int -> IO Bool
+casADi__SXElement__isOp x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__isOp x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isOp :: SXElementClass a => a -> Int -> IO Bool
+sxElement_isOp x = casADi__SXElement__isOp (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isRegular" c_CasADi__SXElement__isRegular
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isRegular
+  :: SXElement -> IO Bool
+casADi__SXElement__isRegular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isRegular x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Checks if expression does not contain NaN or Inf.
+-}
+sxElement_isRegular :: SXElementClass a => a -> IO Bool
+sxElement_isRegular x = casADi__SXElement__isRegular (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isEqual" c_CasADi__SXElement__isEqual
+  :: Ptr SXElement' -> Ptr SXElement' -> CInt -> IO CInt
+casADi__SXElement__isEqual
+  :: SXElement -> SXElement -> Int -> IO Bool
+casADi__SXElement__isEqual x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXElement__isEqual x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if two nodes are equivalent up to a given depth. Depth=0 checks if the
+>expressions are identical, i.e. points to the same node.
+>
+>a = x*x b = x*x
+>
+>a.isEqual(b,0) will return false, but a.isEqual(b,1) will return true
+-}
+sxElement_isEqual :: SXElementClass a => a -> SXElement -> Int -> IO Bool
+sxElement_isEqual x = casADi__SXElement__isEqual (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isEqual_TIC" c_CasADi__SXElement__isEqual_TIC
+  :: Ptr SXElement' -> Ptr SXElement' -> IO CInt
+casADi__SXElement__isEqual'
+  :: SXElement -> SXElement -> IO Bool
+casADi__SXElement__isEqual' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__isEqual_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_isEqual' :: SXElementClass a => a -> SXElement -> IO Bool
+sxElement_isEqual' x = casADi__SXElement__isEqual' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isNonNegative" c_CasADi__SXElement__isNonNegative
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isNonNegative
+  :: SXElement -> IO Bool
+casADi__SXElement__isNonNegative x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isNonNegative x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if a value is always nonnegative (false negatives are allowed)
+-}
+sxElement_isNonNegative :: SXElementClass a => a -> IO Bool
+sxElement_isNonNegative x = casADi__SXElement__isNonNegative (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getValue" c_CasADi__SXElement__getValue
+  :: Ptr SXElement' -> IO CDouble
+casADi__SXElement__getValue
+  :: SXElement -> IO Double
+casADi__SXElement__getValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__getValue x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_getValue :: SXElementClass a => a -> IO Double
+sxElement_getValue x = casADi__SXElement__getValue (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getIntValue" c_CasADi__SXElement__getIntValue
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__getIntValue
+  :: SXElement -> IO Int
+casADi__SXElement__getIntValue x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__getIntValue x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_getIntValue :: SXElementClass a => a -> IO Int
+sxElement_getIntValue x = casADi__SXElement__getIntValue (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getDep" c_CasADi__SXElement__getDep
+  :: Ptr SXElement' -> CInt -> IO (Ptr SXElement')
+casADi__SXElement__getDep
+  :: SXElement -> Int -> IO SXElement
+casADi__SXElement__getDep x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__getDep x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_getDep :: SXElementClass a => a -> Int -> IO SXElement
+sxElement_getDep x = casADi__SXElement__getDep (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getDep_TIC" c_CasADi__SXElement__getDep_TIC
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__getDep'
+  :: SXElement -> IO SXElement
+casADi__SXElement__getDep' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__getDep_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_getDep' :: SXElementClass a => a -> IO SXElement
+sxElement_getDep' x = casADi__SXElement__getDep' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isDoubled" c_CasADi__SXElement__isDoubled
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isDoubled
+  :: SXElement -> IO Bool
+casADi__SXElement__isDoubled x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isDoubled x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is the sum of two equal expressions.
+-}
+sxElement_isDoubled :: SXElementClass a => a -> IO Bool
+sxElement_isDoubled x = casADi__SXElement__isDoubled (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getNdeps" c_CasADi__SXElement__getNdeps
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__getNdeps
+  :: SXElement -> IO Int
+casADi__SXElement__getNdeps x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__getNdeps x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of dependencies of a binary SXElement.
+-}
+sxElement_getNdeps :: SXElementClass a => a -> IO Int
+sxElement_getNdeps x = casADi__SXElement__getNdeps (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____hash__" c_CasADi__SXElement____hash__
+  :: Ptr SXElement' -> IO CLong
+casADi__SXElement____hash__
+  :: SXElement -> IO Int
+casADi__SXElement____hash__ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement____hash__ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns a number that is unique for a given SXNode. If the SXElement does
+>not point to any node, 0 is returned.
+-}
+sxElement___hash__ :: SXElementClass a => a -> IO Int
+sxElement___hash__ x = casADi__SXElement____hash__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__operator_minus" c_CasADi__SXElement__operator_minus
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__operator_minus
+  :: SXElement -> IO SXElement
+casADi__SXElement__operator_minus x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__operator_minus x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_operator_minus :: SXElementClass a => a -> IO SXElement
+sxElement_operator_minus x = casADi__SXElement__operator_minus (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____add__" c_CasADi__SXElement____add__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____add__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____add__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____add__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___add__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___add__ x = casADi__SXElement____add__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____sub__" c_CasADi__SXElement____sub__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____sub__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____sub__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____sub__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___sub__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___sub__ x = casADi__SXElement____sub__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____mul__" c_CasADi__SXElement____mul__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____mul__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____mul__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____mul__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___mul__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___mul__ x = casADi__SXElement____mul__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____div__" c_CasADi__SXElement____div__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____div__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____div__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____div__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___div__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___div__ x = casADi__SXElement____div__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____lt__" c_CasADi__SXElement____lt__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____lt__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____lt__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____lt__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___lt__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___lt__ x = casADi__SXElement____lt__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____le__" c_CasADi__SXElement____le__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____le__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____le__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____le__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___le__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___le__ x = casADi__SXElement____le__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____eq__" c_CasADi__SXElement____eq__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____eq__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____eq__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____eq__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___eq__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___eq__ x = casADi__SXElement____eq__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____ne__" c_CasADi__SXElement____ne__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____ne__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____ne__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____ne__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___ne__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___ne__ x = casADi__SXElement____ne__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____truediv__" c_CasADi__SXElement____truediv__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____truediv__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____truediv__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____truediv__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___truediv__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___truediv__ x = casADi__SXElement____truediv__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____pow__" c_CasADi__SXElement____pow__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____pow__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____pow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____pow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___pow__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___pow__ x = casADi__SXElement____pow__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____constpow__" c_CasADi__SXElement____constpow__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____constpow__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____constpow__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____constpow__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___constpow__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___constpow__ x = casADi__SXElement____constpow__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____mrdivide__" c_CasADi__SXElement____mrdivide__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____mrdivide__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____mrdivide__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____mrdivide__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___mrdivide__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___mrdivide__ x = casADi__SXElement____mrdivide__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____mpower__" c_CasADi__SXElement____mpower__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____mpower__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____mpower__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____mpower__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___mpower__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___mpower__ x = casADi__SXElement____mpower__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__trans" c_CasADi__SXElement__trans
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__trans
+  :: SXElement -> IO SXElement
+casADi__SXElement__trans x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__trans x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_trans :: SXElementClass a => a -> IO SXElement
+sxElement_trans x = casADi__SXElement__trans (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__mul" c_CasADi__SXElement__mul
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__mul
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__mul x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__mul x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>The following functions serves two purposes: Numpy compatibility and to
+>allow unambigous access.
+-}
+sxElement_mul :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_mul x = casADi__SXElement__mul (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__exp" c_CasADi__SXElement__exp
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__exp
+  :: SXElement -> IO SXElement
+casADi__SXElement__exp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__exp x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_exp :: SXElementClass a => a -> IO SXElement
+sxElement_exp x = casADi__SXElement__exp (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__log" c_CasADi__SXElement__log
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__log
+  :: SXElement -> IO SXElement
+casADi__SXElement__log x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__log x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_log :: SXElementClass a => a -> IO SXElement
+sxElement_log x = casADi__SXElement__log (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__sqrt" c_CasADi__SXElement__sqrt
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__sqrt
+  :: SXElement -> IO SXElement
+casADi__SXElement__sqrt x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__sqrt x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_sqrt :: SXElementClass a => a -> IO SXElement
+sxElement_sqrt x = casADi__SXElement__sqrt (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__sq" c_CasADi__SXElement__sq
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__sq
+  :: SXElement -> IO SXElement
+casADi__SXElement__sq x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__sq x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_sq :: SXElementClass a => a -> IO SXElement
+sxElement_sq x = casADi__SXElement__sq (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__sin" c_CasADi__SXElement__sin
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__sin
+  :: SXElement -> IO SXElement
+casADi__SXElement__sin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__sin x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_sin :: SXElementClass a => a -> IO SXElement
+sxElement_sin x = casADi__SXElement__sin (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__cos" c_CasADi__SXElement__cos
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__cos
+  :: SXElement -> IO SXElement
+casADi__SXElement__cos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__cos x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_cos :: SXElementClass a => a -> IO SXElement
+sxElement_cos x = casADi__SXElement__cos (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__tan" c_CasADi__SXElement__tan
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__tan
+  :: SXElement -> IO SXElement
+casADi__SXElement__tan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__tan x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_tan :: SXElementClass a => a -> IO SXElement
+sxElement_tan x = casADi__SXElement__tan (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arcsin" c_CasADi__SXElement__arcsin
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arcsin
+  :: SXElement -> IO SXElement
+casADi__SXElement__arcsin x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__arcsin x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arcsin :: SXElementClass a => a -> IO SXElement
+sxElement_arcsin x = casADi__SXElement__arcsin (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arccos" c_CasADi__SXElement__arccos
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arccos
+  :: SXElement -> IO SXElement
+casADi__SXElement__arccos x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__arccos x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arccos :: SXElementClass a => a -> IO SXElement
+sxElement_arccos x = casADi__SXElement__arccos (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arctan" c_CasADi__SXElement__arctan
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arctan
+  :: SXElement -> IO SXElement
+casADi__SXElement__arctan x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__arctan x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arctan :: SXElementClass a => a -> IO SXElement
+sxElement_arctan x = casADi__SXElement__arctan (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__floor" c_CasADi__SXElement__floor
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__floor
+  :: SXElement -> IO SXElement
+casADi__SXElement__floor x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__floor x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_floor :: SXElementClass a => a -> IO SXElement
+sxElement_floor x = casADi__SXElement__floor (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__ceil" c_CasADi__SXElement__ceil
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__ceil
+  :: SXElement -> IO SXElement
+casADi__SXElement__ceil x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__ceil x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_ceil :: SXElementClass a => a -> IO SXElement
+sxElement_ceil x = casADi__SXElement__ceil (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__erf" c_CasADi__SXElement__erf
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__erf
+  :: SXElement -> IO SXElement
+casADi__SXElement__erf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__erf x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_erf :: SXElementClass a => a -> IO SXElement
+sxElement_erf x = casADi__SXElement__erf (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__erfinv" c_CasADi__SXElement__erfinv
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__erfinv
+  :: SXElement -> IO SXElement
+casADi__SXElement__erfinv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__erfinv x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_erfinv :: SXElementClass a => a -> IO SXElement
+sxElement_erfinv x = casADi__SXElement__erfinv (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__fabs" c_CasADi__SXElement__fabs
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__fabs
+  :: SXElement -> IO SXElement
+casADi__SXElement__fabs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__fabs x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_fabs :: SXElementClass a => a -> IO SXElement
+sxElement_fabs x = casADi__SXElement__fabs (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__fmin" c_CasADi__SXElement__fmin
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__fmin
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__fmin x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__fmin x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_fmin :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_fmin x = casADi__SXElement__fmin (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__fmax" c_CasADi__SXElement__fmax
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__fmax
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__fmax x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__fmax x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_fmax :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_fmax x = casADi__SXElement__fmax (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__inv" c_CasADi__SXElement__inv
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__inv
+  :: SXElement -> IO SXElement
+casADi__SXElement__inv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__inv x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_inv :: SXElementClass a => a -> IO SXElement
+sxElement_inv x = casADi__SXElement__inv (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__sinh" c_CasADi__SXElement__sinh
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__sinh
+  :: SXElement -> IO SXElement
+casADi__SXElement__sinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__sinh x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_sinh :: SXElementClass a => a -> IO SXElement
+sxElement_sinh x = casADi__SXElement__sinh (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__cosh" c_CasADi__SXElement__cosh
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__cosh
+  :: SXElement -> IO SXElement
+casADi__SXElement__cosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__cosh x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_cosh :: SXElementClass a => a -> IO SXElement
+sxElement_cosh x = casADi__SXElement__cosh (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__tanh" c_CasADi__SXElement__tanh
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__tanh
+  :: SXElement -> IO SXElement
+casADi__SXElement__tanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__tanh x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_tanh :: SXElementClass a => a -> IO SXElement
+sxElement_tanh x = casADi__SXElement__tanh (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arcsinh" c_CasADi__SXElement__arcsinh
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arcsinh
+  :: SXElement -> IO SXElement
+casADi__SXElement__arcsinh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__arcsinh x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arcsinh :: SXElementClass a => a -> IO SXElement
+sxElement_arcsinh x = casADi__SXElement__arcsinh (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arccosh" c_CasADi__SXElement__arccosh
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arccosh
+  :: SXElement -> IO SXElement
+casADi__SXElement__arccosh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__arccosh x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arccosh :: SXElementClass a => a -> IO SXElement
+sxElement_arccosh x = casADi__SXElement__arccosh (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arctanh" c_CasADi__SXElement__arctanh
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arctanh
+  :: SXElement -> IO SXElement
+casADi__SXElement__arctanh x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__arctanh x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arctanh :: SXElementClass a => a -> IO SXElement
+sxElement_arctanh x = casADi__SXElement__arctanh (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arctan2" c_CasADi__SXElement__arctan2
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__arctan2
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__arctan2 x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__arctan2 x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arctan2 :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_arctan2 x = casADi__SXElement__arctan2 (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__log10" c_CasADi__SXElement__log10
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__log10
+  :: SXElement -> IO SXElement
+casADi__SXElement__log10 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__log10 x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_log10 :: SXElementClass a => a -> IO SXElement
+sxElement_log10 x = casADi__SXElement__log10 (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__printme" c_CasADi__SXElement__printme
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__printme
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__printme x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__printme x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_printme :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_printme x = casADi__SXElement__printme (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__sign" c_CasADi__SXElement__sign
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__sign
+  :: SXElement -> IO SXElement
+casADi__SXElement__sign x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__sign x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_sign :: SXElementClass a => a -> IO SXElement
+sxElement_sign x = casADi__SXElement__sign (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____copysign__" c_CasADi__SXElement____copysign__
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement____copysign__
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement____copysign__ x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____copysign__ x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___copysign__ :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement___copysign__ x = casADi__SXElement____copysign__ (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__constpow" c_CasADi__SXElement__constpow
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__constpow
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__constpow x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__constpow x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_constpow :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_constpow x = casADi__SXElement__constpow (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__logic_not" c_CasADi__SXElement__logic_not
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__logic_not
+  :: SXElement -> IO SXElement
+casADi__SXElement__logic_not x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__logic_not x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement_logic_not :: SXElementClass a => a -> IO SXElement
+sxElement_logic_not x = casADi__SXElement__logic_not (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__logic_and" c_CasADi__SXElement__logic_and
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__logic_and
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__logic_and x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__logic_and x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_logic_and :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_logic_and x = casADi__SXElement__logic_and (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__logic_or" c_CasADi__SXElement__logic_or
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__logic_or
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__logic_or x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__logic_or x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_logic_or :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_logic_or x = casADi__SXElement__logic_or (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__if_else_zero" c_CasADi__SXElement__if_else_zero
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+casADi__SXElement__if_else_zero
+  :: SXElement -> SXElement -> IO SXElement
+casADi__SXElement__if_else_zero x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__if_else_zero x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_if_else_zero :: SXElementClass a => a -> SXElement -> IO SXElement
+sxElement_if_else_zero x = casADi__SXElement__if_else_zero (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__fmin_TIC" c_CasADi__SXElement__fmin_TIC
+  :: Ptr SXElement' -> Ptr SX' -> IO (Ptr SX')
+casADi__SXElement__fmin'
+  :: SXElement -> SX -> IO SX
+casADi__SXElement__fmin' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__fmin_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_fmin' :: SXElementClass a => a -> SX -> IO SX
+sxElement_fmin' x = casADi__SXElement__fmin' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__fmax_TIC" c_CasADi__SXElement__fmax_TIC
+  :: Ptr SXElement' -> Ptr SX' -> IO (Ptr SX')
+casADi__SXElement__fmax'
+  :: SXElement -> SX -> IO SX
+casADi__SXElement__fmax' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__fmax_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_fmax' :: SXElementClass a => a -> SX -> IO SX
+sxElement_fmax' x = casADi__SXElement__fmax' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__constpow_TIC" c_CasADi__SXElement__constpow_TIC
+  :: Ptr SXElement' -> Ptr SX' -> IO (Ptr SX')
+casADi__SXElement__constpow'
+  :: SXElement -> SX -> IO SX
+casADi__SXElement__constpow' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__constpow_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_constpow' :: SXElementClass a => a -> SX -> IO SX
+sxElement_constpow' x = casADi__SXElement__constpow' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement____copysign___TIC" c_CasADi__SXElement____copysign___TIC
+  :: Ptr SXElement' -> Ptr SX' -> IO (Ptr SX')
+casADi__SXElement____copysign__'
+  :: SXElement -> SX -> IO SX
+casADi__SXElement____copysign__' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement____copysign___TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement___copysign__' :: SXElementClass a => a -> SX -> IO SX
+sxElement___copysign__' x = casADi__SXElement____copysign__' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__arctan2_TIC" c_CasADi__SXElement__arctan2_TIC
+  :: Ptr SXElement' -> Ptr SX' -> IO (Ptr SX')
+casADi__SXElement__arctan2'
+  :: SXElement -> SX -> IO SX
+casADi__SXElement__arctan2' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__arctan2_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_arctan2' :: SXElementClass a => a -> SX -> IO SX
+sxElement_arctan2' x = casADi__SXElement__arctan2' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__getTemp" c_CasADi__SXElement__getTemp
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__getTemp
+  :: SXElement -> IO Int
+casADi__SXElement__getTemp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__getTemp x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sxElement_getTemp :: SXElementClass a => a -> IO Int
+sxElement_getTemp x = casADi__SXElement__getTemp (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__setTemp" c_CasADi__SXElement__setTemp
+  :: Ptr SXElement' -> CInt -> IO ()
+casADi__SXElement__setTemp
+  :: SXElement -> Int -> IO ()
+casADi__SXElement__setTemp x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__setTemp x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sxElement_setTemp :: SXElementClass a => a -> Int -> IO ()
+sxElement_setTemp x = casADi__SXElement__setTemp (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__marked" c_CasADi__SXElement__marked
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__marked
+  :: SXElement -> IO Bool
+casADi__SXElement__marked x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__marked x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sxElement_marked :: SXElementClass a => a -> IO Bool
+sxElement_marked x = casADi__SXElement__marked (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__mark" c_CasADi__SXElement__mark
+  :: Ptr SXElement' -> IO ()
+casADi__SXElement__mark
+  :: SXElement -> IO ()
+casADi__SXElement__mark x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__mark x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL] 
+-}
+sxElement_mark :: SXElementClass a => a -> IO ()
+sxElement_mark x = casADi__SXElement__mark (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__assignIfDuplicate" c_CasADi__SXElement__assignIfDuplicate
+  :: Ptr SXElement' -> Ptr SXElement' -> CInt -> IO ()
+casADi__SXElement__assignIfDuplicate
+  :: SXElement -> SXElement -> Int -> IO ()
+casADi__SXElement__assignIfDuplicate x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXElement__assignIfDuplicate x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]
+>Assign to another expression, if a duplicate. Check for equality up to a
+>given depth.
+-}
+sxElement_assignIfDuplicate :: SXElementClass a => a -> SXElement -> Int -> IO ()
+sxElement_assignIfDuplicate x = casADi__SXElement__assignIfDuplicate (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__assignIfDuplicate_TIC" c_CasADi__SXElement__assignIfDuplicate_TIC
+  :: Ptr SXElement' -> Ptr SXElement' -> IO ()
+casADi__SXElement__assignIfDuplicate'
+  :: SXElement -> SXElement -> IO ()
+casADi__SXElement__assignIfDuplicate' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXElement__assignIfDuplicate_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxElement_assignIfDuplicate' :: SXElementClass a => a -> SXElement -> IO ()
+sxElement_assignIfDuplicate' x = casADi__SXElement__assignIfDuplicate' (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__isNull" c_CasADi__SXElement__isNull
+  :: Ptr SXElement' -> IO CInt
+casADi__SXElement__isNull
+  :: SXElement -> IO Bool
+casADi__SXElement__isNull x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__isNull x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>SXElement nodes are not allowed to be null.
+-}
+sxElement_isNull :: SXElementClass a => a -> IO Bool
+sxElement_isNull x = casADi__SXElement__isNull (castSXElement x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__SXElement" c_CasADi__SXElement__SXElement
+  :: IO (Ptr SXElement')
+casADi__SXElement__SXElement
+  :: IO SXElement
+casADi__SXElement__SXElement  =
+  c_CasADi__SXElement__SXElement  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SXElement::SXElement()
+>------------------------------------------------------------------------
+>
+>Default constructor (not-a-number) Object is initialised as not-a-number.
+>
+>>  CasADi::SXElement::SXElement(double val)
+>------------------------------------------------------------------------
+>
+>Numerical constant constructor.
+>
+>Parameters:
+>-----------
+>
+>val:  Numerical value
+>
+>>  CasADi::SXElement::SXElement(const std::string &name)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED] Replaced with SXElement::sym
+>
+>>  CasADi::SXElement::SXElement(SXNode *node, bool dummy)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Create an expression from a node: extra dummy argument to avoid
+>ambigousity for 0/NULL
+>
+>>  CasADi::SXElement::SXElement(const SXElement &scalar)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Copy constructor.
+-}
+sxElement :: IO SXElement
+sxElement = casADi__SXElement__SXElement
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXElement__SXElement_TIC" c_CasADi__SXElement__SXElement_TIC
+  :: CDouble -> IO (Ptr SXElement')
+casADi__SXElement__SXElement'
+  :: Double -> IO SXElement
+casADi__SXElement__SXElement' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXElement__SXElement_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sxElement' :: Double -> IO SXElement
+sxElement' = casADi__SXElement__SXElement'
+
diff --git a/Casadi/Wrappers/Classes/SXFunction.hs b/Casadi/Wrappers/Classes/SXFunction.hs
--- a/Casadi/Wrappers/Classes/SXFunction.hs
+++ b/Casadi/Wrappers/Classes/SXFunction.hs
@@ -9,9 +9,12 @@
        (
          SXFunction,
          SXFunctionClass(..),
+         sxFunction,
          sxFunction',
          sxFunction'',
          sxFunction''',
+         sxFunction_checkNode,
+         sxFunction_clearSymbolic,
          sxFunction_countNodes,
          sxFunction_getAlgorithmSize,
          sxFunction_getAtomicInputReal,
@@ -20,10 +23,41 @@
          sxFunction_getFree,
          sxFunction_getWorkSize,
          sxFunction_grad,
+         sxFunction_grad',
+         sxFunction_grad'',
+         sxFunction_grad''',
+         sxFunction_grad'''',
+         sxFunction_grad''''',
+         sxFunction_grad'''''',
          sxFunction_hess,
-         sxFunction_indexed_one_based,
-         sxFunction_indexed_zero_based,
+         sxFunction_hess',
+         sxFunction_hess'',
+         sxFunction_hess''',
+         sxFunction_hess'''',
+         sxFunction_hess''''',
+         sxFunction_hess'''''',
          sxFunction_jac,
+         sxFunction_jac',
+         sxFunction_jac'',
+         sxFunction_jac''',
+         sxFunction_jac'''',
+         sxFunction_jac''''',
+         sxFunction_jac'''''',
+         sxFunction_jac''''''',
+         sxFunction_jac'''''''',
+         sxFunction_jac''''''''',
+         sxFunction_jac'''''''''',
+         sxFunction_jac''''''''''',
+         sxFunction_jac'''''''''''',
+         sxFunction_jac''''''''''''',
+         sxFunction_jac'''''''''''''',
+         sxFunction_tang,
+         sxFunction_tang',
+         sxFunction_tang'',
+         sxFunction_tang''',
+         sxFunction_tang'''',
+         sxFunction_tang''''',
+         sxFunction_tang'''''',
        ) where
 
 
@@ -47,9 +81,9 @@
   show = unsafePerformIO . printableObject_getDescription
 -- direct wrapper
 foreign import ccall unsafe "CasADi__SXFunction__jac" c_CasADi__SXFunction__jac
-  :: Ptr SXFunction' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr SXMatrix')
+  :: Ptr SXFunction' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr SX')
 casADi__SXFunction__jac
-  :: SXFunction -> Int -> Int -> Bool -> Bool -> IO SXMatrix
+  :: SXFunction -> Int -> Int -> Bool -> Bool -> IO SX
 casADi__SXFunction__jac x0 x1 x2 x3 x4 =
   withMarshal x0 $ \x0' ->
   withMarshal x1 $ \x1' ->
@@ -64,15 +98,245 @@
 >
 >See:  CasADi::Jacobian for an AD approach
 -}
-sxFunction_jac :: SXFunctionClass a => a -> Int -> Int -> Bool -> Bool -> IO SXMatrix
+sxFunction_jac :: SXFunctionClass a => a -> Int -> Int -> Bool -> Bool -> IO SX
 sxFunction_jac x = casADi__SXFunction__jac (castSXFunction x)
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC" c_CasADi__SXFunction__jac_TIC
+  :: Ptr SXFunction' -> CInt -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac'
+  :: SXFunction -> Int -> Int -> Bool -> IO SX
+casADi__SXFunction__jac' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SXFunction__jac_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac' :: SXFunctionClass a => a -> Int -> Int -> Bool -> IO SX
+sxFunction_jac' x = casADi__SXFunction__jac' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac''
+  :: SXFunction -> Int -> Int -> IO SX
+casADi__SXFunction__jac'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__jac_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'' :: SXFunctionClass a => a -> Int -> Int -> IO SX
+sxFunction_jac'' x = casADi__SXFunction__jac'' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac'''
+  :: SXFunction -> Int -> IO SX
+casADi__SXFunction__jac''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac''' :: SXFunctionClass a => a -> Int -> IO SX
+sxFunction_jac''' x = casADi__SXFunction__jac''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> IO (Ptr SX')
+casADi__SXFunction__jac''''
+  :: SXFunction -> IO SX
+casADi__SXFunction__jac'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'''' :: SXFunctionClass a => a -> IO SX
+sxFunction_jac'''' x = casADi__SXFunction__jac'''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac'''''
+  :: SXFunction -> String -> Int -> Bool -> Bool -> IO SX
+casADi__SXFunction__jac''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac''''' :: SXFunctionClass a => a -> String -> Int -> Bool -> Bool -> IO SX
+sxFunction_jac''''' x = casADi__SXFunction__jac''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac''''''
+  :: SXFunction -> String -> Int -> Bool -> IO SX
+casADi__SXFunction__jac'''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'''''' :: SXFunctionClass a => a -> String -> Int -> Bool -> IO SX
+sxFunction_jac'''''' x = casADi__SXFunction__jac'''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac'''''''
+  :: SXFunction -> String -> Int -> IO SX
+casADi__SXFunction__jac''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac''''''' :: SXFunctionClass a => a -> String -> Int -> IO SX
+sxFunction_jac''''''' x = casADi__SXFunction__jac''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__jac''''''''
+  :: SXFunction -> String -> IO SX
+casADi__SXFunction__jac'''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'''''''' :: SXFunctionClass a => a -> String -> IO SX
+sxFunction_jac'''''''' x = casADi__SXFunction__jac'''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> Ptr StdString' -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac'''''''''
+  :: SXFunction -> Int -> String -> Bool -> Bool -> IO SX
+casADi__SXFunction__jac''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac''''''''' :: SXFunctionClass a => a -> Int -> String -> Bool -> Bool -> IO SX
+sxFunction_jac''''''''' x = casADi__SXFunction__jac''''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac''''''''''
+  :: SXFunction -> Int -> String -> Bool -> IO SX
+casADi__SXFunction__jac'''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'''''''''' :: SXFunctionClass a => a -> Int -> String -> Bool -> IO SX
+sxFunction_jac'''''''''' x = casADi__SXFunction__jac'''''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__jac'''''''''''
+  :: SXFunction -> Int -> String -> IO SX
+casADi__SXFunction__jac''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac''''''''''' :: SXFunctionClass a => a -> Int -> String -> IO SX
+sxFunction_jac''''''''''' x = casADi__SXFunction__jac''''''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> Ptr StdString' -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac''''''''''''
+  :: SXFunction -> String -> String -> Bool -> Bool -> IO SX
+casADi__SXFunction__jac'''''''''''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'''''''''''' :: SXFunctionClass a => a -> String -> String -> Bool -> Bool -> IO SX
+sxFunction_jac'''''''''''' x = casADi__SXFunction__jac'''''''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__jac'''''''''''''
+  :: SXFunction -> String -> String -> Bool -> IO SX
+casADi__SXFunction__jac''''''''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac''''''''''''' :: SXFunctionClass a => a -> String -> String -> Bool -> IO SX
+sxFunction_jac''''''''''''' x = casADi__SXFunction__jac''''''''''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__jac''''''''''''''
+  :: SXFunction -> String -> String -> IO SX
+casADi__SXFunction__jac'''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__jac_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_jac'''''''''''''' :: SXFunctionClass a => a -> String -> String -> IO SX
+sxFunction_jac'''''''''''''' x = casADi__SXFunction__jac'''''''''''''' (castSXFunction x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__SXFunction__grad" c_CasADi__SXFunction__grad
-  :: Ptr SXFunction' -> CInt -> CInt -> IO (Ptr SXMatrix')
+  :: Ptr SXFunction' -> CInt -> CInt -> IO (Ptr SX')
 casADi__SXFunction__grad
-  :: SXFunction -> Int -> Int -> IO SXMatrix
+  :: SXFunction -> Int -> Int -> IO SX
 casADi__SXFunction__grad x0 x1 x2 =
   withMarshal x0 $ \x0' ->
   withMarshal x1 $ \x1' ->
@@ -83,15 +347,218 @@
 {-|
 >Gradient via source code transformation.
 -}
-sxFunction_grad :: SXFunctionClass a => a -> Int -> Int -> IO SXMatrix
+sxFunction_grad :: SXFunctionClass a => a -> Int -> Int -> IO SX
 sxFunction_grad x = casADi__SXFunction__grad (castSXFunction x)
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__grad_TIC" c_CasADi__SXFunction__grad_TIC
+  :: Ptr SXFunction' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__grad'
+  :: SXFunction -> Int -> IO SX
+casADi__SXFunction__grad' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__grad_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_grad' :: SXFunctionClass a => a -> Int -> IO SX
+sxFunction_grad' x = casADi__SXFunction__grad' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__grad_TIC_TIC" c_CasADi__SXFunction__grad_TIC_TIC
+  :: Ptr SXFunction' -> IO (Ptr SX')
+casADi__SXFunction__grad''
+  :: SXFunction -> IO SX
+casADi__SXFunction__grad'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXFunction__grad_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_grad'' :: SXFunctionClass a => a -> IO SX
+sxFunction_grad'' x = casADi__SXFunction__grad'' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__grad_TIC_TIC_TIC" c_CasADi__SXFunction__grad_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__grad'''
+  :: SXFunction -> String -> Int -> IO SX
+casADi__SXFunction__grad''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__grad_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_grad''' :: SXFunctionClass a => a -> String -> Int -> IO SX
+sxFunction_grad''' x = casADi__SXFunction__grad''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__grad_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__grad_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__grad''''
+  :: SXFunction -> String -> IO SX
+casADi__SXFunction__grad'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__grad_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_grad'''' :: SXFunctionClass a => a -> String -> IO SX
+sxFunction_grad'''' x = casADi__SXFunction__grad'''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__grad_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__grad_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__grad'''''
+  :: SXFunction -> Int -> String -> IO SX
+casADi__SXFunction__grad''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__grad_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_grad''''' :: SXFunctionClass a => a -> Int -> String -> IO SX
+sxFunction_grad''''' x = casADi__SXFunction__grad''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__grad_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__grad_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__grad''''''
+  :: SXFunction -> String -> String -> IO SX
+casADi__SXFunction__grad'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__grad_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_grad'''''' :: SXFunctionClass a => a -> String -> String -> IO SX
+sxFunction_grad'''''' x = casADi__SXFunction__grad'''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang" c_CasADi__SXFunction__tang
+  :: Ptr SXFunction' -> CInt -> CInt -> IO (Ptr SX')
+casADi__SXFunction__tang
+  :: SXFunction -> Int -> Int -> IO SX
+casADi__SXFunction__tang x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__tang x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Tangent via source code transformation.
+-}
+sxFunction_tang :: SXFunctionClass a => a -> Int -> Int -> IO SX
+sxFunction_tang x = casADi__SXFunction__tang (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang_TIC" c_CasADi__SXFunction__tang_TIC
+  :: Ptr SXFunction' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__tang'
+  :: SXFunction -> Int -> IO SX
+casADi__SXFunction__tang' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__tang_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_tang' :: SXFunctionClass a => a -> Int -> IO SX
+sxFunction_tang' x = casADi__SXFunction__tang' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang_TIC_TIC" c_CasADi__SXFunction__tang_TIC_TIC
+  :: Ptr SXFunction' -> IO (Ptr SX')
+casADi__SXFunction__tang''
+  :: SXFunction -> IO SX
+casADi__SXFunction__tang'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXFunction__tang_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_tang'' :: SXFunctionClass a => a -> IO SX
+sxFunction_tang'' x = casADi__SXFunction__tang'' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang_TIC_TIC_TIC" c_CasADi__SXFunction__tang_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__tang'''
+  :: SXFunction -> String -> Int -> IO SX
+casADi__SXFunction__tang''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__tang_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_tang''' :: SXFunctionClass a => a -> String -> Int -> IO SX
+sxFunction_tang''' x = casADi__SXFunction__tang''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__tang_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__tang''''
+  :: SXFunction -> String -> IO SX
+casADi__SXFunction__tang'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__tang_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_tang'''' :: SXFunctionClass a => a -> String -> IO SX
+sxFunction_tang'''' x = casADi__SXFunction__tang'''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__tang_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__tang'''''
+  :: SXFunction -> Int -> String -> IO SX
+casADi__SXFunction__tang''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__tang_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_tang''''' :: SXFunctionClass a => a -> Int -> String -> IO SX
+sxFunction_tang''''' x = casADi__SXFunction__tang''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__tang_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__tang_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__tang''''''
+  :: SXFunction -> String -> String -> IO SX
+casADi__SXFunction__tang'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__tang_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_tang'''''' :: SXFunctionClass a => a -> String -> String -> IO SX
+sxFunction_tang'''''' x = casADi__SXFunction__tang'''''' (castSXFunction x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__SXFunction__hess" c_CasADi__SXFunction__hess
-  :: Ptr SXFunction' -> CInt -> CInt -> IO (Ptr SXMatrix')
+  :: Ptr SXFunction' -> CInt -> CInt -> IO (Ptr SX')
 casADi__SXFunction__hess
-  :: SXFunction -> Int -> Int -> IO SXMatrix
+  :: SXFunction -> Int -> Int -> IO SX
 casADi__SXFunction__hess x0 x1 x2 =
   withMarshal x0 $ \x0' ->
   withMarshal x1 $ \x1' ->
@@ -102,11 +569,120 @@
 {-|
 >Hessian (forward over adjoint) via source code transformation.
 -}
-sxFunction_hess :: SXFunctionClass a => a -> Int -> Int -> IO SXMatrix
+sxFunction_hess :: SXFunctionClass a => a -> Int -> Int -> IO SX
 sxFunction_hess x = casADi__SXFunction__hess (castSXFunction x)
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__hess_TIC" c_CasADi__SXFunction__hess_TIC
+  :: Ptr SXFunction' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__hess'
+  :: SXFunction -> Int -> IO SX
+casADi__SXFunction__hess' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__hess_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_hess' :: SXFunctionClass a => a -> Int -> IO SX
+sxFunction_hess' x = casADi__SXFunction__hess' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__hess_TIC_TIC" c_CasADi__SXFunction__hess_TIC_TIC
+  :: Ptr SXFunction' -> IO (Ptr SX')
+casADi__SXFunction__hess''
+  :: SXFunction -> IO SX
+casADi__SXFunction__hess'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXFunction__hess_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_hess'' :: SXFunctionClass a => a -> IO SX
+sxFunction_hess'' x = casADi__SXFunction__hess'' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__hess_TIC_TIC_TIC" c_CasADi__SXFunction__hess_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> CInt -> IO (Ptr SX')
+casADi__SXFunction__hess'''
+  :: SXFunction -> String -> Int -> IO SX
+casADi__SXFunction__hess''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__hess_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_hess''' :: SXFunctionClass a => a -> String -> Int -> IO SX
+sxFunction_hess''' x = casADi__SXFunction__hess''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__hess_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__hess_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__hess''''
+  :: SXFunction -> String -> IO SX
+casADi__SXFunction__hess'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SXFunction__hess_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_hess'''' :: SXFunctionClass a => a -> String -> IO SX
+sxFunction_hess'''' x = casADi__SXFunction__hess'''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__hess_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__hess_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> CInt -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__hess'''''
+  :: SXFunction -> Int -> String -> IO SX
+casADi__SXFunction__hess''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__hess_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_hess''''' :: SXFunctionClass a => a -> Int -> String -> IO SX
+sxFunction_hess''''' x = casADi__SXFunction__hess''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__hess_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__SXFunction__hess_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXFunction' -> Ptr StdString' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SXFunction__hess''''''
+  :: SXFunction -> String -> String -> IO SX
+casADi__SXFunction__hess'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SXFunction__hess_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sxFunction_hess'''''' :: SXFunctionClass a => a -> String -> String -> IO SX
+sxFunction_hess'''''' x = casADi__SXFunction__hess'''''' (castSXFunction x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SXFunction__checkNode" c_CasADi__SXFunction__checkNode
+  :: Ptr SXFunction' -> IO CInt
+casADi__SXFunction__checkNode
+  :: SXFunction -> IO Bool
+casADi__SXFunction__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SXFunction__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sxFunction_checkNode :: SXFunctionClass a => a -> IO Bool
+sxFunction_checkNode x = casADi__SXFunction__checkNode (castSXFunction x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__SXFunction__getAlgorithmSize" c_CasADi__SXFunction__getAlgorithmSize
   :: Ptr SXFunction' -> IO CInt
 casADi__SXFunction__getAlgorithmSize
@@ -212,50 +788,113 @@
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__SXFunction__getFree" c_CasADi__SXFunction__getFree
-  :: Ptr SXFunction' -> IO (Ptr (CppVec (Ptr SX')))
-casADi__SXFunction__getFree
-  :: SXFunction -> IO (Vector SX)
-casADi__SXFunction__getFree x0 =
+foreign import ccall unsafe "CasADi__SXFunction__clearSymbolic" c_CasADi__SXFunction__clearSymbolic
+  :: Ptr SXFunction' -> IO ()
+casADi__SXFunction__clearSymbolic
+  :: SXFunction -> IO ()
+casADi__SXFunction__clearSymbolic x0 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__SXFunction__getFree x0' >>= wrapReturn
+  c_CasADi__SXFunction__clearSymbolic x0' >>= wrapReturn
 
 -- classy wrapper
 {-|
->Get all the free variables of the function.
+>Clear the function from its symbolic representation, to free up memory, no
+>symbolic evaluations are possible after this.
 -}
-sxFunction_getFree :: SXFunctionClass a => a -> IO (Vector SX)
-sxFunction_getFree x = casADi__SXFunction__getFree (castSXFunction x)
+sxFunction_clearSymbolic :: SXFunctionClass a => a -> IO ()
+sxFunction_clearSymbolic x = casADi__SXFunction__clearSymbolic (castSXFunction x)
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__SXFunction__indexed_one_based" c_CasADi__SXFunction__indexed_one_based
-  :: Ptr SXFunction' -> CInt -> IO (Ptr SXFunction')
-casADi__SXFunction__indexed_one_based
-  :: SXFunction -> Int -> IO SXFunction
-casADi__SXFunction__indexed_one_based x0 x1 =
+foreign import ccall unsafe "CasADi__SXFunction__getFree" c_CasADi__SXFunction__getFree
+  :: Ptr SXFunction' -> IO (Ptr (CppVec (Ptr SXElement')))
+casADi__SXFunction__getFree
+  :: SXFunction -> IO (Vector SXElement)
+casADi__SXFunction__getFree x0 =
   withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SXFunction__indexed_one_based x0' x1' >>= wrapReturn
+  c_CasADi__SXFunction__getFree x0' >>= wrapReturn
 
 -- classy wrapper
-sxFunction_indexed_one_based :: SXFunctionClass a => a -> Int -> IO SXFunction
-sxFunction_indexed_one_based x = casADi__SXFunction__indexed_one_based (castSXFunction x)
+{-|
+>Get all the free variables of the function.
+-}
+sxFunction_getFree :: SXFunctionClass a => a -> IO (Vector SXElement)
+sxFunction_getFree x = casADi__SXFunction__getFree (castSXFunction x)
 
 
 -- direct wrapper
-foreign import ccall unsafe "CasADi__SXFunction__indexed_zero_based" c_CasADi__SXFunction__indexed_zero_based
-  :: Ptr SXFunction' -> CInt -> IO (Ptr SXFunction')
-casADi__SXFunction__indexed_zero_based
-  :: SXFunction -> Int -> IO SXFunction
-casADi__SXFunction__indexed_zero_based x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__SXFunction__indexed_zero_based x0' x1' >>= wrapReturn
+foreign import ccall unsafe "CasADi__SXFunction__SXFunction" c_CasADi__SXFunction__SXFunction
+  :: IO (Ptr SXFunction')
+casADi__SXFunction__SXFunction
+  :: IO SXFunction
+casADi__SXFunction__SXFunction  =
+  c_CasADi__SXFunction__SXFunction  >>= wrapReturn
 
 -- classy wrapper
-sxFunction_indexed_zero_based :: SXFunctionClass a => a -> Int -> IO SXFunction
-sxFunction_indexed_zero_based x = casADi__SXFunction__indexed_zero_based (castSXFunction x)
+{-|
+>>  CasADi::SXFunction::SXFunction()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SXFunction::SXFunction(const MXFunction &f)
+>------------------------------------------------------------------------
+>
+>Expand an MXFunction.
+>
+>>  CasADi::SXFunction::SXFunction(const Function &f)
+>------------------------------------------------------------------------
+>
+>Expand an Function.
+>
+>>  CasADi::SXFunction::SXFunction(const std::vector< SX > &arg, const std::vector< SX > &res)
+>
+>>  CasADi::SXFunction::SXFunction(const std::vector< SX > &arg, const IOSchemeVector< SX > &res)
+>
+>>  CasADi::SXFunction::SXFunction(const IOSchemeVector< SX > &arg, const std::vector< SX > &res)
+>
+>>  CasADi::SXFunction::SXFunction(const IOSchemeVector< SX > &arg, const IOSchemeVector< SX > &res)
+>------------------------------------------------------------------------
+>
+>Multiple (matrix valued) input, multiple (matrix valued) output.
+>
+>>  CasADi::SXFunction::SXFunction(const std::vector< std::vector< SXElement > > &arg, const std::vector< std::vector< SXElement > > &res)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Multiple (vector valued) input, multiple (vector valued) output.
+>
+>>  CasADi::SXFunction::SXFunction(const SX &arg, const SX &res)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Single (scalar/matrix/vector valued) input, single
+>(scalar/matrix/vector valued) output.
+>
+>>  CasADi::SXFunction::SXFunction(const std::vector< std::vector< SXElement > > &arg, const SX &res)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Multiple (vector valued) input, single (scalar/vector/matrix valued)
+>output.
+>
+>>  CasADi::SXFunction::SXFunction(const std::vector< SX > &arg, const SX &res)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Multiple (matrix valued) input, single (scalar/vector/matrix valued)
+>output.
+>
+>>  CasADi::SXFunction::SXFunction(const SX &arg, const std::vector< std::vector< SXElement > > &res)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Single (scalar/vector/matrix valued) input, multiple (vector valued)
+>output.
+>
+>>  CasADi::SXFunction::SXFunction(const SX &arg, const std::vector< SX > &res)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Single (scalar/vector/matrix valued) input, multiple (matrix valued)
+>output.
+-}
+sxFunction :: IO SXFunction
+sxFunction = casADi__SXFunction__SXFunction
 
 
 -- direct wrapper
@@ -274,29 +913,29 @@
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__SXFunction__SXFunction_TIC_TIC" c_CasADi__SXFunction__SXFunction_TIC_TIC
-  :: Ptr FX' -> IO (Ptr SXFunction')
+  :: Ptr Function' -> IO (Ptr SXFunction')
 casADi__SXFunction__SXFunction''
-  :: FX -> IO SXFunction
+  :: Function -> IO SXFunction
 casADi__SXFunction__SXFunction'' x0 =
   withMarshal x0 $ \x0' ->
   c_CasADi__SXFunction__SXFunction_TIC_TIC x0' >>= wrapReturn
 
 -- classy wrapper
-sxFunction'' :: FX -> IO SXFunction
+sxFunction'' :: Function -> IO SXFunction
 sxFunction'' = casADi__SXFunction__SXFunction''
 
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__SXFunction__SXFunction_TIC_TIC_TIC" c_CasADi__SXFunction__SXFunction_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXFunction')
+  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO (Ptr SXFunction')
 casADi__SXFunction__SXFunction'''
-  :: Vector SXMatrix -> Vector SXMatrix -> IO SXFunction
+  :: Vector SX -> Vector SX -> IO SXFunction
 casADi__SXFunction__SXFunction''' x0 x1 =
   withMarshal x0 $ \x0' ->
   withMarshal x1 $ \x1' ->
   c_CasADi__SXFunction__SXFunction_TIC_TIC_TIC x0' x1' >>= wrapReturn
 
 -- classy wrapper
-sxFunction''' :: Vector SXMatrix -> Vector SXMatrix -> IO SXFunction
+sxFunction''' :: Vector SX -> Vector SX -> IO SXFunction
 sxFunction''' = casADi__SXFunction__SXFunction'''
 
diff --git a/Casadi/Wrappers/Classes/SXMatrix.hs b/Casadi/Wrappers/Classes/SXMatrix.hs
deleted file mode 100644
--- a/Casadi/Wrappers/Classes/SXMatrix.hs
+++ /dev/null
@@ -1,2679 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# Language ForeignFunctionInterface #-}
-{-# Language FlexibleInstances #-}
-{-# Language MultiParamTypeClasses #-}
-
-module Casadi.Wrappers.Classes.SXMatrix
-       (
-         SXMatrix,
-         SXMatrixClass(..),
-         sxMatrix,
-         sxMatrix',
-         sxMatrix'',
-         sxMatrix''',
-         sxMatrix'''',
-         sxMatrix''''',
-         sxMatrix'''''',
-         sxMatrix''''''',
-         sxMatrix'''''''',
-         sxMatrix''''''''',
-         sxMatrix'''''''''',
-         sxMatrix''''''''''',
-         sxMatrix'''''''''''',
-         sxMatrix___add__,
-         sxMatrix___constpow__,
-         sxMatrix___div__,
-         sxMatrix___eq__,
-         sxMatrix___le__,
-         sxMatrix___lt__,
-         sxMatrix___mpower__,
-         sxMatrix___mrdivide__,
-         sxMatrix___mul__,
-         sxMatrix___ne__,
-         sxMatrix___nonzero__,
-         sxMatrix___pow__,
-         sxMatrix___sub__,
-         sxMatrix___truediv__,
-         sxMatrix_append,
-         sxMatrix_arccos,
-         sxMatrix_arccosh,
-         sxMatrix_arcsin,
-         sxMatrix_arcsinh,
-         sxMatrix_arctan,
-         sxMatrix_arctan2,
-         sxMatrix_arctanh,
-         sxMatrix_at,
-         sxMatrix_binary,
-         sxMatrix_ceil,
-         sxMatrix_className,
-         sxMatrix_clear,
-         sxMatrix_col,
-         sxMatrix_cos,
-         sxMatrix_cosh,
-         sxMatrix_data,
-         sxMatrix_elem,
-         sxMatrix_elem',
-         sxMatrix_enlarge,
-         sxMatrix_erase,
-         sxMatrix_erf,
-         sxMatrix_erfinv,
-         sxMatrix_exp,
-         sxMatrix_eye,
-         sxMatrix_fabs,
-         sxMatrix_floor,
-         sxMatrix_fmax,
-         sxMatrix_fmin,
-         sxMatrix_get,
-         sxMatrix_get',
-         sxMatrix_get'',
-         sxMatrix_get''',
-         sxMatrix_get'''',
-         sxMatrix_get''''',
-         sxMatrix_hasNZ,
-         sxMatrix_if_else_zero,
-         sxMatrix_inf,
-         sxMatrix_inf',
-         sxMatrix_inf'',
-         sxMatrix_inf''',
-         sxMatrix_isNull,
-         sxMatrix_log,
-         sxMatrix_log10,
-         sxMatrix_logic_and,
-         sxMatrix_logic_not,
-         sxMatrix_logic_or,
-         sxMatrix_matrix_matrix,
-         sxMatrix_matrix_scalar,
-         sxMatrix_mul,
-         sxMatrix_mul',
-         sxMatrix_mul_full,
-         sxMatrix_mul_full',
-         sxMatrix_mul_no_alloc_nn,
-         sxMatrix_mul_no_alloc_nn',
-         sxMatrix_mul_no_alloc_nt,
-         sxMatrix_mul_no_alloc_tn,
-         sxMatrix_mul_no_alloc_tn',
-         sxMatrix_nan,
-         sxMatrix_nan',
-         sxMatrix_nan'',
-         sxMatrix_nan''',
-         sxMatrix_numel,
-         sxMatrix_ones,
-         sxMatrix_ones',
-         sxMatrix_ones'',
-         sxMatrix_operator_minus,
-         sxMatrix_operator_plus,
-         sxMatrix_printDense',
-         sxMatrix_printMatrix',
-         sxMatrix_printScalar',
-         sxMatrix_printSparse',
-         sxMatrix_printVector',
-         sxMatrix_printme,
-         sxMatrix_quad_form,
-         sxMatrix_remove,
-         sxMatrix_repmat,
-         sxMatrix_repmat',
-         sxMatrix_reserve,
-         sxMatrix_reserve',
-         sxMatrix_resize,
-         sxMatrix_rowind,
-         sxMatrix_sanityCheck,
-         sxMatrix_sanityCheck',
-         sxMatrix_scalar_matrix,
-         sxMatrix_set,
-         sxMatrix_set',
-         sxMatrix_set'',
-         sxMatrix_set''',
-         sxMatrix_set'''',
-         sxMatrix_set''''',
-         sxMatrix_setPrecision,
-         sxMatrix_setScientific,
-         sxMatrix_setWidth,
-         sxMatrix_sign,
-         sxMatrix_sin,
-         sxMatrix_sinh,
-         sxMatrix_size,
-         sxMatrix_size1,
-         sxMatrix_size2,
-         sxMatrix_sparse,
-         sxMatrix_sparse',
-         sxMatrix_sparse'',
-         sxMatrix_sparse''',
-         sxMatrix_sparsityRef,
-         sxMatrix_sqrt,
-         sxMatrix_tan,
-         sxMatrix_tanh,
-         sxMatrix_trans,
-         sxMatrix_unary,
-         sxMatrix_vector,
-         sxMatrix_zeros,
-         sxMatrix_zeros',
-         sxMatrix_zeros'',
-       ) where
-
-
-import Prelude hiding ( Functor )
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-import Foreign.ForeignPtr ( newForeignPtr )
-import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
-
-import Casadi.Wrappers.Classes.PrintableObject
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
-import Casadi.Marshal ( Marshal(..), withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-instance Show SXMatrix where
-  show = unsafePerformIO . printableObject_getDescription
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___size1" c_CasADi__Matrix_CasADi__SX___size1
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX___size1
-  :: SXMatrix -> IO Int
-casADi__Matrix_CasADi__SX___size1 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___size1 x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_size1 :: SXMatrixClass a => a -> IO Int
-sxMatrix_size1 x = casADi__Matrix_CasADi__SX___size1 (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___size2" c_CasADi__Matrix_CasADi__SX___size2
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX___size2
-  :: SXMatrix -> IO Int
-casADi__Matrix_CasADi__SX___size2 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___size2 x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_size2 :: SXMatrixClass a => a -> IO Int
-sxMatrix_size2 x = casADi__Matrix_CasADi__SX___size2 (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___size" c_CasADi__Matrix_CasADi__SX___size
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX___size
-  :: SXMatrix -> IO Int
-casADi__Matrix_CasADi__SX___size x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___size x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_size :: SXMatrixClass a => a -> IO Int
-sxMatrix_size x = casADi__Matrix_CasADi__SX___size (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___numel" c_CasADi__Matrix_CasADi__SX___numel
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX___numel
-  :: SXMatrix -> IO Int
-casADi__Matrix_CasADi__SX___numel x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___numel x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_numel :: SXMatrixClass a => a -> IO Int
-sxMatrix_numel x = casADi__Matrix_CasADi__SX___numel (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sanityCheck" c_CasADi__Matrix_CasADi__SX___sanityCheck
-  :: Ptr SXMatrix' -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___sanityCheck
-  :: SXMatrix -> Bool -> IO ()
-casADi__Matrix_CasADi__SX___sanityCheck x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___sanityCheck x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Check if the dimensions and rowind,col vectors are compatible.
->
->Parameters:
->-----------
->
->complete:  set to true to also check elementwise throws an error as possible
->result
--}
-sxMatrix_sanityCheck :: SXMatrixClass a => a -> Bool -> IO ()
-sxMatrix_sanityCheck x = casADi__Matrix_CasADi__SX___sanityCheck (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sanityCheck_TIC" c_CasADi__Matrix_CasADi__SX___sanityCheck_TIC
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___sanityCheck'
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___sanityCheck' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sanityCheck_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_sanityCheck' :: SXMatrixClass a => a -> IO ()
-sxMatrix_sanityCheck' x = casADi__Matrix_CasADi__SX___sanityCheck' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___vector" c_CasADi__Matrix_CasADi__SX___vector
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX___vector
-  :: SXMatrix -> IO Bool
-casADi__Matrix_CasADi__SX___vector x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___vector x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->ublas vector
->
->Check type of matrix
--}
-sxMatrix_vector :: SXMatrixClass a => a -> IO Bool
-sxMatrix_vector x = casADi__Matrix_CasADi__SX___vector (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___at" c_CasADi__Matrix_CasADi__SX___at
-  :: Ptr SXMatrix' -> CInt -> IO (Ptr SX')
-casADi__Matrix_CasADi__SX___at
-  :: SXMatrix -> Int -> IO SX
-casADi__Matrix_CasADi__SX___at x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___at x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  const T& CasADi::Matrix< T >::at(int k) const 
->------------------------------------------------------------------------
->
->Get a non-zero element.
->
->>  T& CasADi::Matrix< T >::at(int k)
->------------------------------------------------------------------------
->
->Access a non-zero element.
--}
-sxMatrix_at :: SXMatrixClass a => a -> Int -> IO SX
-sxMatrix_at x = casADi__Matrix_CasADi__SX___at (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___elem" c_CasADi__Matrix_CasADi__SX___elem
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr SX')
-casADi__Matrix_CasADi__SX___elem
-  :: SXMatrix -> Int -> Int -> IO SX
-casADi__Matrix_CasADi__SX___elem x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___elem x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  const T & CasADi::Matrix< T >::elem(int i, int j=0) const 
->------------------------------------------------------------------------
->
->get an element
->
->>  T & CasADi::Matrix< T >::elem(int i, int j=0)
->------------------------------------------------------------------------
->
->get a reference to an element
--}
-sxMatrix_elem :: SXMatrixClass a => a -> Int -> Int -> IO SX
-sxMatrix_elem x = casADi__Matrix_CasADi__SX___elem (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___elem_TIC" c_CasADi__Matrix_CasADi__SX___elem_TIC
-  :: Ptr SXMatrix' -> CInt -> IO (Ptr SX')
-casADi__Matrix_CasADi__SX___elem'
-  :: SXMatrix -> Int -> IO SX
-casADi__Matrix_CasADi__SX___elem' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___elem_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_elem' :: SXMatrixClass a => a -> Int -> IO SX
-sxMatrix_elem' x = casADi__Matrix_CasADi__SX___elem' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___hasNZ" c_CasADi__Matrix_CasADi__SX___hasNZ
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO CInt
-casADi__Matrix_CasADi__SX___hasNZ
-  :: SXMatrix -> Int -> Int -> IO Bool
-casADi__Matrix_CasADi__SX___hasNZ x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___hasNZ x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns true if the matrix has a non-zero at location i,j.
--}
-sxMatrix_hasNZ :: SXMatrixClass a => a -> Int -> Int -> IO Bool
-sxMatrix_hasNZ x = casADi__Matrix_CasADi__SX___hasNZ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____nonzero__" c_CasADi__Matrix_CasADi__SX_____nonzero__
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX_____nonzero__
-  :: SXMatrix -> IO Bool
-casADi__Matrix_CasADi__SX_____nonzero__ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX_____nonzero__ x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Returns the truth value of a Matrix.
--}
-sxMatrix___nonzero__ :: SXMatrixClass a => a -> IO Bool
-sxMatrix___nonzero__ x = casADi__Matrix_CasADi__SX_____nonzero__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___append" c_CasADi__Matrix_CasADi__SX___append
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___append
-  :: SXMatrix -> SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___append x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___append x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Append a matrix to the end.
--}
-sxMatrix_append :: SXMatrixClass a => a -> SXMatrix -> IO ()
-sxMatrix_append x = casADi__Matrix_CasADi__SX___append (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___operator_plus" c_CasADi__Matrix_CasADi__SX___operator_plus
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___operator_plus
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___operator_plus x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___operator_plus x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_operator_plus :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_operator_plus x = casADi__Matrix_CasADi__SX___operator_plus (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___operator_minus" c_CasADi__Matrix_CasADi__SX___operator_minus
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___operator_minus
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___operator_minus x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___operator_minus x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_operator_minus :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_operator_minus x = casADi__Matrix_CasADi__SX___operator_minus (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___binary" c_CasADi__Matrix_CasADi__SX___binary
-  :: CInt -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___binary
-  :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___binary x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___binary x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-sxMatrix_binary :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-sxMatrix_binary = casADi__Matrix_CasADi__SX___binary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___unary" c_CasADi__Matrix_CasADi__SX___unary
-  :: CInt -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___unary
-  :: Int -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___unary x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___unary x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-sxMatrix_unary :: Int -> SXMatrix -> IO SXMatrix
-sxMatrix_unary = casADi__Matrix_CasADi__SX___unary
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___scalar_matrix" c_CasADi__Matrix_CasADi__SX___scalar_matrix
-  :: CInt -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___scalar_matrix
-  :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___scalar_matrix x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___scalar_matrix x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-sxMatrix_scalar_matrix :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-sxMatrix_scalar_matrix = casADi__Matrix_CasADi__SX___scalar_matrix
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___matrix_scalar" c_CasADi__Matrix_CasADi__SX___matrix_scalar
-  :: CInt -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___matrix_scalar
-  :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___matrix_scalar x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___matrix_scalar x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-sxMatrix_matrix_scalar :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-sxMatrix_matrix_scalar = casADi__Matrix_CasADi__SX___matrix_scalar
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___matrix_matrix" c_CasADi__Matrix_CasADi__SX___matrix_matrix
-  :: CInt -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___matrix_matrix
-  :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___matrix_matrix x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___matrix_matrix x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Create nodes by their ID.
--}
-sxMatrix_matrix_matrix :: Int -> SXMatrix -> SXMatrix -> IO SXMatrix
-sxMatrix_matrix_matrix = casADi__Matrix_CasADi__SX___matrix_matrix
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____add__" c_CasADi__Matrix_CasADi__SX_____add__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____add__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____add__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____add__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___add__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___add__ x = casADi__Matrix_CasADi__SX_____add__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____sub__" c_CasADi__Matrix_CasADi__SX_____sub__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____sub__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____sub__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____sub__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___sub__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___sub__ x = casADi__Matrix_CasADi__SX_____sub__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____mul__" c_CasADi__Matrix_CasADi__SX_____mul__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____mul__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____mul__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____mul__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___mul__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___mul__ x = casADi__Matrix_CasADi__SX_____mul__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____div__" c_CasADi__Matrix_CasADi__SX_____div__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____div__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____div__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____div__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___div__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___div__ x = casADi__Matrix_CasADi__SX_____div__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____lt__" c_CasADi__Matrix_CasADi__SX_____lt__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____lt__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____lt__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____lt__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___lt__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___lt__ x = casADi__Matrix_CasADi__SX_____lt__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____le__" c_CasADi__Matrix_CasADi__SX_____le__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____le__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____le__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____le__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___le__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___le__ x = casADi__Matrix_CasADi__SX_____le__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____eq__" c_CasADi__Matrix_CasADi__SX_____eq__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____eq__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____eq__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____eq__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___eq__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___eq__ x = casADi__Matrix_CasADi__SX_____eq__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____ne__" c_CasADi__Matrix_CasADi__SX_____ne__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____ne__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____ne__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____ne__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___ne__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___ne__ x = casADi__Matrix_CasADi__SX_____ne__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____truediv__" c_CasADi__Matrix_CasADi__SX_____truediv__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____truediv__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____truediv__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____truediv__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___truediv__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___truediv__ x = casADi__Matrix_CasADi__SX_____truediv__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____pow__" c_CasADi__Matrix_CasADi__SX_____pow__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____pow__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____pow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____pow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___pow__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___pow__ x = casADi__Matrix_CasADi__SX_____pow__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____constpow__" c_CasADi__Matrix_CasADi__SX_____constpow__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____constpow__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____constpow__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____constpow__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___constpow__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___constpow__ x = casADi__Matrix_CasADi__SX_____constpow__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____mpower__" c_CasADi__Matrix_CasADi__SX_____mpower__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____mpower__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____mpower__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____mpower__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___mpower__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___mpower__ x = casADi__Matrix_CasADi__SX_____mpower__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX_____mrdivide__" c_CasADi__Matrix_CasADi__SX_____mrdivide__
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX_____mrdivide__
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX_____mrdivide__ x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX_____mrdivide__ x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Elementwise operations Octave/Python naming.
--}
-sxMatrix___mrdivide__ :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix___mrdivide__ x = casADi__Matrix_CasADi__SX_____mrdivide__ (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_full" c_CasADi__Matrix_CasADi__SX___mul_full
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___mul_full
-  :: SXMatrix -> SXMatrix -> CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___mul_full x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul_full x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix-matrix product.
--}
-sxMatrix_mul_full :: SXMatrixClass a => a -> SXMatrix -> CRSSparsity -> IO SXMatrix
-sxMatrix_mul_full x = casADi__Matrix_CasADi__SX___mul_full (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_full_TIC" c_CasADi__Matrix_CasADi__SX___mul_full_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___mul_full'
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___mul_full' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___mul_full_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul_full' :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_mul_full' x = casADi__Matrix_CasADi__SX___mul_full' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul" c_CasADi__Matrix_CasADi__SX___mul
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___mul
-  :: SXMatrix -> SXMatrix -> CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___mul x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix-matrix product.
--}
-sxMatrix_mul :: SXMatrixClass a => a -> SXMatrix -> CRSSparsity -> IO SXMatrix
-sxMatrix_mul x = casADi__Matrix_CasADi__SX___mul (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_TIC" c_CasADi__Matrix_CasADi__SX___mul_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___mul'
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___mul' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___mul_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul' :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_mul' x = casADi__Matrix_CasADi__SX___mul' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_no_alloc_nn" c_CasADi__Matrix_CasADi__SX___mul_no_alloc_nn
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_nn
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_nn x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul_no_alloc_nn x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul_no_alloc_nn :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-sxMatrix_mul_no_alloc_nn = casADi__Matrix_CasADi__SX___mul_no_alloc_nn
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_no_alloc_nt" c_CasADi__Matrix_CasADi__SX___mul_no_alloc_nt
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_nt
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_nt x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul_no_alloc_nt x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul_no_alloc_nt :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-sxMatrix_mul_no_alloc_nt = casADi__Matrix_CasADi__SX___mul_no_alloc_nt
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_no_alloc_tn" c_CasADi__Matrix_CasADi__SX___mul_no_alloc_tn
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_tn
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_tn x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul_no_alloc_tn x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul_no_alloc_tn :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-sxMatrix_mul_no_alloc_tn = casADi__Matrix_CasADi__SX___mul_no_alloc_tn
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_no_alloc_nn_TIC" c_CasADi__Matrix_CasADi__SX___mul_no_alloc_nn_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_nn'
-  :: SXMatrix -> Vector SX -> Vector SX -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_nn' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul_no_alloc_nn_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul_no_alloc_nn' :: SXMatrix -> Vector SX -> Vector SX -> IO ()
-sxMatrix_mul_no_alloc_nn' = casADi__Matrix_CasADi__SX___mul_no_alloc_nn'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___mul_no_alloc_tn_TIC" c_CasADi__Matrix_CasADi__SX___mul_no_alloc_tn_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_tn'
-  :: SXMatrix -> Vector SX -> Vector SX -> IO ()
-casADi__Matrix_CasADi__SX___mul_no_alloc_tn' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___mul_no_alloc_tn_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_mul_no_alloc_tn' :: SXMatrix -> Vector SX -> Vector SX -> IO ()
-sxMatrix_mul_no_alloc_tn' = casADi__Matrix_CasADi__SX___mul_no_alloc_tn'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___quad_form" c_CasADi__Matrix_CasADi__SX___quad_form
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
-casADi__Matrix_CasADi__SX___quad_form
-  :: SXMatrix -> Vector SX -> IO SX
-casADi__Matrix_CasADi__SX___quad_form x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___quad_form x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_quad_form :: SXMatrix -> Vector SX -> IO SX
-sxMatrix_quad_form = casADi__Matrix_CasADi__SX___quad_form
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___trans" c_CasADi__Matrix_CasADi__SX___trans
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___trans
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___trans x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___trans x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Matrix transpose.
--}
-sxMatrix_trans :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_trans x = casADi__Matrix_CasADi__SX___trans (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sin" c_CasADi__Matrix_CasADi__SX___sin
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sin
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sin x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_sin :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_sin x = casADi__Matrix_CasADi__SX___sin (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___cos" c_CasADi__Matrix_CasADi__SX___cos
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___cos
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___cos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___cos x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_cos :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_cos x = casADi__Matrix_CasADi__SX___cos (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___tan" c_CasADi__Matrix_CasADi__SX___tan
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___tan
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___tan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___tan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_tan :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_tan x = casADi__Matrix_CasADi__SX___tan (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arcsin" c_CasADi__Matrix_CasADi__SX___arcsin
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arcsin
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arcsin x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___arcsin x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arcsin :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_arcsin x = casADi__Matrix_CasADi__SX___arcsin (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arccos" c_CasADi__Matrix_CasADi__SX___arccos
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arccos
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arccos x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___arccos x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arccos :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_arccos x = casADi__Matrix_CasADi__SX___arccos (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arctan" c_CasADi__Matrix_CasADi__SX___arctan
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arctan
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arctan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___arctan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arctan :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_arctan x = casADi__Matrix_CasADi__SX___arctan (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___exp" c_CasADi__Matrix_CasADi__SX___exp
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___exp
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___exp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___exp x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_exp :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_exp x = casADi__Matrix_CasADi__SX___exp (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___log" c_CasADi__Matrix_CasADi__SX___log
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___log
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___log x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___log x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_log :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_log x = casADi__Matrix_CasADi__SX___log (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sqrt" c_CasADi__Matrix_CasADi__SX___sqrt
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sqrt
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sqrt x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sqrt x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_sqrt :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_sqrt x = casADi__Matrix_CasADi__SX___sqrt (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___floor" c_CasADi__Matrix_CasADi__SX___floor
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___floor
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___floor x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___floor x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_floor :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_floor x = casADi__Matrix_CasADi__SX___floor (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___ceil" c_CasADi__Matrix_CasADi__SX___ceil
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___ceil
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___ceil x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___ceil x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_ceil :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_ceil x = casADi__Matrix_CasADi__SX___ceil (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___fabs" c_CasADi__Matrix_CasADi__SX___fabs
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___fabs
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___fabs x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___fabs x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_fabs :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_fabs x = casADi__Matrix_CasADi__SX___fabs (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sign" c_CasADi__Matrix_CasADi__SX___sign
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sign
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sign x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sign x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_sign :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_sign x = casADi__Matrix_CasADi__SX___sign (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___erfinv" c_CasADi__Matrix_CasADi__SX___erfinv
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___erfinv
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___erfinv x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___erfinv x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_erfinv :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_erfinv x = casADi__Matrix_CasADi__SX___erfinv (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___fmin" c_CasADi__Matrix_CasADi__SX___fmin
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___fmin
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___fmin x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___fmin x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_fmin :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_fmin x = casADi__Matrix_CasADi__SX___fmin (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___fmax" c_CasADi__Matrix_CasADi__SX___fmax
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___fmax
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___fmax x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___fmax x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_fmax :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_fmax x = casADi__Matrix_CasADi__SX___fmax (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___erf" c_CasADi__Matrix_CasADi__SX___erf
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___erf
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___erf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___erf x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_erf :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_erf x = casADi__Matrix_CasADi__SX___erf (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sinh" c_CasADi__Matrix_CasADi__SX___sinh
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sinh
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sinh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_sinh :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_sinh x = casADi__Matrix_CasADi__SX___sinh (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___cosh" c_CasADi__Matrix_CasADi__SX___cosh
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___cosh
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___cosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___cosh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_cosh :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_cosh x = casADi__Matrix_CasADi__SX___cosh (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___tanh" c_CasADi__Matrix_CasADi__SX___tanh
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___tanh
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___tanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___tanh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_tanh :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_tanh x = casADi__Matrix_CasADi__SX___tanh (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arcsinh" c_CasADi__Matrix_CasADi__SX___arcsinh
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arcsinh
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arcsinh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___arcsinh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arcsinh :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_arcsinh x = casADi__Matrix_CasADi__SX___arcsinh (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arccosh" c_CasADi__Matrix_CasADi__SX___arccosh
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arccosh
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arccosh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___arccosh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arccosh :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_arccosh x = casADi__Matrix_CasADi__SX___arccosh (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arctanh" c_CasADi__Matrix_CasADi__SX___arctanh
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arctanh
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arctanh x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___arctanh x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arctanh :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_arctanh x = casADi__Matrix_CasADi__SX___arctanh (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___arctan2" c_CasADi__Matrix_CasADi__SX___arctan2
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___arctan2
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___arctan2 x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___arctan2 x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_arctan2 :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_arctan2 x = casADi__Matrix_CasADi__SX___arctan2 (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___log10" c_CasADi__Matrix_CasADi__SX___log10
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___log10
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___log10 x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___log10 x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_log10 :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_log10 x = casADi__Matrix_CasADi__SX___log10 (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___printme" c_CasADi__Matrix_CasADi__SX___printme
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___printme
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___printme x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___printme x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_printme :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_printme x = casADi__Matrix_CasADi__SX___printme (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___logic_not" c_CasADi__Matrix_CasADi__SX___logic_not
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___logic_not
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___logic_not x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___logic_not x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_logic_not :: SXMatrixClass a => a -> IO SXMatrix
-sxMatrix_logic_not x = casADi__Matrix_CasADi__SX___logic_not (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___logic_and" c_CasADi__Matrix_CasADi__SX___logic_and
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___logic_and
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___logic_and x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___logic_and x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_logic_and :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_logic_and x = casADi__Matrix_CasADi__SX___logic_and (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___logic_or" c_CasADi__Matrix_CasADi__SX___logic_or
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___logic_or
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___logic_or x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___logic_or x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_logic_or :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_logic_or x = casADi__Matrix_CasADi__SX___logic_or (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___if_else_zero" c_CasADi__Matrix_CasADi__SX___if_else_zero
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___if_else_zero
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___if_else_zero x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___if_else_zero x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->Operations defined in the standard namespace for unambigous access and Numpy
->compatibility.
--}
-sxMatrix_if_else_zero :: SXMatrixClass a => a -> SXMatrix -> IO SXMatrix
-sxMatrix_if_else_zero x = casADi__Matrix_CasADi__SX___if_else_zero (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___className" c_CasADi__Matrix_CasADi__SX___className
-  :: IO (Ptr StdString')
-casADi__Matrix_CasADi__SX___className
-  :: IO String
-casADi__Matrix_CasADi__SX___className  =
-  c_CasADi__Matrix_CasADi__SX___className  >>= wrapReturn
-
--- classy wrapper
-{-|
->Printing.
--}
-sxMatrix_className :: IO String
-sxMatrix_className = casADi__Matrix_CasADi__SX___className
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___printScalar_TIC" c_CasADi__Matrix_CasADi__SX___printScalar_TIC
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___printScalar'
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___printScalar' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___printScalar_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_printScalar' :: SXMatrixClass a => a -> IO ()
-sxMatrix_printScalar' x = casADi__Matrix_CasADi__SX___printScalar' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___printVector_TIC" c_CasADi__Matrix_CasADi__SX___printVector_TIC
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___printVector'
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___printVector' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___printVector_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_printVector' :: SXMatrixClass a => a -> IO ()
-sxMatrix_printVector' x = casADi__Matrix_CasADi__SX___printVector' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___printMatrix_TIC" c_CasADi__Matrix_CasADi__SX___printMatrix_TIC
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___printMatrix'
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___printMatrix' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___printMatrix_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_printMatrix' :: SXMatrixClass a => a -> IO ()
-sxMatrix_printMatrix' x = casADi__Matrix_CasADi__SX___printMatrix' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___printSparse_TIC" c_CasADi__Matrix_CasADi__SX___printSparse_TIC
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___printSparse'
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___printSparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___printSparse_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_printSparse' :: SXMatrixClass a => a -> IO ()
-sxMatrix_printSparse' x = casADi__Matrix_CasADi__SX___printSparse' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___printDense_TIC" c_CasADi__Matrix_CasADi__SX___printDense_TIC
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___printDense'
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___printDense' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___printDense_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_printDense' :: SXMatrixClass a => a -> IO ()
-sxMatrix_printDense' x = casADi__Matrix_CasADi__SX___printDense' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___col" c_CasADi__Matrix_CasADi__SX___col
-  :: Ptr SXMatrix' -> CInt -> IO CInt
-casADi__Matrix_CasADi__SX___col
-  :: SXMatrix -> Int -> IO Int
-casADi__Matrix_CasADi__SX___col x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___col x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_col :: SXMatrixClass a => a -> Int -> IO Int
-sxMatrix_col x = casADi__Matrix_CasADi__SX___col (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___rowind" c_CasADi__Matrix_CasADi__SX___rowind
-  :: Ptr SXMatrix' -> CInt -> IO CInt
-casADi__Matrix_CasADi__SX___rowind
-  :: SXMatrix -> Int -> IO Int
-casADi__Matrix_CasADi__SX___rowind x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___rowind x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_rowind :: SXMatrixClass a => a -> Int -> IO Int
-sxMatrix_rowind x = casADi__Matrix_CasADi__SX___rowind (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___clear" c_CasADi__Matrix_CasADi__SX___clear
-  :: Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___clear
-  :: SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___clear x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___clear x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_clear :: SXMatrixClass a => a -> IO ()
-sxMatrix_clear x = casADi__Matrix_CasADi__SX___clear (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___resize" c_CasADi__Matrix_CasADi__SX___resize
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___resize
-  :: SXMatrix -> Int -> Int -> IO ()
-casADi__Matrix_CasADi__SX___resize x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___resize x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_resize :: SXMatrixClass a => a -> Int -> Int -> IO ()
-sxMatrix_resize x = casADi__Matrix_CasADi__SX___resize (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___reserve" c_CasADi__Matrix_CasADi__SX___reserve
-  :: Ptr SXMatrix' -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___reserve
-  :: SXMatrix -> Int -> IO ()
-casADi__Matrix_CasADi__SX___reserve x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___reserve x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_reserve :: SXMatrixClass a => a -> Int -> IO ()
-sxMatrix_reserve x = casADi__Matrix_CasADi__SX___reserve (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___reserve_TIC" c_CasADi__Matrix_CasADi__SX___reserve_TIC
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___reserve'
-  :: SXMatrix -> Int -> Int -> IO ()
-casADi__Matrix_CasADi__SX___reserve' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___reserve_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_reserve' :: SXMatrixClass a => a -> Int -> Int -> IO ()
-sxMatrix_reserve' x = casADi__Matrix_CasADi__SX___reserve' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___erase" c_CasADi__Matrix_CasADi__SX___erase
-  :: Ptr SXMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__Matrix_CasADi__SX___erase
-  :: SXMatrix -> Vector Int -> Vector Int -> IO ()
-casADi__Matrix_CasADi__SX___erase x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___erase x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Erase a submatrix Erase rows and/or columns of a matrix.
--}
-sxMatrix_erase :: SXMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
-sxMatrix_erase x = casADi__Matrix_CasADi__SX___erase (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___remove" c_CasADi__Matrix_CasADi__SX___remove
-  :: Ptr SXMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__Matrix_CasADi__SX___remove
-  :: SXMatrix -> Vector Int -> Vector Int -> IO ()
-casADi__Matrix_CasADi__SX___remove x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___remove x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->Remove rows or columns Rremove/delete rows and/or columns of a matrix.
--}
-sxMatrix_remove :: SXMatrixClass a => a -> Vector Int -> Vector Int -> IO ()
-sxMatrix_remove x = casADi__Matrix_CasADi__SX___remove (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___enlarge" c_CasADi__Matrix_CasADi__SX___enlarge
-  :: Ptr SXMatrix' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
-casADi__Matrix_CasADi__SX___enlarge
-  :: SXMatrix -> Int -> Int -> Vector Int -> Vector Int -> IO ()
-casADi__Matrix_CasADi__SX___enlarge x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__Matrix_CasADi__SX___enlarge x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-{-|
->Enlarge matrix Make the matrix larger by inserting empty rows and columns,
->keeping the existing non-zeros.
--}
-sxMatrix_enlarge :: SXMatrixClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
-sxMatrix_enlarge x = casADi__Matrix_CasADi__SX___enlarge (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___data" c_CasADi__Matrix_CasADi__SX___data
-  :: Ptr SXMatrix' -> IO (Ptr (CppVec (Ptr SX')))
-casADi__Matrix_CasADi__SX___data
-  :: SXMatrix -> IO (Vector SX)
-casADi__Matrix_CasADi__SX___data x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___data x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  std::vector< T > & CasADi::Matrix< T >::data()
->------------------------------------------------------------------------
->
->Access the non-zero elements.
->
->>  const std::vector< T > & CasADi::Matrix< T >::data() const 
->------------------------------------------------------------------------
->
->Const access the non-zero elements.
--}
-sxMatrix_data :: SXMatrixClass a => a -> IO (Vector SX)
-sxMatrix_data x = casADi__Matrix_CasADi__SX___data (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sparsityRef" c_CasADi__Matrix_CasADi__SX___sparsityRef
-  :: Ptr SXMatrix' -> IO (Ptr CRSSparsity')
-casADi__Matrix_CasADi__SX___sparsityRef
-  :: SXMatrix -> IO CRSSparsity
-casADi__Matrix_CasADi__SX___sparsityRef x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sparsityRef x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Access the sparsity, make a copy if there are multiple references to it.
--}
-sxMatrix_sparsityRef :: SXMatrixClass a => a -> IO CRSSparsity
-sxMatrix_sparsityRef x = casADi__Matrix_CasADi__SX___sparsityRef (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___set" c_CasADi__Matrix_CasADi__SX___set
-  :: Ptr SXMatrix' -> Ptr SX' -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___set
-  :: SXMatrix -> SX -> Sparsity -> IO ()
-casADi__Matrix_CasADi__SX___set x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___set x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  void CasADi::Matrix< T >::set(T val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Set the non-zero elements, scalar.
->
->>  void CasADi::Matrix< T >::set(const std::vector< T > &val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Set the non-zero elements, vector.
->
->>  void CasADi::Matrix< T >::set(const Matrix< T > &val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Set the non-zero elements, Matrix.
->
->>  void CasADi::Matrix< T >::set(const T *val, Sparsity sp=SPARSE)
->------------------------------------------------------------------------
->
->Legacy - use setArray instead.
--}
-sxMatrix_set :: SXMatrixClass a => a -> SX -> Sparsity -> IO ()
-sxMatrix_set x = casADi__Matrix_CasADi__SX___set (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___set_TIC" c_CasADi__Matrix_CasADi__SX___set_TIC
-  :: Ptr SXMatrix' -> Ptr SX' -> IO ()
-casADi__Matrix_CasADi__SX___set'
-  :: SXMatrix -> SX -> IO ()
-casADi__Matrix_CasADi__SX___set' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___set_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_set' :: SXMatrixClass a => a -> SX -> IO ()
-sxMatrix_set' x = casADi__Matrix_CasADi__SX___set' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___get" c_CasADi__Matrix_CasADi__SX___get
-  :: Ptr SXMatrix' -> Ptr SX' -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___get
-  :: SXMatrix -> SX -> Sparsity -> IO ()
-casADi__Matrix_CasADi__SX___get x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___get x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  void CasADi::Matrix< T >::get(T &val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Get the non-zero elements, scalar.
->
->>  void CasADi::Matrix< T >::get(std::vector< T > &val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Get the non-zero elements, vector.
->
->>  void CasADi::Matrix< T >::get(Matrix< T > &val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Get the non-zero elements, Matrix.
->
->>  void CasADi::Matrix< T >::get(T *val, Sparsity sp=SPARSE) const 
->------------------------------------------------------------------------
->
->Legacy - use getArray instead.
--}
-sxMatrix_get :: SXMatrixClass a => a -> SX -> Sparsity -> IO ()
-sxMatrix_get x = casADi__Matrix_CasADi__SX___get (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___get_TIC" c_CasADi__Matrix_CasADi__SX___get_TIC
-  :: Ptr SXMatrix' -> Ptr SX' -> IO ()
-casADi__Matrix_CasADi__SX___get'
-  :: SXMatrix -> SX -> IO ()
-casADi__Matrix_CasADi__SX___get' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___get_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_get' :: SXMatrixClass a => a -> SX -> IO ()
-sxMatrix_get' x = casADi__Matrix_CasADi__SX___get' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___set_TIC_TIC" c_CasADi__Matrix_CasADi__SX___set_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___set''
-  :: SXMatrix -> Vector SX -> Sparsity -> IO ()
-casADi__Matrix_CasADi__SX___set'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___set_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_set'' :: SXMatrixClass a => a -> Vector SX -> Sparsity -> IO ()
-sxMatrix_set'' x = casADi__Matrix_CasADi__SX___set'' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> IO ()
-casADi__Matrix_CasADi__SX___set'''
-  :: SXMatrix -> Vector SX -> IO ()
-casADi__Matrix_CasADi__SX___set''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_set''' :: SXMatrixClass a => a -> Vector SX -> IO ()
-sxMatrix_set''' x = casADi__Matrix_CasADi__SX___set''' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___get_TIC_TIC" c_CasADi__Matrix_CasADi__SX___get_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___get''
-  :: SXMatrix -> Vector SX -> Sparsity -> IO ()
-casADi__Matrix_CasADi__SX___get'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___get_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_get'' :: SXMatrixClass a => a -> Vector SX -> Sparsity -> IO ()
-sxMatrix_get'' x = casADi__Matrix_CasADi__SX___get'' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> IO ()
-casADi__Matrix_CasADi__SX___get'''
-  :: SXMatrix -> Vector SX -> IO ()
-casADi__Matrix_CasADi__SX___get''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_get''' :: SXMatrixClass a => a -> Vector SX -> IO ()
-sxMatrix_get''' x = casADi__Matrix_CasADi__SX___get''' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___set''''
-  :: SXMatrix -> SXMatrix -> Sparsity -> IO ()
-casADi__Matrix_CasADi__SX___set'''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_set'''' :: SXMatrixClass a => a -> SXMatrix -> Sparsity -> IO ()
-sxMatrix_set'''' x = casADi__Matrix_CasADi__SX___set'''' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___set'''''
-  :: SXMatrix -> SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___set''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___set_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_set''''' :: SXMatrixClass a => a -> SXMatrix -> IO ()
-sxMatrix_set''''' x = casADi__Matrix_CasADi__SX___set''''' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO ()
-casADi__Matrix_CasADi__SX___get''''
-  :: SXMatrix -> SXMatrix -> Sparsity -> IO ()
-casADi__Matrix_CasADi__SX___get'''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_get'''' :: SXMatrixClass a => a -> SXMatrix -> Sparsity -> IO ()
-sxMatrix_get'''' x = casADi__Matrix_CasADi__SX___get'''' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-casADi__Matrix_CasADi__SX___get'''''
-  :: SXMatrix -> SXMatrix -> IO ()
-casADi__Matrix_CasADi__SX___get''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___get_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_get''''' :: SXMatrixClass a => a -> SXMatrix -> IO ()
-sxMatrix_get''''' x = casADi__Matrix_CasADi__SX___get''''' (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sparse" c_CasADi__Matrix_CasADi__SX___sparse
-  :: CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sparse
-  :: Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sparse x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___sparse x0' x1' >>= wrapReturn
-
--- classy wrapper
-{-|
->>  Matrix< T > CasADi::Matrix< T >::sparse(int nrow, int ncol=1)
->
->>  Matrix< T > CasADi::Matrix< T >::sparse(const std::pair< int, int > &nm)
->------------------------------------------------------------------------
->
->create a sparse matrix with all zeros
->
->>  Matrix< T > CasADi::Matrix< T >::sparse(const std::vector< int > &row, const std::vector< int > &col, const std::vector< T > &d, int n, int m)
->
->>  Matrix< T > CasADi::Matrix< T >::sparse(const std::vector< int > &row, const std::vector< int > &col, const std::vector< T > &d, const std::pair< int, int > &nm)
->------------------------------------------------------------------------
->
->Construct a sparse matrix from triplet form.
--}
-sxMatrix_sparse :: Int -> Int -> IO SXMatrix
-sxMatrix_sparse = casADi__Matrix_CasADi__SX___sparse
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sparse_TIC" c_CasADi__Matrix_CasADi__SX___sparse_TIC
-  :: CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sparse'
-  :: Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___sparse_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_sparse' :: Int -> IO SXMatrix
-sxMatrix_sparse' = casADi__Matrix_CasADi__SX___sparse'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sparse_TIC_TIC" c_CasADi__Matrix_CasADi__SX___sparse_TIC_TIC
-  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec (Ptr SX')) -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sparse''
-  :: Vector Int -> Vector Int -> Vector SX -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sparse'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___sparse_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_sparse'' :: Vector Int -> Vector Int -> Vector SX -> IO SXMatrix
-sxMatrix_sparse'' = casADi__Matrix_CasADi__SX___sparse''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___sparse_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___sparse_TIC_TIC_TIC
-  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec (Ptr SX')) -> CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___sparse'''
-  :: Vector Int -> Vector Int -> Vector SX -> Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___sparse''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__Matrix_CasADi__SX___sparse_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_sparse''' :: Vector Int -> Vector Int -> Vector SX -> Int -> Int -> IO SXMatrix
-sxMatrix_sparse''' = casADi__Matrix_CasADi__SX___sparse'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___zeros" c_CasADi__Matrix_CasADi__SX___zeros
-  :: Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___zeros
-  :: CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___zeros x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___zeros x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a dense matrix with all zeros
--}
-sxMatrix_zeros :: CRSSparsity -> IO SXMatrix
-sxMatrix_zeros = casADi__Matrix_CasADi__SX___zeros
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___zeros_TIC" c_CasADi__Matrix_CasADi__SX___zeros_TIC
-  :: CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___zeros'
-  :: Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___zeros' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___zeros_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_zeros' :: Int -> Int -> IO SXMatrix
-sxMatrix_zeros' = casADi__Matrix_CasADi__SX___zeros'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___zeros_TIC_TIC" c_CasADi__Matrix_CasADi__SX___zeros_TIC_TIC
-  :: CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___zeros''
-  :: Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___zeros'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___zeros_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_zeros'' :: Int -> IO SXMatrix
-sxMatrix_zeros'' = casADi__Matrix_CasADi__SX___zeros''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___ones" c_CasADi__Matrix_CasADi__SX___ones
-  :: Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___ones
-  :: CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___ones x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___ones x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all ones
--}
-sxMatrix_ones :: CRSSparsity -> IO SXMatrix
-sxMatrix_ones = casADi__Matrix_CasADi__SX___ones
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___ones_TIC" c_CasADi__Matrix_CasADi__SX___ones_TIC
-  :: CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___ones'
-  :: Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___ones' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___ones_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_ones' :: Int -> Int -> IO SXMatrix
-sxMatrix_ones' = casADi__Matrix_CasADi__SX___ones'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___ones_TIC_TIC" c_CasADi__Matrix_CasADi__SX___ones_TIC_TIC
-  :: CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___ones''
-  :: Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___ones'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___ones_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_ones'' :: Int -> IO SXMatrix
-sxMatrix_ones'' = casADi__Matrix_CasADi__SX___ones''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___inf" c_CasADi__Matrix_CasADi__SX___inf
-  :: Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___inf
-  :: CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___inf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___inf x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all inf
--}
-sxMatrix_inf :: CRSSparsity -> IO SXMatrix
-sxMatrix_inf = casADi__Matrix_CasADi__SX___inf
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___inf_TIC" c_CasADi__Matrix_CasADi__SX___inf_TIC
-  :: CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___inf'
-  :: Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___inf' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___inf_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_inf' :: Int -> Int -> IO SXMatrix
-sxMatrix_inf' = casADi__Matrix_CasADi__SX___inf'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___inf_TIC_TIC" c_CasADi__Matrix_CasADi__SX___inf_TIC_TIC
-  :: CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___inf''
-  :: Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___inf'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___inf_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_inf'' :: Int -> IO SXMatrix
-sxMatrix_inf'' = casADi__Matrix_CasADi__SX___inf''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___inf_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___inf_TIC_TIC_TIC
-  :: IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___inf'''
-  :: IO SXMatrix
-casADi__Matrix_CasADi__SX___inf'''  =
-  c_CasADi__Matrix_CasADi__SX___inf_TIC_TIC_TIC  >>= wrapReturn
-
--- classy wrapper
-sxMatrix_inf''' :: IO SXMatrix
-sxMatrix_inf''' = casADi__Matrix_CasADi__SX___inf'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___nan" c_CasADi__Matrix_CasADi__SX___nan
-  :: Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___nan
-  :: CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___nan x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___nan x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix with all nan
--}
-sxMatrix_nan :: CRSSparsity -> IO SXMatrix
-sxMatrix_nan = casADi__Matrix_CasADi__SX___nan
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___nan_TIC" c_CasADi__Matrix_CasADi__SX___nan_TIC
-  :: CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___nan'
-  :: Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___nan' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___nan_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_nan' :: Int -> Int -> IO SXMatrix
-sxMatrix_nan' = casADi__Matrix_CasADi__SX___nan'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___nan_TIC_TIC" c_CasADi__Matrix_CasADi__SX___nan_TIC_TIC
-  :: CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___nan''
-  :: Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___nan'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___nan_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_nan'' :: Int -> IO SXMatrix
-sxMatrix_nan'' = casADi__Matrix_CasADi__SX___nan''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___nan_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___nan_TIC_TIC_TIC
-  :: IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___nan'''
-  :: IO SXMatrix
-casADi__Matrix_CasADi__SX___nan'''  =
-  c_CasADi__Matrix_CasADi__SX___nan_TIC_TIC_TIC  >>= wrapReturn
-
--- classy wrapper
-sxMatrix_nan''' :: IO SXMatrix
-sxMatrix_nan''' = casADi__Matrix_CasADi__SX___nan'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___repmat" c_CasADi__Matrix_CasADi__SX___repmat
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___repmat
-  :: SXMatrix -> Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___repmat x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___repmat x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-{-|
->create a matrix by repeating an existing matrix
--}
-sxMatrix_repmat :: SXMatrix -> Int -> Int -> IO SXMatrix
-sxMatrix_repmat = casADi__Matrix_CasADi__SX___repmat
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___repmat_TIC" c_CasADi__Matrix_CasADi__SX___repmat_TIC
-  :: Ptr SXMatrix' -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___repmat'
-  :: SXMatrix -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___repmat' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___repmat_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_repmat' :: SXMatrix -> Int -> IO SXMatrix
-sxMatrix_repmat' = casADi__Matrix_CasADi__SX___repmat'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___eye" c_CasADi__Matrix_CasADi__SX___eye
-  :: CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___eye
-  :: Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___eye x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___eye x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix_eye :: Int -> IO SXMatrix
-sxMatrix_eye = casADi__Matrix_CasADi__SX___eye
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___isNull" c_CasADi__Matrix_CasADi__SX___isNull
-  :: Ptr SXMatrix' -> IO CInt
-casADi__Matrix_CasADi__SX___isNull
-  :: SXMatrix -> IO Bool
-casADi__Matrix_CasADi__SX___isNull x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___isNull x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->The following function is used to ensure similarity to MX, which is
->reference counted.
--}
-sxMatrix_isNull :: SXMatrixClass a => a -> IO Bool
-sxMatrix_isNull x = casADi__Matrix_CasADi__SX___isNull (castSXMatrix x)
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___setPrecision" c_CasADi__Matrix_CasADi__SX___setPrecision
-  :: CInt -> IO ()
-casADi__Matrix_CasADi__SX___setPrecision
-  :: Int -> IO ()
-casADi__Matrix_CasADi__SX___setPrecision x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___setPrecision x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the 'precision, width & scientific' used in printing and serializing to
->streams.
--}
-sxMatrix_setPrecision :: Int -> IO ()
-sxMatrix_setPrecision = casADi__Matrix_CasADi__SX___setPrecision
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___setWidth" c_CasADi__Matrix_CasADi__SX___setWidth
-  :: CInt -> IO ()
-casADi__Matrix_CasADi__SX___setWidth
-  :: Int -> IO ()
-casADi__Matrix_CasADi__SX___setWidth x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___setWidth x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the 'precision, width & scientific' used in printing and serializing to
->streams.
--}
-sxMatrix_setWidth :: Int -> IO ()
-sxMatrix_setWidth = casADi__Matrix_CasADi__SX___setWidth
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___setScientific" c_CasADi__Matrix_CasADi__SX___setScientific
-  :: CInt -> IO ()
-casADi__Matrix_CasADi__SX___setScientific
-  :: Bool -> IO ()
-casADi__Matrix_CasADi__SX___setScientific x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___setScientific x0' >>= wrapReturn
-
--- classy wrapper
-{-|
->Set the 'precision, width & scientific' used in printing and serializing to
->streams.
--}
-sxMatrix_setScientific :: Bool -> IO ()
-sxMatrix_setScientific = casADi__Matrix_CasADi__SX___setScientific
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix" c_CasADi__Matrix_CasADi__SX___SXMatrix
-  :: IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix
-  :: IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix  =
-  c_CasADi__Matrix_CasADi__SX___SXMatrix  >>= wrapReturn
-
--- classy wrapper
-{-|
->>  CasADi::Matrix< T >::Matrix()
->------------------------------------------------------------------------
->
->constructors
->
->empty 0-by-0 matrix constructor
->
->>  CasADi::Matrix< T >::Matrix(const Matrix< T > &m)
->------------------------------------------------------------------------
->
->Copy constructor.
->
->>  CasADi::Matrix< T >::Matrix(int n, int m)
->------------------------------------------------------------------------
->
->empty n-by-m matrix constructor
->
->>  CasADi::Matrix< T >::Matrix(int n, int m, const T &val)
->------------------------------------------------------------------------
->
->dense n-by-m matrix filled with val constructor
->
->>  CasADi::Matrix< T >::Matrix(int n, int m, const std::vector< int > &col, const std::vector< int > &rowind, const std::vector< T > &d=std::vector< T >())
->------------------------------------------------------------------------
->
->sparse n-by-m matrix filled with given sparsity
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< std::vector< T > > &m)
->------------------------------------------------------------------------
->
->dense matrix constructor with data given as vector of vectors
->
->>  CasADi::Matrix< T >::Matrix(const CRSSparsity &sparsity, const T &val=0)
->------------------------------------------------------------------------
->
->sparse matrix with a given sparsity
->
->>  CasADi::Matrix< T >::Matrix(const CRSSparsity &sparsity, const std::vector< T > &d)
->------------------------------------------------------------------------
->
->sparse matrix with a given sparsity and non-zero elements.
->
->>  CasADi::Matrix< T >::Matrix(double val)
->------------------------------------------------------------------------
->
->This constructor enables implicit type conversion from a numeric type.
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< T > &x)
->------------------------------------------------------------------------
->
->Construct from a vector.
->
->Thanks to implicit conversion, you can pretend that Matrix(const SX& x);
->exists. Note: above remark applies only to C++, not python or octave
->interfaces
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< T > &x, int n, int m)
->------------------------------------------------------------------------
->
->Construct dense matrix from a vector with the elements in column major
->ordering.
->
->>  CasADi::Matrix< T >::Matrix(const Matrix< A > &x)
->------------------------------------------------------------------------
->
->Create a matrix from a matrix with a different type of matrix entries
->(assuming that the scalar conversion is valid)
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x)
->------------------------------------------------------------------------
->
->Create an expression from an stl vector.
->
->>  CasADi::Matrix< T >::Matrix(const std::vector< A > &x, int n, int m)
->------------------------------------------------------------------------
->
->Create a non-vector expression from an stl vector.
--}
-sxMatrix :: IO SXMatrix
-sxMatrix = casADi__Matrix_CasADi__SX___SXMatrix
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix'
-  :: SXMatrix -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix' :: SXMatrix -> IO SXMatrix
-sxMatrix' = casADi__Matrix_CasADi__SX___SXMatrix'
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC
-  :: CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix''
-  :: Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix'' :: Int -> Int -> IO SXMatrix
-sxMatrix'' = casADi__Matrix_CasADi__SX___SXMatrix''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC
-  :: CInt -> CInt -> Ptr SX' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix'''
-  :: Int -> Int -> SX -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix''' :: Int -> Int -> SX -> IO SXMatrix
-sxMatrix''' = casADi__Matrix_CasADi__SX___SXMatrix'''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec (Ptr SX')) -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix''''
-  :: Int -> Int -> Vector Int -> Vector Int -> Vector SX -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix'''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
--- classy wrapper
-sxMatrix'''' :: Int -> Int -> Vector Int -> Vector Int -> Vector SX -> IO SXMatrix
-sxMatrix'''' = casADi__Matrix_CasADi__SX___SXMatrix''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix'''''
-  :: Int -> Int -> Vector Int -> Vector Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix''''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
--- classy wrapper
-sxMatrix''''' :: Int -> Int -> Vector Int -> Vector Int -> IO SXMatrix
-sxMatrix''''' = casADi__Matrix_CasADi__SX___SXMatrix'''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix''''''
-  :: Vector (Vector SX) -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix'''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix'''''' :: Vector (Vector SX) -> IO SXMatrix
-sxMatrix'''''' = casADi__Matrix_CasADi__SX___SXMatrix''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> Ptr SX' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix'''''''
-  :: CRSSparsity -> SX -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix''''''' :: CRSSparsity -> SX -> IO SXMatrix
-sxMatrix''''''' = casADi__Matrix_CasADi__SX___SXMatrix'''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix''''''''
-  :: CRSSparsity -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix'''''''' :: CRSSparsity -> IO SXMatrix
-sxMatrix'''''''' = casADi__Matrix_CasADi__SX___SXMatrix''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> Ptr (CppVec (Ptr SX')) -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix'''''''''
-  :: CRSSparsity -> Vector SX -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
--- classy wrapper
-sxMatrix''''''''' :: CRSSparsity -> Vector SX -> IO SXMatrix
-sxMatrix''''''''' = casADi__Matrix_CasADi__SX___SXMatrix'''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: CDouble -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix''''''''''
-  :: Double -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix'''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix'''''''''' :: Double -> IO SXMatrix
-sxMatrix'''''''''' = casADi__Matrix_CasADi__SX___SXMatrix''''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix'''''''''''
-  :: Vector SX -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
--- classy wrapper
-sxMatrix''''''''''' :: Vector SX -> IO SXMatrix
-sxMatrix''''''''''' = casADi__Matrix_CasADi__SX___SXMatrix'''''''''''
-
-
--- direct wrapper
-foreign import ccall unsafe "CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr SX')) -> CInt -> CInt -> IO (Ptr SXMatrix')
-casADi__Matrix_CasADi__SX___SXMatrix''''''''''''
-  :: Vector SX -> Int -> Int -> IO SXMatrix
-casADi__Matrix_CasADi__SX___SXMatrix'''''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__Matrix_CasADi__SX___SXMatrix_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
--- classy wrapper
-sxMatrix'''''''''''' :: Vector SX -> Int -> Int -> IO SXMatrix
-sxMatrix'''''''''''' = casADi__Matrix_CasADi__SX___SXMatrix''''''''''''
-
diff --git a/Casadi/Wrappers/Classes/SharedObject.hs b/Casadi/Wrappers/Classes/SharedObject.hs
--- a/Casadi/Wrappers/Classes/SharedObject.hs
+++ b/Casadi/Wrappers/Classes/SharedObject.hs
@@ -12,7 +12,9 @@
          sharedObject_assertInit,
          sharedObject_checkNode,
          sharedObject_init,
+         sharedObject_init',
          sharedObject_isInit,
+         sharedObject_isNull,
          sharedObject_makeUnique,
          sharedObject_makeUnique',
          sharedObject_printPtr',
@@ -53,23 +55,39 @@
 
 -- direct wrapper
 foreign import ccall unsafe "CasADi__SharedObject__init" c_CasADi__SharedObject__init
-  :: Ptr SharedObject' -> IO ()
+  :: Ptr SharedObject' -> CInt -> IO ()
 casADi__SharedObject__init
-  :: SharedObject -> IO ()
-casADi__SharedObject__init x0 =
+  :: SharedObject -> Bool -> IO ()
+casADi__SharedObject__init x0 x1 =
   withMarshal x0 $ \x0' ->
-  c_CasADi__SharedObject__init x0' >>= wrapReturn
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SharedObject__init x0' x1' >>= wrapReturn
 
 -- classy wrapper
 {-|
->Initialize or re-initialize the object: more documentation in the node class
->( SharedObjectNode and derived classes)
+>Initialize or re-initialize the object:
+>
+>more documentation in the node class ( SharedObjectNode and derived classes)
 -}
-sharedObject_init :: SharedObjectClass a => a -> IO ()
+sharedObject_init :: SharedObjectClass a => a -> Bool -> IO ()
 sharedObject_init x = casADi__SharedObject__init (castSharedObject x)
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__SharedObject__init_TIC" c_CasADi__SharedObject__init_TIC
+  :: Ptr SharedObject' -> IO ()
+casADi__SharedObject__init'
+  :: SharedObject -> IO ()
+casADi__SharedObject__init' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SharedObject__init_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sharedObject_init' :: SharedObjectClass a => a -> IO ()
+sharedObject_init' x = casADi__SharedObject__init' (castSharedObject x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__SharedObject__isInit" c_CasADi__SharedObject__isInit
   :: Ptr SharedObject' -> IO CInt
 casADi__SharedObject__isInit
@@ -97,13 +115,31 @@
 
 -- classy wrapper
 {-|
->Assert that it is initialized.
+>[INTERNAL]  Assert
+>that it is initialized
 -}
 sharedObject_assertInit :: SharedObjectClass a => a -> IO ()
 sharedObject_assertInit x = casADi__SharedObject__assertInit (castSharedObject x)
 
 
 -- direct wrapper
+foreign import ccall unsafe "CasADi__SharedObject__isNull" c_CasADi__SharedObject__isNull
+  :: Ptr SharedObject' -> IO CInt
+casADi__SharedObject__isNull
+  :: SharedObject -> IO Bool
+casADi__SharedObject__isNull x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SharedObject__isNull x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is a null pointer?
+-}
+sharedObject_isNull :: SharedObjectClass a => a -> IO Bool
+sharedObject_isNull x = casADi__SharedObject__isNull (castSharedObject x)
+
+
+-- direct wrapper
 foreign import ccall unsafe "CasADi__SharedObject__checkNode" c_CasADi__SharedObject__checkNode
   :: Ptr SharedObject' -> IO CInt
 casADi__SharedObject__checkNode
@@ -114,7 +150,8 @@
 
 -- classy wrapper
 {-|
->Assert that the node is pointing to the right type of object.
+>[INTERNAL]  Assert
+>that the node is pointing to the right type of object
 -}
 sharedObject_checkNode :: SharedObjectClass a => a -> IO Bool
 sharedObject_checkNode x = casADi__SharedObject__checkNode (castSharedObject x)
@@ -132,8 +169,16 @@
 
 -- classy wrapper
 {-|
+>>  void CasADi::SharedObject::makeUnique(bool clone_members=true)
+>------------------------------------------------------------------------
+>
 >If there are other references to the object, then make a deep copy of it and
->point to this new object.
+>point to this new object
+>
+>>  void CasADi::SharedObject::makeUnique(std::map< SharedObjectNode *, SharedObject > &already_copied, bool clone_members=true)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>SWIGINTERNAL
 -}
 sharedObject_makeUnique :: SharedObjectClass a => a -> Bool -> IO ()
 sharedObject_makeUnique x = casADi__SharedObject__makeUnique (castSharedObject x)
diff --git a/Casadi/Wrappers/Classes/SimpleHomotopyNLPSolver.hs b/Casadi/Wrappers/Classes/SimpleHomotopyNLPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SimpleHomotopyNLPSolver.hs
@@ -0,0 +1,104 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SimpleHomotopyNLPSolver
+       (
+         SimpleHomotopyNLPSolver,
+         SimpleHomotopyNLPSolverClass(..),
+         simpleHomotopyNLPSolver,
+         simpleHomotopyNLPSolver',
+         simpleHomotopyNLPSolver_checkNode,
+         simpleHomotopyNLPSolver_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SimpleHomotopyNLPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleHomotopyNLPSolver__checkNode" c_CasADi__SimpleHomotopyNLPSolver__checkNode
+  :: Ptr SimpleHomotopyNLPSolver' -> IO CInt
+casADi__SimpleHomotopyNLPSolver__checkNode
+  :: SimpleHomotopyNLPSolver -> IO Bool
+casADi__SimpleHomotopyNLPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SimpleHomotopyNLPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+simpleHomotopyNLPSolver_checkNode :: SimpleHomotopyNLPSolverClass a => a -> IO Bool
+simpleHomotopyNLPSolver_checkNode x = casADi__SimpleHomotopyNLPSolver__checkNode (castSimpleHomotopyNLPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleHomotopyNLPSolver__creator" c_CasADi__SimpleHomotopyNLPSolver__creator
+  :: Ptr Function' -> IO (Ptr HomotopyNLPSolver')
+casADi__SimpleHomotopyNLPSolver__creator
+  :: Function -> IO HomotopyNLPSolver
+casADi__SimpleHomotopyNLPSolver__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SimpleHomotopyNLPSolver__creator x0' >>= wrapReturn
+
+-- classy wrapper
+simpleHomotopyNLPSolver_creator :: Function -> IO HomotopyNLPSolver
+simpleHomotopyNLPSolver_creator = casADi__SimpleHomotopyNLPSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver" c_CasADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver
+  :: IO (Ptr SimpleHomotopyNLPSolver')
+casADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver
+  :: IO SimpleHomotopyNLPSolver
+casADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver  =
+  c_CasADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SimpleHomotopyNLPSolver::SimpleHomotopyNLPSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SimpleHomotopyNLPSolver::SimpleHomotopyNLPSolver(const Function &hnlp)
+>------------------------------------------------------------------------
+>
+>Create an NLP solver instance.
+-}
+simpleHomotopyNLPSolver :: IO SimpleHomotopyNLPSolver
+simpleHomotopyNLPSolver = casADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver_TIC" c_CasADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver_TIC
+  :: Ptr Function' -> IO (Ptr SimpleHomotopyNLPSolver')
+casADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver'
+  :: Function -> IO SimpleHomotopyNLPSolver
+casADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+simpleHomotopyNLPSolver' :: Function -> IO SimpleHomotopyNLPSolver
+simpleHomotopyNLPSolver' = casADi__SimpleHomotopyNLPSolver__SimpleHomotopyNLPSolver'
+
diff --git a/Casadi/Wrappers/Classes/SimpleIndefDpleSolver.hs b/Casadi/Wrappers/Classes/SimpleIndefDpleSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SimpleIndefDpleSolver.hs
@@ -0,0 +1,113 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SimpleIndefDpleSolver
+       (
+         SimpleIndefDpleSolver,
+         SimpleIndefDpleSolverClass(..),
+         simpleIndefDpleSolver,
+         simpleIndefDpleSolver',
+         simpleIndefDpleSolver_checkNode,
+         simpleIndefDpleSolver_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SimpleIndefDpleSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleIndefDpleSolver__checkNode" c_CasADi__SimpleIndefDpleSolver__checkNode
+  :: Ptr SimpleIndefDpleSolver' -> IO CInt
+casADi__SimpleIndefDpleSolver__checkNode
+  :: SimpleIndefDpleSolver -> IO Bool
+casADi__SimpleIndefDpleSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SimpleIndefDpleSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+simpleIndefDpleSolver_checkNode :: SimpleIndefDpleSolverClass a => a -> IO Bool
+simpleIndefDpleSolver_checkNode x = casADi__SimpleIndefDpleSolver__checkNode (castSimpleIndefDpleSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleIndefDpleSolver__creator" c_CasADi__SimpleIndefDpleSolver__creator
+  :: Ptr (CppVec (Ptr Sparsity')) -> Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr DpleSolver')
+casADi__SimpleIndefDpleSolver__creator
+  :: Vector Sparsity -> Vector Sparsity -> IO DpleSolver
+casADi__SimpleIndefDpleSolver__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SimpleIndefDpleSolver__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+simpleIndefDpleSolver_creator :: Vector Sparsity -> Vector Sparsity -> IO DpleSolver
+simpleIndefDpleSolver_creator = casADi__SimpleIndefDpleSolver__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver" c_CasADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver
+  :: IO (Ptr SimpleIndefDpleSolver')
+casADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver
+  :: IO SimpleIndefDpleSolver
+casADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver  =
+  c_CasADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SimpleIndefDpleSolver::SimpleIndefDpleSolver()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::SimpleIndefDpleSolver::SimpleIndefDpleSolver(const std::vector< Sparsity > &A, const std::vector< Sparsity > &V)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>A:  List of sparsities of A_i
+>
+>V:  List of sparsities of V_i
+-}
+simpleIndefDpleSolver :: IO SimpleIndefDpleSolver
+simpleIndefDpleSolver = casADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver_TIC" c_CasADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver_TIC
+  :: Ptr (CppVec (Ptr Sparsity')) -> Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr SimpleIndefDpleSolver')
+casADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver'
+  :: Vector Sparsity -> Vector Sparsity -> IO SimpleIndefDpleSolver
+casADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+simpleIndefDpleSolver' :: Vector Sparsity -> Vector Sparsity -> IO SimpleIndefDpleSolver
+simpleIndefDpleSolver' = casADi__SimpleIndefDpleSolver__SimpleIndefDpleSolver'
+
diff --git a/Casadi/Wrappers/Classes/Simulator.hs b/Casadi/Wrappers/Classes/Simulator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Simulator.hs
@@ -0,0 +1,163 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Simulator
+       (
+         Simulator,
+         SimulatorClass(..),
+         simulator,
+         simulator',
+         simulator'',
+         simulator''',
+         simulator'''',
+         simulator_checkNode,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Simulator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Simulator__checkNode" c_CasADi__Simulator__checkNode
+  :: Ptr Simulator' -> IO CInt
+casADi__Simulator__checkNode
+  :: Simulator -> IO Bool
+casADi__Simulator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Simulator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+simulator_checkNode :: SimulatorClass a => a -> IO Bool
+simulator_checkNode x = casADi__Simulator__checkNode (castSimulator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Simulator__Simulator" c_CasADi__Simulator__Simulator
+  :: IO (Ptr Simulator')
+casADi__Simulator__Simulator
+  :: IO Simulator
+casADi__Simulator__Simulator  =
+  c_CasADi__Simulator__Simulator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Simulator::Simulator()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::Simulator::Simulator(const Integrator &integrator, const Function &output_fcn, const std::vector< double > &grid)
+>------------------------------------------------------------------------
+>
+>Constructor.
+>
+>Parameters:
+>-----------
+>
+>output_fcn:  output function which maps to n outputs.
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>  CasADi::Simulator::Simulator(const Integrator &integrator, const std::vector< double > &grid)
+>------------------------------------------------------------------------
+>
+>Output function equal to the state.
+-}
+simulator :: IO Simulator
+simulator = casADi__Simulator__Simulator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Simulator__Simulator_TIC" c_CasADi__Simulator__Simulator_TIC
+  :: Ptr Integrator' -> Ptr Function' -> Ptr (CppVec CDouble) -> IO (Ptr Simulator')
+casADi__Simulator__Simulator'
+  :: Integrator -> Function -> Vector Double -> IO Simulator
+casADi__Simulator__Simulator' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Simulator__Simulator_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+simulator' :: Integrator -> Function -> Vector Double -> IO Simulator
+simulator' = casADi__Simulator__Simulator'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Simulator__Simulator_TIC_TIC" c_CasADi__Simulator__Simulator_TIC_TIC
+  :: Ptr Integrator' -> Ptr Function' -> Ptr DMatrix' -> IO (Ptr Simulator')
+casADi__Simulator__Simulator''
+  :: Integrator -> Function -> DMatrix -> IO Simulator
+casADi__Simulator__Simulator'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Simulator__Simulator_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+simulator'' :: Integrator -> Function -> DMatrix -> IO Simulator
+simulator'' = casADi__Simulator__Simulator''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Simulator__Simulator_TIC_TIC_TIC" c_CasADi__Simulator__Simulator_TIC_TIC_TIC
+  :: Ptr Integrator' -> Ptr (CppVec CDouble) -> IO (Ptr Simulator')
+casADi__Simulator__Simulator'''
+  :: Integrator -> Vector Double -> IO Simulator
+casADi__Simulator__Simulator''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Simulator__Simulator_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+simulator''' :: Integrator -> Vector Double -> IO Simulator
+simulator''' = casADi__Simulator__Simulator'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Simulator__Simulator_TIC_TIC_TIC_TIC" c_CasADi__Simulator__Simulator_TIC_TIC_TIC_TIC
+  :: Ptr Integrator' -> Ptr DMatrix' -> IO (Ptr Simulator')
+casADi__Simulator__Simulator''''
+  :: Integrator -> DMatrix -> IO Simulator
+casADi__Simulator__Simulator'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Simulator__Simulator_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+simulator'''' :: Integrator -> DMatrix -> IO Simulator
+simulator'''' = casADi__Simulator__Simulator''''
+
diff --git a/Casadi/Wrappers/Classes/Slice.hs b/Casadi/Wrappers/Classes/Slice.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Slice.hs
@@ -0,0 +1,257 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Slice
+       (
+         Slice,
+         SliceClass(..),
+         slice,
+         slice',
+         slice'',
+         slice''',
+         slice'''',
+         slice''''',
+         slice_getAll,
+         slice_getAll',
+         slice_isSlice,
+         slice_isSlice2,
+         slice_operator_equals,
+         slice_operator_nequals,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Slice where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__isSlice" c_CasADi__Slice__isSlice
+  :: Ptr (CppVec CInt) -> IO CInt
+casADi__Slice__isSlice
+  :: Vector Int -> IO Bool
+casADi__Slice__isSlice x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Slice__isSlice x0' >>= wrapReturn
+
+-- classy wrapper
+slice_isSlice :: Vector Int -> IO Bool
+slice_isSlice = casADi__Slice__isSlice
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__isSlice2" c_CasADi__Slice__isSlice2
+  :: Ptr (CppVec CInt) -> IO CInt
+casADi__Slice__isSlice2
+  :: Vector Int -> IO Bool
+casADi__Slice__isSlice2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Slice__isSlice2 x0' >>= wrapReturn
+
+-- classy wrapper
+slice_isSlice2 :: Vector Int -> IO Bool
+slice_isSlice2 = casADi__Slice__isSlice2
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__getAll" c_CasADi__Slice__getAll
+  :: Ptr Slice' -> CInt -> IO (Ptr (CppVec CInt))
+casADi__Slice__getAll
+  :: Slice -> Int -> IO (Vector Int)
+casADi__Slice__getAll x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Slice__getAll x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::vector< int > CasADi::Slice::getAll(int len) const 
+>------------------------------------------------------------------------
+>
+>Get a vector of indices.
+>
+>>  std::vector< int > CasADi::Slice::getAll(const Slice &outer, int len) const 
+>------------------------------------------------------------------------
+>
+>Get a vector of indices (nested slice)
+-}
+slice_getAll :: SliceClass a => a -> Int -> IO (Vector Int)
+slice_getAll x = casADi__Slice__getAll (castSlice x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__getAll_TIC" c_CasADi__Slice__getAll_TIC
+  :: Ptr Slice' -> Ptr Slice' -> CInt -> IO (Ptr (CppVec CInt))
+casADi__Slice__getAll'
+  :: Slice -> Slice -> Int -> IO (Vector Int)
+casADi__Slice__getAll' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Slice__getAll_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+slice_getAll' :: SliceClass a => a -> Slice -> Int -> IO (Vector Int)
+slice_getAll' x = casADi__Slice__getAll' (castSlice x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__operator_equals" c_CasADi__Slice__operator_equals
+  :: Ptr Slice' -> Ptr Slice' -> IO CInt
+casADi__Slice__operator_equals
+  :: Slice -> Slice -> IO Bool
+casADi__Slice__operator_equals x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Slice__operator_equals x0' x1' >>= wrapReturn
+
+-- classy wrapper
+slice_operator_equals :: SliceClass a => a -> Slice -> IO Bool
+slice_operator_equals x = casADi__Slice__operator_equals (castSlice x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__operator_nequals" c_CasADi__Slice__operator_nequals
+  :: Ptr Slice' -> Ptr Slice' -> IO CInt
+casADi__Slice__operator_nequals
+  :: Slice -> Slice -> IO Bool
+casADi__Slice__operator_nequals x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Slice__operator_nequals x0' x1' >>= wrapReturn
+
+-- classy wrapper
+slice_operator_nequals :: SliceClass a => a -> Slice -> IO Bool
+slice_operator_nequals x = casADi__Slice__operator_nequals (castSlice x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__Slice" c_CasADi__Slice__Slice
+  :: IO (Ptr Slice')
+casADi__Slice__Slice
+  :: IO Slice
+casADi__Slice__Slice  =
+  c_CasADi__Slice__Slice  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Slice::Slice()
+>------------------------------------------------------------------------
+>
+>Defailt constructor - all elements.
+>
+>>  CasADi::Slice::Slice(int i)
+>------------------------------------------------------------------------
+>
+>A single element.
+>
+>>  CasADi::Slice::Slice(int start, int stop, int step=1)
+>------------------------------------------------------------------------
+>
+>A slice.
+>
+>>  CasADi::Slice::Slice(const std::vector< int > &v)
+>------------------------------------------------------------------------
+>
+>Construct from an index vector (requires isSlice(v) to be true)
+>
+>>  CasADi::Slice::Slice(const std::vector< int > &v, Slice &outer)
+>------------------------------------------------------------------------
+>
+>Construct nested slices from an index vector (requires isSlice2(v) to be
+>true)
+-}
+slice :: IO Slice
+slice = casADi__Slice__Slice
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__Slice_TIC" c_CasADi__Slice__Slice_TIC
+  :: CInt -> IO (Ptr Slice')
+casADi__Slice__Slice'
+  :: Int -> IO Slice
+casADi__Slice__Slice' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Slice__Slice_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+slice' :: Int -> IO Slice
+slice' = casADi__Slice__Slice'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__Slice_TIC_TIC" c_CasADi__Slice__Slice_TIC_TIC
+  :: CInt -> CInt -> CInt -> IO (Ptr Slice')
+casADi__Slice__Slice''
+  :: Int -> Int -> Int -> IO Slice
+casADi__Slice__Slice'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Slice__Slice_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+slice'' :: Int -> Int -> Int -> IO Slice
+slice'' = casADi__Slice__Slice''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__Slice_TIC_TIC_TIC" c_CasADi__Slice__Slice_TIC_TIC_TIC
+  :: CInt -> CInt -> IO (Ptr Slice')
+casADi__Slice__Slice'''
+  :: Int -> Int -> IO Slice
+casADi__Slice__Slice''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Slice__Slice_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+slice''' :: Int -> Int -> IO Slice
+slice''' = casADi__Slice__Slice'''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__Slice_TIC_TIC_TIC_TIC" c_CasADi__Slice__Slice_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> IO (Ptr Slice')
+casADi__Slice__Slice''''
+  :: Vector Int -> IO Slice
+casADi__Slice__Slice'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Slice__Slice_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+slice'''' :: Vector Int -> IO Slice
+slice'''' = casADi__Slice__Slice''''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Slice__Slice_TIC_TIC_TIC_TIC_TIC" c_CasADi__Slice__Slice_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec CInt) -> Ptr Slice' -> IO (Ptr Slice')
+casADi__Slice__Slice'''''
+  :: Vector Int -> Slice -> IO Slice
+casADi__Slice__Slice''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Slice__Slice_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+slice''''' :: Vector Int -> Slice -> IO Slice
+slice''''' = casADi__Slice__Slice'''''
+
diff --git a/Casadi/Wrappers/Classes/Sparsity.hs b/Casadi/Wrappers/Classes/Sparsity.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Sparsity.hs
@@ -0,0 +1,2463 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Sparsity
+       (
+         Sparsity,
+         SparsityClass(..),
+         sparsity,
+         sparsity',
+         sparsity'',
+         sparsity_append,
+         sparsity_appendColumns,
+         sparsity_band,
+         sparsity_banded,
+         sparsity_checkNode,
+         sparsity_clearCache,
+         sparsity_colind,
+         sparsity_compress,
+         sparsity_compressed,
+         sparsity_dense,
+         sparsity_dense',
+         sparsity_depthFirstSearch,
+         sparsity_diag,
+         sparsity_diag',
+         sparsity_dimString,
+         sparsity_dulmageMendelsohn,
+         sparsity_dulmageMendelsohn',
+         sparsity_eliminationTree,
+         sparsity_eliminationTree',
+         sparsity_enlarge,
+         sparsity_enlargeColumns,
+         sparsity_enlargeRows,
+         sparsity_erase,
+         sparsity_getCCS,
+         sparsity_getCRS,
+         sparsity_getCol,
+         sparsity_getDiag,
+         sparsity_getElements,
+         sparsity_getElements',
+         sparsity_getElements'',
+         sparsity_getElements''',
+         sparsity_getLowerNZ,
+         sparsity_getNZ,
+         sparsity_getNZ',
+         sparsity_getNZ'',
+         sparsity_getNZInplace,
+         sparsity_getTril,
+         sparsity_getTril',
+         sparsity_getTriplet,
+         sparsity_getTriu,
+         sparsity_getTriu',
+         sparsity_getUpperNZ,
+         sparsity_hasNZ,
+         sparsity_hash,
+         sparsity_isDense,
+         sparsity_isDiagonal,
+         sparsity_isEmpty,
+         sparsity_isEmpty',
+         sparsity_isEqual,
+         sparsity_isEqual',
+         sparsity_isReshape,
+         sparsity_isScalar,
+         sparsity_isScalar',
+         sparsity_isSingular,
+         sparsity_isSquare,
+         sparsity_isSymmetric,
+         sparsity_isTranspose,
+         sparsity_isTril,
+         sparsity_isTriu,
+         sparsity_isVector,
+         sparsity_largestFirstOrdering,
+         sparsity_makeDense,
+         sparsity_numel,
+         sparsity_operator_equals,
+         sparsity_operator_mul,
+         sparsity_operator_nequals,
+         sparsity_operator_plus,
+         sparsity_patternCombine,
+         sparsity_patternCombine',
+         sparsity_patternIntersection,
+         sparsity_patternIntersection',
+         sparsity_patternInverse,
+         sparsity_patternProduct,
+         sparsity_patternUnion,
+         sparsity_patternUnion',
+         sparsity_pmult,
+         sparsity_pmult',
+         sparsity_pmult'',
+         sparsity_pmult''',
+         sparsity_printCompact',
+         sparsity_reCache,
+         sparsity_removeDuplicates,
+         sparsity_reserve,
+         sparsity_reshape,
+         sparsity_resize,
+         sparsity_row,
+         sparsity_rowcol,
+         sparsity_rowsSequential,
+         sparsity_rowsSequential',
+         sparsity_sanityCheck,
+         sparsity_sanityCheck',
+         sparsity_scalar,
+         sparsity_scalar',
+         sparsity_size,
+         sparsity_size1,
+         sparsity_size2,
+         sparsity_sizeD,
+         sparsity_sizeL,
+         sparsity_sizeU,
+         sparsity_sparse,
+         sparsity_sparse',
+         sparsity_spy',
+         sparsity_spyMatlab,
+         sparsity_starColoring,
+         sparsity_starColoring',
+         sparsity_starColoring'',
+         sparsity_starColoring2,
+         sparsity_starColoring2',
+         sparsity_starColoring2'',
+         sparsity_stronglyConnectedComponents,
+         sparsity_sub,
+         sparsity_transpose,
+         sparsity_transpose',
+         sparsity_transpose'',
+         sparsity_tril,
+         sparsity_triplet,
+         sparsity_triplet',
+         sparsity_triplet'',
+         sparsity_triu,
+         sparsity_unidirectionalColoring,
+         sparsity_unidirectionalColoring',
+         sparsity_unidirectionalColoring'',
+         sparsity_unit,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Sparsity where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__scalar" c_CasADi__Sparsity__scalar
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__scalar
+  :: Bool -> IO Sparsity
+casADi__Sparsity__scalar x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__scalar x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a scalar sparsity pattern.
+-}
+sparsity_scalar :: Bool -> IO Sparsity
+sparsity_scalar = casADi__Sparsity__scalar
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__scalar_TIC" c_CasADi__Sparsity__scalar_TIC
+  :: IO (Ptr Sparsity')
+casADi__Sparsity__scalar'
+  :: IO Sparsity
+casADi__Sparsity__scalar'  =
+  c_CasADi__Sparsity__scalar_TIC  >>= wrapReturn
+
+-- classy wrapper
+sparsity_scalar' :: IO Sparsity
+sparsity_scalar' = casADi__Sparsity__scalar'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__dense" c_CasADi__Sparsity__dense
+  :: CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__dense
+  :: Int -> Int -> IO Sparsity
+casADi__Sparsity__dense x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__dense x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a dense rectangular sparsity pattern.
+-}
+sparsity_dense :: Int -> Int -> IO Sparsity
+sparsity_dense = casADi__Sparsity__dense
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__dense_TIC" c_CasADi__Sparsity__dense_TIC
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__dense'
+  :: Int -> IO Sparsity
+casADi__Sparsity__dense' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__dense_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_dense' :: Int -> IO Sparsity
+sparsity_dense' = casADi__Sparsity__dense'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sparse" c_CasADi__Sparsity__sparse
+  :: CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__sparse
+  :: Int -> Int -> IO Sparsity
+casADi__Sparsity__sparse x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__sparse x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create a sparse (empty) rectangular sparsity pattern.
+-}
+sparsity_sparse :: Int -> Int -> IO Sparsity
+sparsity_sparse = casADi__Sparsity__sparse
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sparse_TIC" c_CasADi__Sparsity__sparse_TIC
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__sparse'
+  :: Int -> IO Sparsity
+casADi__Sparsity__sparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__sparse_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_sparse' :: Int -> IO Sparsity
+sparsity_sparse' = casADi__Sparsity__sparse'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__unit" c_CasADi__Sparsity__unit
+  :: CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__unit
+  :: Int -> Int -> IO Sparsity
+casADi__Sparsity__unit x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__unit x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create the sparsity pattern for a unit vector of length n and a nonzero on
+>position el.
+-}
+sparsity_unit :: Int -> Int -> IO Sparsity
+sparsity_unit = casADi__Sparsity__unit
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__triu" c_CasADi__Sparsity__triu
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__triu
+  :: Int -> IO Sparsity
+casADi__Sparsity__triu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__triu x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_triu :: Int -> IO Sparsity
+sparsity_triu = casADi__Sparsity__triu
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__tril" c_CasADi__Sparsity__tril
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__tril
+  :: Int -> IO Sparsity
+casADi__Sparsity__tril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__tril x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_tril :: Int -> IO Sparsity
+sparsity_tril = casADi__Sparsity__tril
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__diag" c_CasADi__Sparsity__diag
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__diag
+  :: Int -> IO Sparsity
+casADi__Sparsity__diag x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__diag x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Create diagonal sparsity pattern.
+-}
+sparsity_diag :: Int -> IO Sparsity
+sparsity_diag = casADi__Sparsity__diag
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__diag_TIC" c_CasADi__Sparsity__diag_TIC
+  :: CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__diag'
+  :: Int -> Int -> IO Sparsity
+casADi__Sparsity__diag' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__diag_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_diag' :: Int -> Int -> IO Sparsity
+sparsity_diag' = casADi__Sparsity__diag'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__band" c_CasADi__Sparsity__band
+  :: CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__band
+  :: Int -> Int -> IO Sparsity
+casADi__Sparsity__band x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__band x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_band :: Int -> Int -> IO Sparsity
+sparsity_band = casADi__Sparsity__band
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__banded" c_CasADi__Sparsity__banded
+  :: CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__banded
+  :: Int -> Int -> IO Sparsity
+casADi__Sparsity__banded x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__banded x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_banded :: Int -> Int -> IO Sparsity
+sparsity_banded = casADi__Sparsity__banded
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__rowcol" c_CasADi__Sparsity__rowcol
+  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__rowcol
+  :: Vector Int -> Vector Int -> Int -> Int -> IO Sparsity
+casADi__Sparsity__rowcol x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Sparsity__rowcol x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sparsity_rowcol :: Vector Int -> Vector Int -> Int -> Int -> IO Sparsity
+sparsity_rowcol = casADi__Sparsity__rowcol
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__triplet" c_CasADi__Sparsity__triplet
+  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__triplet
+  :: Int -> Int -> Vector Int -> Vector Int -> Vector Int -> Bool -> IO Sparsity
+casADi__Sparsity__triplet x0 x1 x2 x3 x4 x5 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  c_CasADi__Sparsity__triplet x0' x1' x2' x3' x4' x5' >>= wrapReturn
+
+-- classy wrapper
+sparsity_triplet :: Int -> Int -> Vector Int -> Vector Int -> Vector Int -> Bool -> IO Sparsity
+sparsity_triplet = casADi__Sparsity__triplet
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__triplet_TIC" c_CasADi__Sparsity__triplet_TIC
+  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__triplet'
+  :: Int -> Int -> Vector Int -> Vector Int -> Vector Int -> IO Sparsity
+casADi__Sparsity__triplet' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Sparsity__triplet_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+sparsity_triplet' :: Int -> Int -> Vector Int -> Vector Int -> Vector Int -> IO Sparsity
+sparsity_triplet' = casADi__Sparsity__triplet'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__triplet_TIC_TIC" c_CasADi__Sparsity__triplet_TIC_TIC
+  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__triplet''
+  :: Int -> Int -> Vector Int -> Vector Int -> IO Sparsity
+casADi__Sparsity__triplet'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Sparsity__triplet_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sparsity_triplet'' :: Int -> Int -> Vector Int -> Vector Int -> IO Sparsity
+sparsity_triplet'' = casADi__Sparsity__triplet''
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__compressed" c_CasADi__Sparsity__compressed
+  :: Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__compressed
+  :: Vector Int -> IO Sparsity
+casADi__Sparsity__compressed x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__compressed x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  Sparsity CasADi::Sparsity::compressed(const std::vector< int > &v)
+>------------------------------------------------------------------------
+>
+>Create from a single vector containing the pattern in compressed column
+>storage format: The format: The first two entries are the number of rows
+>(nrow) and columns (ncol) The next ncol+1 entries are the column offsets
+>(colind). Note that the last element, colind[ncol], gives the number of
+>nonzeros The last colind[ncol] entries are the row indices
+>
+>>  Sparsity CasADi::Sparsity::compressed(const int *v)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Create from a single vector containing the pattern in compressed
+>column storage format: The format: The first two entries are the
+>number of rows (nrow) and columns (ncol) The next ncol+1 entries are
+>the column offsets (colind). Note that the last element, colind[ncol],
+>gives the number of nonzeros The last colind[ncol] entries are the row
+>indices
+-}
+sparsity_compressed :: Vector Int -> IO Sparsity
+sparsity_compressed = casADi__Sparsity__compressed
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__reCache" c_CasADi__Sparsity__reCache
+  :: Ptr Sparsity' -> IO ()
+casADi__Sparsity__reCache
+  :: Sparsity -> IO ()
+casADi__Sparsity__reCache x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__reCache x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if there
+>is an identical copy of the sparsity pattern in the cache, and if so, make a
+>shallow copy of that one.
+-}
+sparsity_reCache :: SparsityClass a => a -> IO ()
+sparsity_reCache x = casADi__Sparsity__reCache (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__clearCache" c_CasADi__Sparsity__clearCache
+  :: IO ()
+casADi__Sparsity__clearCache
+  :: IO ()
+casADi__Sparsity__clearCache  =
+  c_CasADi__Sparsity__clearCache  >>= wrapReturn
+
+-- classy wrapper
+sparsity_clearCache :: IO ()
+sparsity_clearCache = casADi__Sparsity__clearCache
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sanityCheck" c_CasADi__Sparsity__sanityCheck
+  :: Ptr Sparsity' -> CInt -> IO ()
+casADi__Sparsity__sanityCheck
+  :: Sparsity -> Bool -> IO ()
+casADi__Sparsity__sanityCheck x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__sanityCheck x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the dimensions and colind, row vectors are compatible.
+>
+>Parameters:
+>-----------
+>
+>complete:  set to true to also check elementwise throws an error as possible
+>result
+-}
+sparsity_sanityCheck :: SparsityClass a => a -> Bool -> IO ()
+sparsity_sanityCheck x = casADi__Sparsity__sanityCheck (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sanityCheck_TIC" c_CasADi__Sparsity__sanityCheck_TIC
+  :: Ptr Sparsity' -> IO ()
+casADi__Sparsity__sanityCheck'
+  :: Sparsity -> IO ()
+casADi__Sparsity__sanityCheck' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__sanityCheck_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_sanityCheck' :: SparsityClass a => a -> IO ()
+sparsity_sanityCheck' x = casADi__Sparsity__sanityCheck' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getDiag" c_CasADi__Sparsity__getDiag
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__getDiag
+  :: Sparsity -> Vector Int -> IO Sparsity
+casADi__Sparsity__getDiag x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__getDiag x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the diagonal of the matrix/create a diagonal matrix (mapping will
+>contain the nonzero mapping) When the input is square, the diagonal elements
+>are returned. If the input is vector-like, a diagonal matrix is constructed
+>with it.
+-}
+sparsity_getDiag :: SparsityClass a => a -> Vector Int -> IO Sparsity
+sparsity_getDiag x = casADi__Sparsity__getDiag (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__compress" c_CasADi__Sparsity__compress
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__compress
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__compress x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__compress x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Compress a sparsity pattern.
+-}
+sparsity_compress :: SparsityClass a => a -> IO (Vector Int)
+sparsity_compress x = casADi__Sparsity__compress (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__checkNode" c_CasADi__Sparsity__checkNode
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__checkNode
+  :: Sparsity -> IO Bool
+casADi__Sparsity__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sparsity_checkNode :: SparsityClass a => a -> IO Bool
+sparsity_checkNode x = casADi__Sparsity__checkNode (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isEqual" c_CasADi__Sparsity__isEqual
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isEqual
+  :: Sparsity -> Sparsity -> IO Bool
+casADi__Sparsity__isEqual x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__isEqual x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_isEqual :: SparsityClass a => a -> Sparsity -> IO Bool
+sparsity_isEqual x = casADi__Sparsity__isEqual (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isEqual_TIC" c_CasADi__Sparsity__isEqual_TIC
+  :: Ptr Sparsity' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO CInt
+casADi__Sparsity__isEqual'
+  :: Sparsity -> Int -> Int -> Vector Int -> Vector Int -> IO Bool
+casADi__Sparsity__isEqual' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Sparsity__isEqual_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+sparsity_isEqual' :: SparsityClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO Bool
+sparsity_isEqual' x = casADi__Sparsity__isEqual' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__operator_equals" c_CasADi__Sparsity__operator_equals
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO CInt
+casADi__Sparsity__operator_equals
+  :: Sparsity -> Sparsity -> IO Bool
+casADi__Sparsity__operator_equals x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__operator_equals x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_operator_equals :: SparsityClass a => a -> Sparsity -> IO Bool
+sparsity_operator_equals x = casADi__Sparsity__operator_equals (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__operator_nequals" c_CasADi__Sparsity__operator_nequals
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO CInt
+casADi__Sparsity__operator_nequals
+  :: Sparsity -> Sparsity -> IO Bool
+casADi__Sparsity__operator_nequals x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__operator_nequals x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_operator_nequals :: SparsityClass a => a -> Sparsity -> IO Bool
+sparsity_operator_nequals x = casADi__Sparsity__operator_nequals (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__size1" c_CasADi__Sparsity__size1
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__size1
+  :: Sparsity -> IO Int
+casADi__Sparsity__size1 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__size1 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of rows.
+-}
+sparsity_size1 :: SparsityClass a => a -> IO Int
+sparsity_size1 x = casADi__Sparsity__size1 (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__size2" c_CasADi__Sparsity__size2
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__size2
+  :: Sparsity -> IO Int
+casADi__Sparsity__size2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__size2 x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of columns.
+-}
+sparsity_size2 :: SparsityClass a => a -> IO Int
+sparsity_size2 x = casADi__Sparsity__size2 (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__numel" c_CasADi__Sparsity__numel
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__numel
+  :: Sparsity -> IO Int
+casADi__Sparsity__numel x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__numel x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>The total number of elements, including structural zeros, i.e.
+>size2()*size1()
+>
+>See:   size()
+-}
+sparsity_numel :: SparsityClass a => a -> IO Int
+sparsity_numel x = casADi__Sparsity__numel (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isEmpty" c_CasADi__Sparsity__isEmpty
+  :: Ptr Sparsity' -> CInt -> IO CInt
+casADi__Sparsity__isEmpty
+  :: Sparsity -> Bool -> IO Bool
+casADi__Sparsity__isEmpty x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__isEmpty x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is empty, i.e. if one of the dimensions is zero (or
+>optionally both dimensions)
+-}
+sparsity_isEmpty :: SparsityClass a => a -> Bool -> IO Bool
+sparsity_isEmpty x = casADi__Sparsity__isEmpty (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isEmpty_TIC" c_CasADi__Sparsity__isEmpty_TIC
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isEmpty'
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isEmpty' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isEmpty_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_isEmpty' :: SparsityClass a => a -> IO Bool
+sparsity_isEmpty' x = casADi__Sparsity__isEmpty' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__size" c_CasADi__Sparsity__size
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__size
+  :: Sparsity -> IO Int
+casADi__Sparsity__size x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__size x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the number of (structural) non-zeros.
+>
+>See:   numel()
+-}
+sparsity_size :: SparsityClass a => a -> IO Int
+sparsity_size x = casADi__Sparsity__size (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sizeU" c_CasADi__Sparsity__sizeU
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__sizeU
+  :: Sparsity -> IO Int
+casADi__Sparsity__sizeU x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__sizeU x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Number of non-zeros in the upper triangular half, i.e. the number of
+>elements (i,j) with j>=i.
+-}
+sparsity_sizeU :: SparsityClass a => a -> IO Int
+sparsity_sizeU x = casADi__Sparsity__sizeU (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sizeL" c_CasADi__Sparsity__sizeL
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__sizeL
+  :: Sparsity -> IO Int
+casADi__Sparsity__sizeL x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__sizeL x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Number of non-zeros in the lower triangular half, i.e. the number of
+>elements (i,j) with j<=i.
+-}
+sparsity_sizeL :: SparsityClass a => a -> IO Int
+sparsity_sizeL x = casADi__Sparsity__sizeL (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sizeD" c_CasADi__Sparsity__sizeD
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__sizeD
+  :: Sparsity -> IO Int
+casADi__Sparsity__sizeD x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__sizeD x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Number of non-zeros on the diagonal, i.e. the number of elements (i,j) with
+>j==i.
+-}
+sparsity_sizeD :: SparsityClass a => a -> IO Int
+sparsity_sizeD x = casADi__Sparsity__sizeD (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__row" c_CasADi__Sparsity__row
+  :: Ptr Sparsity' -> CInt -> IO CInt
+casADi__Sparsity__row
+  :: Sparsity -> Int -> IO Int
+casADi__Sparsity__row x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__row x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const std::vector< int > & CasADi::Sparsity::row() const 
+>------------------------------------------------------------------------
+>
+>Get a reference to row-vector, containing rows for all non-zero elements
+>(see class description)
+>
+>>  int CasADi::Sparsity::row(int el) const 
+>------------------------------------------------------------------------
+>
+>Get the row of a non-zero element.
+-}
+sparsity_row :: SparsityClass a => a -> Int -> IO Int
+sparsity_row x = casADi__Sparsity__row (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__colind" c_CasADi__Sparsity__colind
+  :: Ptr Sparsity' -> CInt -> IO CInt
+casADi__Sparsity__colind
+  :: Sparsity -> Int -> IO Int
+casADi__Sparsity__colind x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__colind x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  const std::vector< int > & CasADi::Sparsity::colind() const 
+>------------------------------------------------------------------------
+>
+>Get a reference to the colindex of all column element (see class
+>description)
+>
+>>  int CasADi::Sparsity::colind(int i) const 
+>------------------------------------------------------------------------
+>
+>Get a reference to the colindex of col i (see class description)
+-}
+sparsity_colind :: SparsityClass a => a -> Int -> IO Int
+sparsity_colind x = casADi__Sparsity__colind (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getCol" c_CasADi__Sparsity__getCol
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__getCol
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__getCol x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__getCol x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the column for each non-zero entry Together with the row-vector, this
+>vector gives the sparsity of the matrix in sparse triplet format, i.e. the
+>column and row for each non-zero elements.
+-}
+sparsity_getCol :: SparsityClass a => a -> IO (Vector Int)
+sparsity_getCol x = casADi__Sparsity__getCol (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__resize" c_CasADi__Sparsity__resize
+  :: Ptr Sparsity' -> CInt -> CInt -> IO ()
+casADi__Sparsity__resize
+  :: Sparsity -> Int -> Int -> IO ()
+casADi__Sparsity__resize x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__resize x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Resize.
+-}
+sparsity_resize :: SparsityClass a => a -> Int -> Int -> IO ()
+sparsity_resize x = casADi__Sparsity__resize (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__reshape" c_CasADi__Sparsity__reshape
+  :: Ptr Sparsity' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__reshape
+  :: Sparsity -> Int -> Int -> IO Sparsity
+casADi__Sparsity__reshape x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__reshape x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Reshape a sparsity, order of nonzeros remains the same.
+-}
+sparsity_reshape :: SparsityClass a => a -> Int -> Int -> IO Sparsity
+sparsity_reshape x = casADi__Sparsity__reshape (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getNZ" c_CasADi__Sparsity__getNZ
+  :: Ptr Sparsity' -> CInt -> CInt -> IO CInt
+casADi__Sparsity__getNZ
+  :: Sparsity -> Int -> Int -> IO Int
+casADi__Sparsity__getNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  int CasADi::Sparsity::getNZ(int rr, int cc)
+>------------------------------------------------------------------------
+>
+>Get the index of a non-zero element Add the element if it does not exist and
+>copy object if it's not unique.
+>
+>>  int CasADi::Sparsity::getNZ(int rr, int cc) const 
+>------------------------------------------------------------------------
+>
+>Get the index of an existing non-zero element return -1 if the element does
+>not exists.
+>
+>>  std::vector< int > CasADi::Sparsity::getNZ(const std::vector< int > &rr, const std::vector< int > &cc) const 
+>------------------------------------------------------------------------
+>
+>Get a set of non-zero element return -1 if the element does not exists.
+-}
+sparsity_getNZ :: SparsityClass a => a -> Int -> Int -> IO Int
+sparsity_getNZ x = casADi__Sparsity__getNZ (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getNZ_TIC" c_CasADi__Sparsity__getNZ_TIC
+  :: Ptr Sparsity' -> CInt -> CInt -> IO CInt
+casADi__Sparsity__getNZ'
+  :: Sparsity -> Int -> Int -> IO Int
+casADi__Sparsity__getNZ' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getNZ_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getNZ' :: SparsityClass a => a -> Int -> Int -> IO Int
+sparsity_getNZ' x = casADi__Sparsity__getNZ' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__hasNZ" c_CasADi__Sparsity__hasNZ
+  :: Ptr Sparsity' -> CInt -> CInt -> IO CInt
+casADi__Sparsity__hasNZ
+  :: Sparsity -> Int -> Int -> IO Bool
+casADi__Sparsity__hasNZ x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__hasNZ x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Returns true if the pattern has a non-zero at location rr,cc.
+-}
+sparsity_hasNZ :: SparsityClass a => a -> Int -> Int -> IO Bool
+sparsity_hasNZ x = casADi__Sparsity__hasNZ (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getNZ_TIC_TIC" c_CasADi__Sparsity__getNZ_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__getNZ''
+  :: Sparsity -> Vector Int -> Vector Int -> IO (Vector Int)
+casADi__Sparsity__getNZ'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getNZ_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getNZ'' :: SparsityClass a => a -> Vector Int -> Vector Int -> IO (Vector Int)
+sparsity_getNZ'' x = casADi__Sparsity__getNZ'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getNZInplace" c_CasADi__Sparsity__getNZInplace
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__getNZInplace
+  :: Sparsity -> Vector Int -> IO ()
+casADi__Sparsity__getNZInplace x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__getNZInplace x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the nonzero index for a set of elements The index vector is used both
+>for input and outputs and must be sorted by increasing nonzero index, i.e.
+>column-wise. Elements not found in the sparsity pattern are set to -1.
+-}
+sparsity_getNZInplace :: SparsityClass a => a -> Vector Int -> IO ()
+sparsity_getNZInplace x = casADi__Sparsity__getNZInplace (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getLowerNZ" c_CasADi__Sparsity__getLowerNZ
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__getLowerNZ
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__getLowerNZ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__getLowerNZ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get nonzeros in lower triangular part.
+-}
+sparsity_getLowerNZ :: SparsityClass a => a -> IO (Vector Int)
+sparsity_getLowerNZ x = casADi__Sparsity__getLowerNZ (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getUpperNZ" c_CasADi__Sparsity__getUpperNZ
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__getUpperNZ
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__getUpperNZ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__getUpperNZ x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get nonzeros in upper triangular part.
+-}
+sparsity_getUpperNZ :: SparsityClass a => a -> IO (Vector Int)
+sparsity_getUpperNZ x = casADi__Sparsity__getUpperNZ (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getCCS" c_CasADi__Sparsity__getCCS
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__getCCS
+  :: Sparsity -> Vector Int -> Vector Int -> IO ()
+casADi__Sparsity__getCCS x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getCCS x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the sparsity in compressed column storage (CCS) format.
+-}
+sparsity_getCCS :: SparsityClass a => a -> Vector Int -> Vector Int -> IO ()
+sparsity_getCCS x = casADi__Sparsity__getCCS (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getCRS" c_CasADi__Sparsity__getCRS
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__getCRS
+  :: Sparsity -> Vector Int -> Vector Int -> IO ()
+casADi__Sparsity__getCRS x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getCRS x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the sparsity in compressed row storage (CRS) format.
+-}
+sparsity_getCRS :: SparsityClass a => a -> Vector Int -> Vector Int -> IO ()
+sparsity_getCRS x = casADi__Sparsity__getCRS (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getTriplet" c_CasADi__Sparsity__getTriplet
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__getTriplet
+  :: Sparsity -> Vector Int -> Vector Int -> IO ()
+casADi__Sparsity__getTriplet x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getTriplet x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the sparsity in sparse triplet format.
+-}
+sparsity_getTriplet :: SparsityClass a => a -> Vector Int -> Vector Int -> IO ()
+sparsity_getTriplet x = casADi__Sparsity__getTriplet (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__sub" c_CasADi__Sparsity__sub
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__sub
+  :: Sparsity -> Vector Int -> Vector Int -> Vector Int -> IO Sparsity
+casADi__Sparsity__sub x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Sparsity__sub x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get a submatrix.
+>
+>Returns the sparsity of the submatrix, with a mapping such that submatrix[k]
+>= originalmatrix[mapping[k]]
+-}
+sparsity_sub :: SparsityClass a => a -> Vector Int -> Vector Int -> Vector Int -> IO Sparsity
+sparsity_sub x = casADi__Sparsity__sub (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__transpose" c_CasADi__Sparsity__transpose
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__transpose
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__transpose x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__transpose x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  Sparsity CasADi::Sparsity::transpose() const 
+>------------------------------------------------------------------------
+>
+>Transpose the matrix.
+>
+>>  Sparsity CasADi::Sparsity::transpose(std::vector< int > &mapping, bool invert_mapping=false) const 
+>------------------------------------------------------------------------
+>
+>Transpose the matrix and get the reordering of the non-zero entries, i.e.
+>the non-zeros of the original matrix for each non-zero of the new matrix.
+-}
+sparsity_transpose :: SparsityClass a => a -> IO Sparsity
+sparsity_transpose x = casADi__Sparsity__transpose (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__transpose_TIC" c_CasADi__Sparsity__transpose_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__transpose'
+  :: Sparsity -> Vector Int -> Bool -> IO Sparsity
+casADi__Sparsity__transpose' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__transpose_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sparsity_transpose' :: SparsityClass a => a -> Vector Int -> Bool -> IO Sparsity
+sparsity_transpose' x = casADi__Sparsity__transpose' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__transpose_TIC_TIC" c_CasADi__Sparsity__transpose_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__transpose''
+  :: Sparsity -> Vector Int -> IO Sparsity
+casADi__Sparsity__transpose'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__transpose_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_transpose'' :: SparsityClass a => a -> Vector Int -> IO Sparsity
+sparsity_transpose'' x = casADi__Sparsity__transpose'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isTranspose" c_CasADi__Sparsity__isTranspose
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isTranspose
+  :: Sparsity -> Sparsity -> IO Bool
+casADi__Sparsity__isTranspose x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__isTranspose x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is the transpose of another.
+-}
+sparsity_isTranspose :: SparsityClass a => a -> Sparsity -> IO Bool
+sparsity_isTranspose x = casADi__Sparsity__isTranspose (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isReshape" c_CasADi__Sparsity__isReshape
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isReshape
+  :: Sparsity -> Sparsity -> IO Bool
+casADi__Sparsity__isReshape x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__isReshape x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the sparsity is a reshape of another.
+-}
+sparsity_isReshape :: SparsityClass a => a -> Sparsity -> IO Bool
+sparsity_isReshape x = casADi__Sparsity__isReshape (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternCombine" c_CasADi__Sparsity__patternCombine
+  :: Ptr Sparsity' -> Ptr Sparsity' -> CInt -> CInt -> Ptr (CppVec CUChar) -> IO (Ptr Sparsity')
+casADi__Sparsity__patternCombine
+  :: Sparsity -> Sparsity -> Bool -> Bool -> Vector CUChar -> IO Sparsity
+casADi__Sparsity__patternCombine x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Sparsity__patternCombine x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Combine two sparsity patterns Returns the new sparsity pattern as well as a
+>mapping with the same length as the number of non-zero elements The mapping
+>matrix contains the arguments for each nonzero, the first bit indicates if
+>the first argument is nonzero, the second bit indicates if the second
+>argument is nonzero (note that none of, one of or both of the arguments can
+>be nonzero)
+-}
+sparsity_patternCombine :: SparsityClass a => a -> Sparsity -> Bool -> Bool -> Vector CUChar -> IO Sparsity
+sparsity_patternCombine x = casADi__Sparsity__patternCombine (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternCombine_TIC" c_CasADi__Sparsity__patternCombine_TIC
+  :: Ptr Sparsity' -> Ptr Sparsity' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__patternCombine'
+  :: Sparsity -> Sparsity -> Bool -> Bool -> IO Sparsity
+casADi__Sparsity__patternCombine' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Sparsity__patternCombine_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sparsity_patternCombine' :: SparsityClass a => a -> Sparsity -> Bool -> Bool -> IO Sparsity
+sparsity_patternCombine' x = casADi__Sparsity__patternCombine' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternUnion" c_CasADi__Sparsity__patternUnion
+  :: Ptr Sparsity' -> Ptr Sparsity' -> Ptr (CppVec CUChar) -> IO (Ptr Sparsity')
+casADi__Sparsity__patternUnion
+  :: Sparsity -> Sparsity -> Vector CUChar -> IO Sparsity
+casADi__Sparsity__patternUnion x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__patternUnion x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Union of two sparsity patterns.
+-}
+sparsity_patternUnion :: SparsityClass a => a -> Sparsity -> Vector CUChar -> IO Sparsity
+sparsity_patternUnion x = casADi__Sparsity__patternUnion (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternUnion_TIC" c_CasADi__Sparsity__patternUnion_TIC
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__patternUnion'
+  :: Sparsity -> Sparsity -> IO Sparsity
+casADi__Sparsity__patternUnion' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__patternUnion_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_patternUnion' :: SparsityClass a => a -> Sparsity -> IO Sparsity
+sparsity_patternUnion' x = casADi__Sparsity__patternUnion' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__operator_plus" c_CasADi__Sparsity__operator_plus
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__operator_plus
+  :: Sparsity -> Sparsity -> IO Sparsity
+casADi__Sparsity__operator_plus x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__operator_plus x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_operator_plus :: SparsityClass a => a -> Sparsity -> IO Sparsity
+sparsity_operator_plus x = casADi__Sparsity__operator_plus (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternIntersection" c_CasADi__Sparsity__patternIntersection
+  :: Ptr Sparsity' -> Ptr Sparsity' -> Ptr (CppVec CUChar) -> IO (Ptr Sparsity')
+casADi__Sparsity__patternIntersection
+  :: Sparsity -> Sparsity -> Vector CUChar -> IO Sparsity
+casADi__Sparsity__patternIntersection x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__patternIntersection x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Intersection of two sparsity patterns Returns the new sparsity pattern as
+>well as a mapping with the same length as the number of non-zero elements
+>The value is 1 if the non-zero comes from the first (i.e. this) object, 2 if
+>it is from the second and 3 (i.e. 1 | 2) if from both.
+-}
+sparsity_patternIntersection :: SparsityClass a => a -> Sparsity -> Vector CUChar -> IO Sparsity
+sparsity_patternIntersection x = casADi__Sparsity__patternIntersection (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternIntersection_TIC" c_CasADi__Sparsity__patternIntersection_TIC
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__patternIntersection'
+  :: Sparsity -> Sparsity -> IO Sparsity
+casADi__Sparsity__patternIntersection' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__patternIntersection_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_patternIntersection' :: SparsityClass a => a -> Sparsity -> IO Sparsity
+sparsity_patternIntersection' x = casADi__Sparsity__patternIntersection' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__operator_mul" c_CasADi__Sparsity__operator_mul
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__operator_mul
+  :: Sparsity -> Sparsity -> IO Sparsity
+casADi__Sparsity__operator_mul x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__operator_mul x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_operator_mul :: SparsityClass a => a -> Sparsity -> IO Sparsity
+sparsity_operator_mul x = casADi__Sparsity__operator_mul (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternProduct" c_CasADi__Sparsity__patternProduct
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__patternProduct
+  :: Sparsity -> Sparsity -> IO Sparsity
+casADi__Sparsity__patternProduct x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__patternProduct x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Sparsity pattern for a matrix-matrix product Returns the sparsity pattern
+>resulting from premultiplying the pattern with the transpose of x. Returns
+>the new sparsity pattern as well as a mapping with the same length as the
+>number of non-zero elements The mapping contains a vector of the index pairs
+>that makes up the scalar products for each non-zero.
+-}
+sparsity_patternProduct :: SparsityClass a => a -> Sparsity -> IO Sparsity
+sparsity_patternProduct x = casADi__Sparsity__patternProduct (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__patternInverse" c_CasADi__Sparsity__patternInverse
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__patternInverse
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__patternInverse x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__patternInverse x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Take the inverse of a sparsity pattern; flip zeros and non-zeros.
+-}
+sparsity_patternInverse :: SparsityClass a => a -> IO Sparsity
+sparsity_patternInverse x = casADi__Sparsity__patternInverse (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__enlarge" c_CasADi__Sparsity__enlarge
+  :: Ptr Sparsity' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__enlarge
+  :: Sparsity -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+casADi__Sparsity__enlarge x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Sparsity__enlarge x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Enlarge matrix Make the matrix larger by inserting empty rows and columns,
+>keeping the existing non-zeros.
+>
+>For the matrices A to B A(m,n) length(jj)=m , length(ii)=n B(nrow,ncol)
+>
+>A=enlarge(m,n,ii,jj) makes sure that
+>
+>B[jj,ii] == A
+-}
+sparsity_enlarge :: SparsityClass a => a -> Int -> Int -> Vector Int -> Vector Int -> IO ()
+sparsity_enlarge x = casADi__Sparsity__enlarge (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__enlargeRows" c_CasADi__Sparsity__enlargeRows
+  :: Ptr Sparsity' -> CInt -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__enlargeRows
+  :: Sparsity -> Int -> Vector Int -> IO ()
+casADi__Sparsity__enlargeRows x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__enlargeRows x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Enlarge the matrix along the first dimension (i.e. insert rows)
+-}
+sparsity_enlargeRows :: SparsityClass a => a -> Int -> Vector Int -> IO ()
+sparsity_enlargeRows x = casADi__Sparsity__enlargeRows (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__enlargeColumns" c_CasADi__Sparsity__enlargeColumns
+  :: Ptr Sparsity' -> CInt -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__enlargeColumns
+  :: Sparsity -> Int -> Vector Int -> IO ()
+casADi__Sparsity__enlargeColumns x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__enlargeColumns x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Enlarge the matrix along the second dimension (i.e. insert columns)
+-}
+sparsity_enlargeColumns :: SparsityClass a => a -> Int -> Vector Int -> IO ()
+sparsity_enlargeColumns x = casADi__Sparsity__enlargeColumns (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__makeDense" c_CasADi__Sparsity__makeDense
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__makeDense
+  :: Sparsity -> Vector Int -> IO Sparsity
+casADi__Sparsity__makeDense x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__makeDense x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Make a patten dense.
+-}
+sparsity_makeDense :: SparsityClass a => a -> Vector Int -> IO Sparsity
+sparsity_makeDense x = casADi__Sparsity__makeDense (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__erase" c_CasADi__Sparsity__erase
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__erase
+  :: Sparsity -> Vector Int -> Vector Int -> IO (Vector Int)
+casADi__Sparsity__erase x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__erase x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Erase rows and/or columns of a matrix.
+-}
+sparsity_erase :: SparsityClass a => a -> Vector Int -> Vector Int -> IO (Vector Int)
+sparsity_erase x = casADi__Sparsity__erase (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__append" c_CasADi__Sparsity__append
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO ()
+casADi__Sparsity__append
+  :: Sparsity -> Sparsity -> IO ()
+casADi__Sparsity__append x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__append x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Append another sparsity patten vertically (NOTE: only efficient if vector)
+-}
+sparsity_append :: SparsityClass a => a -> Sparsity -> IO ()
+sparsity_append x = casADi__Sparsity__append (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__appendColumns" c_CasADi__Sparsity__appendColumns
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO ()
+casADi__Sparsity__appendColumns
+  :: Sparsity -> Sparsity -> IO ()
+casADi__Sparsity__appendColumns x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__appendColumns x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Append another sparsity patten horizontally.
+-}
+sparsity_appendColumns :: SparsityClass a => a -> Sparsity -> IO ()
+sparsity_appendColumns x = casADi__Sparsity__appendColumns (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__reserve" c_CasADi__Sparsity__reserve
+  :: Ptr Sparsity' -> CInt -> CInt -> IO ()
+casADi__Sparsity__reserve
+  :: Sparsity -> Int -> Int -> IO ()
+casADi__Sparsity__reserve x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__reserve x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Reserve space.
+-}
+sparsity_reserve :: SparsityClass a => a -> Int -> Int -> IO ()
+sparsity_reserve x = casADi__Sparsity__reserve (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isScalar" c_CasADi__Sparsity__isScalar
+  :: Ptr Sparsity' -> CInt -> IO CInt
+casADi__Sparsity__isScalar
+  :: Sparsity -> Bool -> IO Bool
+casADi__Sparsity__isScalar x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__isScalar x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is scalar?
+-}
+sparsity_isScalar :: SparsityClass a => a -> Bool -> IO Bool
+sparsity_isScalar x = casADi__Sparsity__isScalar (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isScalar_TIC" c_CasADi__Sparsity__isScalar_TIC
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isScalar'
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isScalar' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isScalar_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_isScalar' :: SparsityClass a => a -> IO Bool
+sparsity_isScalar' x = casADi__Sparsity__isScalar' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isDense" c_CasADi__Sparsity__isDense
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isDense
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isDense x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isDense x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is dense?
+-}
+sparsity_isDense :: SparsityClass a => a -> IO Bool
+sparsity_isDense x = casADi__Sparsity__isDense (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isVector" c_CasADi__Sparsity__isVector
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isVector
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isVector x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isVector x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is vector (i.e. size2()==1)
+-}
+sparsity_isVector :: SparsityClass a => a -> IO Bool
+sparsity_isVector x = casADi__Sparsity__isVector (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isDiagonal" c_CasADi__Sparsity__isDiagonal
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isDiagonal
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isDiagonal x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isDiagonal x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is diagonal?
+-}
+sparsity_isDiagonal :: SparsityClass a => a -> IO Bool
+sparsity_isDiagonal x = casADi__Sparsity__isDiagonal (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isSquare" c_CasADi__Sparsity__isSquare
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isSquare
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isSquare x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isSquare x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is square?
+-}
+sparsity_isSquare :: SparsityClass a => a -> IO Bool
+sparsity_isSquare x = casADi__Sparsity__isSquare (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isSymmetric" c_CasADi__Sparsity__isSymmetric
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isSymmetric
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isSymmetric x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isSymmetric x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is symmetric?
+-}
+sparsity_isSymmetric :: SparsityClass a => a -> IO Bool
+sparsity_isSymmetric x = casADi__Sparsity__isSymmetric (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isTriu" c_CasADi__Sparsity__isTriu
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isTriu
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isTriu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isTriu x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is upper triangular?
+-}
+sparsity_isTriu :: SparsityClass a => a -> IO Bool
+sparsity_isTriu x = casADi__Sparsity__isTriu (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isTril" c_CasADi__Sparsity__isTril
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isTril
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isTril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isTril x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Is lower triangular?
+-}
+sparsity_isTril :: SparsityClass a => a -> IO Bool
+sparsity_isTril x = casADi__Sparsity__isTril (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__isSingular" c_CasADi__Sparsity__isSingular
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__isSingular
+  :: Sparsity -> IO Bool
+casADi__Sparsity__isSingular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__isSingular x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check whether the sparsity-pattern inidcates structural singularity.
+-}
+sparsity_isSingular :: SparsityClass a => a -> IO Bool
+sparsity_isSingular x = casADi__Sparsity__isSingular (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getTriu" c_CasADi__Sparsity__getTriu
+  :: Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__getTriu
+  :: Sparsity -> Bool -> IO Sparsity
+casADi__Sparsity__getTriu x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__getTriu x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get upper triangular part.
+-}
+sparsity_getTriu :: SparsityClass a => a -> Bool -> IO Sparsity
+sparsity_getTriu x = casADi__Sparsity__getTriu (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getTriu_TIC" c_CasADi__Sparsity__getTriu_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__getTriu'
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__getTriu' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__getTriu_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getTriu' :: SparsityClass a => a -> IO Sparsity
+sparsity_getTriu' x = casADi__Sparsity__getTriu' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getTril" c_CasADi__Sparsity__getTril
+  :: Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__getTril
+  :: Sparsity -> Bool -> IO Sparsity
+casADi__Sparsity__getTril x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__getTril x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get lower triangular part.
+-}
+sparsity_getTril :: SparsityClass a => a -> Bool -> IO Sparsity
+sparsity_getTril x = casADi__Sparsity__getTril (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getTril_TIC" c_CasADi__Sparsity__getTril_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__getTril'
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__getTril' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__getTril_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getTril' :: SparsityClass a => a -> IO Sparsity
+sparsity_getTril' x = casADi__Sparsity__getTril' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__rowsSequential" c_CasADi__Sparsity__rowsSequential
+  :: Ptr Sparsity' -> CInt -> IO CInt
+casADi__Sparsity__rowsSequential
+  :: Sparsity -> Bool -> IO Bool
+casADi__Sparsity__rowsSequential x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__rowsSequential x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Do the rows appear sequentially on each column (if strictly==true, then do
+>not allow multiple entries)
+-}
+sparsity_rowsSequential :: SparsityClass a => a -> Bool -> IO Bool
+sparsity_rowsSequential x = casADi__Sparsity__rowsSequential (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__rowsSequential_TIC" c_CasADi__Sparsity__rowsSequential_TIC
+  :: Ptr Sparsity' -> IO CInt
+casADi__Sparsity__rowsSequential'
+  :: Sparsity -> IO Bool
+casADi__Sparsity__rowsSequential' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__rowsSequential_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_rowsSequential' :: SparsityClass a => a -> IO Bool
+sparsity_rowsSequential' x = casADi__Sparsity__rowsSequential' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__removeDuplicates" c_CasADi__Sparsity__removeDuplicates
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__removeDuplicates
+  :: Sparsity -> Vector Int -> IO ()
+casADi__Sparsity__removeDuplicates x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__removeDuplicates x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Remove duplicate entries: The same indices will be removed from the mapping
+>vector, which must have the same length as the number of nonzeros.
+-}
+sparsity_removeDuplicates :: SparsityClass a => a -> Vector Int -> IO ()
+sparsity_removeDuplicates x = casADi__Sparsity__removeDuplicates (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__eliminationTree" c_CasADi__Sparsity__eliminationTree
+  :: Ptr Sparsity' -> CInt -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__eliminationTree
+  :: Sparsity -> Bool -> IO (Vector Int)
+casADi__Sparsity__eliminationTree x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__eliminationTree x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Calculate the elimination tree See Direct Methods for Sparse Linear Systems
+>by Davis (2006). If the parameter ata is false, the algorithm is equivalent
+>to Matlab's etree(A), except that the indices are zero- based. If ata is
+>true, the algorithm is equivalent to Matlab's etree(A,'row').
+-}
+sparsity_eliminationTree :: SparsityClass a => a -> Bool -> IO (Vector Int)
+sparsity_eliminationTree x = casADi__Sparsity__eliminationTree (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__eliminationTree_TIC" c_CasADi__Sparsity__eliminationTree_TIC
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__eliminationTree'
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__eliminationTree' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__eliminationTree_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_eliminationTree' :: SparsityClass a => a -> IO (Vector Int)
+sparsity_eliminationTree' x = casADi__Sparsity__eliminationTree' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__depthFirstSearch" c_CasADi__Sparsity__depthFirstSearch
+  :: Ptr Sparsity' -> CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO CInt
+casADi__Sparsity__depthFirstSearch
+  :: Sparsity -> Int -> Int -> Vector Int -> Vector Int -> Vector Int -> Vector Bool -> IO Int
+casADi__Sparsity__depthFirstSearch x0 x1 x2 x3 x4 x5 x6 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  c_CasADi__Sparsity__depthFirstSearch x0' x1' x2' x3' x4' x5' x6' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Depth-first search on the adjacency graph of the sparsity See Direct Methods
+>for Sparse Linear Systems by Davis (2006).
+-}
+sparsity_depthFirstSearch :: SparsityClass a => a -> Int -> Int -> Vector Int -> Vector Int -> Vector Int -> Vector Bool -> IO Int
+sparsity_depthFirstSearch x = casADi__Sparsity__depthFirstSearch (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__stronglyConnectedComponents" c_CasADi__Sparsity__stronglyConnectedComponents
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO CInt
+casADi__Sparsity__stronglyConnectedComponents
+  :: Sparsity -> Vector Int -> Vector Int -> IO Int
+casADi__Sparsity__stronglyConnectedComponents x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__stronglyConnectedComponents x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Find the strongly connected components of the bigraph defined by the
+>sparsity pattern of a square matrix See Direct Methods for Sparse Linear
+>Systems by Davis (2006). Returns:
+>
+>Number of components
+>
+>Offset for each components (length: 1 + number of components)
+>
+>Indices for each components, component i has indices index[offset[i]], ...,
+>index[offset[i+1]]
+>
+>In the case that the matrix is symmetric, the result has a particular
+>interpretation: Given a symmetric matrix A and n =
+>A.stronglyConnectedComponents(p,r)
+>
+>=> A[p,p] will appear block-diagonal with n blocks and with the indices of
+>the block boundaries to be found in r.
+-}
+sparsity_stronglyConnectedComponents :: SparsityClass a => a -> Vector Int -> Vector Int -> IO Int
+sparsity_stronglyConnectedComponents x = casADi__Sparsity__stronglyConnectedComponents (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__dulmageMendelsohn" c_CasADi__Sparsity__dulmageMendelsohn
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> IO CInt
+casADi__Sparsity__dulmageMendelsohn
+  :: Sparsity -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Int -> IO Int
+casADi__Sparsity__dulmageMendelsohn x0 x1 x2 x3 x4 x5 x6 x7 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  withMarshal x7 $ \x7' ->
+  c_CasADi__Sparsity__dulmageMendelsohn x0' x1' x2' x3' x4' x5' x6' x7' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Compute the Dulmage-Mendelsohn decomposition See Direct Methods for Sparse
+>Linear Systems by Davis (2006).
+>
+>Dulmage-Mendelsohn will try to bring your matrix into lower block-
+>triangular (LBT) form. It will not care about the distance of off- diagonal
+>elements to the diagonal: there is no guarantee you will get a block-
+>diagonal matrix if you supply a randomly permuted block- diagonal matrix.
+>
+>If your matrix is symmetrical, this method is of limited use; permutation
+>can make it non-symmetric.
+>
+>See:   stronglyConnectedComponents
+-}
+sparsity_dulmageMendelsohn :: SparsityClass a => a -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Int -> IO Int
+sparsity_dulmageMendelsohn x = casADi__Sparsity__dulmageMendelsohn (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__dulmageMendelsohn_TIC" c_CasADi__Sparsity__dulmageMendelsohn_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO CInt
+casADi__Sparsity__dulmageMendelsohn'
+  :: Sparsity -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> IO Int
+casADi__Sparsity__dulmageMendelsohn' x0 x1 x2 x3 x4 x5 x6 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  withMarshal x6 $ \x6' ->
+  c_CasADi__Sparsity__dulmageMendelsohn_TIC x0' x1' x2' x3' x4' x5' x6' >>= wrapReturn
+
+-- classy wrapper
+sparsity_dulmageMendelsohn' :: SparsityClass a => a -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> Vector Int -> IO Int
+sparsity_dulmageMendelsohn' x = casADi__Sparsity__dulmageMendelsohn' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getElements" c_CasADi__Sparsity__getElements
+  :: Ptr Sparsity' -> CInt -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__getElements
+  :: Sparsity -> Bool -> IO (Vector Int)
+casADi__Sparsity__getElements x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__getElements x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::vector< int > CasADi::Sparsity::getElements(bool col_major=true) const 
+>------------------------------------------------------------------------
+>
+>Get the location of all non-zero elements as they would appear in a Dense
+>matrix A : DenseMatrix 4 x 3 B : SparseMatrix 4 x 3 , 5 structural non-
+>zeros.
+>
+>k = A.getElements() A[k] will contain the elements of A that are non- zero
+>in B
+>
+>>  void CasADi::Sparsity::getElements(std::vector< int > &loc, bool col_major=true) const 
+>------------------------------------------------------------------------
+>
+>Get the location of all nonzero elements (inplace version)
+-}
+sparsity_getElements :: SparsityClass a => a -> Bool -> IO (Vector Int)
+sparsity_getElements x = casADi__Sparsity__getElements (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getElements_TIC" c_CasADi__Sparsity__getElements_TIC
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__getElements'
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__getElements' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__getElements_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getElements' :: SparsityClass a => a -> IO (Vector Int)
+sparsity_getElements' x = casADi__Sparsity__getElements' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getElements_TIC_TIC" c_CasADi__Sparsity__getElements_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> CInt -> IO ()
+casADi__Sparsity__getElements''
+  :: Sparsity -> Vector Int -> Bool -> IO ()
+casADi__Sparsity__getElements'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__getElements_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getElements'' :: SparsityClass a => a -> Vector Int -> Bool -> IO ()
+sparsity_getElements'' x = casADi__Sparsity__getElements'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__getElements_TIC_TIC_TIC" c_CasADi__Sparsity__getElements_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO ()
+casADi__Sparsity__getElements'''
+  :: Sparsity -> Vector Int -> IO ()
+casADi__Sparsity__getElements''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__getElements_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_getElements''' :: SparsityClass a => a -> Vector Int -> IO ()
+sparsity_getElements''' x = casADi__Sparsity__getElements''' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__unidirectionalColoring" c_CasADi__Sparsity__unidirectionalColoring
+  :: Ptr Sparsity' -> Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__unidirectionalColoring
+  :: Sparsity -> Sparsity -> Int -> IO Sparsity
+casADi__Sparsity__unidirectionalColoring x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__unidirectionalColoring x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Perform a unidirectional coloring: A greedy distance-2 coloring algorithm
+>(Algorithm 3.1 in A. H. GEBREMEDHIN, F. MANNE, A. POTHEN)
+-}
+sparsity_unidirectionalColoring :: SparsityClass a => a -> Sparsity -> Int -> IO Sparsity
+sparsity_unidirectionalColoring x = casADi__Sparsity__unidirectionalColoring (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__unidirectionalColoring_TIC" c_CasADi__Sparsity__unidirectionalColoring_TIC
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__unidirectionalColoring'
+  :: Sparsity -> Sparsity -> IO Sparsity
+casADi__Sparsity__unidirectionalColoring' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__unidirectionalColoring_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_unidirectionalColoring' :: SparsityClass a => a -> Sparsity -> IO Sparsity
+sparsity_unidirectionalColoring' x = casADi__Sparsity__unidirectionalColoring' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__unidirectionalColoring_TIC_TIC" c_CasADi__Sparsity__unidirectionalColoring_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__unidirectionalColoring''
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__unidirectionalColoring'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__unidirectionalColoring_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_unidirectionalColoring'' :: SparsityClass a => a -> IO Sparsity
+sparsity_unidirectionalColoring'' x = casADi__Sparsity__unidirectionalColoring'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__starColoring" c_CasADi__Sparsity__starColoring
+  :: Ptr Sparsity' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__starColoring
+  :: Sparsity -> Int -> Int -> IO Sparsity
+casADi__Sparsity__starColoring x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__starColoring x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Perform a star coloring of a symmetric matrix: A greedy distance-2 coloring
+>algorithm (Algorithm 4.1 in A. H. GEBREMEDHIN, F. MANNE, A. POTHEN) Ordering
+>options: None (0), largest first (1)
+-}
+sparsity_starColoring :: SparsityClass a => a -> Int -> Int -> IO Sparsity
+sparsity_starColoring x = casADi__Sparsity__starColoring (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__starColoring_TIC" c_CasADi__Sparsity__starColoring_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__starColoring'
+  :: Sparsity -> Int -> IO Sparsity
+casADi__Sparsity__starColoring' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__starColoring_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_starColoring' :: SparsityClass a => a -> Int -> IO Sparsity
+sparsity_starColoring' x = casADi__Sparsity__starColoring' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__starColoring_TIC_TIC" c_CasADi__Sparsity__starColoring_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__starColoring''
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__starColoring'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__starColoring_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_starColoring'' :: SparsityClass a => a -> IO Sparsity
+sparsity_starColoring'' x = casADi__Sparsity__starColoring'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__starColoring2" c_CasADi__Sparsity__starColoring2
+  :: Ptr Sparsity' -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__starColoring2
+  :: Sparsity -> Int -> Int -> IO Sparsity
+casADi__Sparsity__starColoring2 x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__starColoring2 x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Perform a star coloring of a symmetric matrix: A new greedy distance-2
+>coloring algorithm (Algorithm 4.1 in A. H. GEBREMEDHIN, A. TARAFDAR, F.
+>MANNE, A. POTHEN) Ordering options: None (0), largest first (1)
+-}
+sparsity_starColoring2 :: SparsityClass a => a -> Int -> Int -> IO Sparsity
+sparsity_starColoring2 x = casADi__Sparsity__starColoring2 (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__starColoring2_TIC" c_CasADi__Sparsity__starColoring2_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__starColoring2'
+  :: Sparsity -> Int -> IO Sparsity
+casADi__Sparsity__starColoring2' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__starColoring2_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_starColoring2' :: SparsityClass a => a -> Int -> IO Sparsity
+sparsity_starColoring2' x = casADi__Sparsity__starColoring2' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__starColoring2_TIC_TIC" c_CasADi__Sparsity__starColoring2_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+casADi__Sparsity__starColoring2''
+  :: Sparsity -> IO Sparsity
+casADi__Sparsity__starColoring2'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__starColoring2_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_starColoring2'' :: SparsityClass a => a -> IO Sparsity
+sparsity_starColoring2'' x = casADi__Sparsity__starColoring2'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__largestFirstOrdering" c_CasADi__Sparsity__largestFirstOrdering
+  :: Ptr Sparsity' -> IO (Ptr (CppVec CInt))
+casADi__Sparsity__largestFirstOrdering
+  :: Sparsity -> IO (Vector Int)
+casADi__Sparsity__largestFirstOrdering x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__largestFirstOrdering x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Order the cols by decreasing degree.
+-}
+sparsity_largestFirstOrdering :: SparsityClass a => a -> IO (Vector Int)
+sparsity_largestFirstOrdering x = casADi__Sparsity__largestFirstOrdering (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__pmult" c_CasADi__Sparsity__pmult
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> CInt -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__pmult
+  :: Sparsity -> Vector Int -> Bool -> Bool -> Bool -> IO Sparsity
+casADi__Sparsity__pmult x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__Sparsity__pmult x0' x1' x2' x3' x4' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Permute rows and/or columns Multiply the sparsity with a permutation matrix
+>from the left and/or from the right P * A * trans(P), A * trans(P) or A *
+>trans(P) with P defined by an index vector containing the row for each col.
+>As an alternative, P can be transposed (inverted).
+-}
+sparsity_pmult :: SparsityClass a => a -> Vector Int -> Bool -> Bool -> Bool -> IO Sparsity
+sparsity_pmult x = casADi__Sparsity__pmult (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__pmult_TIC" c_CasADi__Sparsity__pmult_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__pmult'
+  :: Sparsity -> Vector Int -> Bool -> Bool -> IO Sparsity
+casADi__Sparsity__pmult' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Sparsity__pmult_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sparsity_pmult' :: SparsityClass a => a -> Vector Int -> Bool -> Bool -> IO Sparsity
+sparsity_pmult' x = casADi__Sparsity__pmult' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__pmult_TIC_TIC" c_CasADi__Sparsity__pmult_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__pmult''
+  :: Sparsity -> Vector Int -> Bool -> IO Sparsity
+casADi__Sparsity__pmult'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Sparsity__pmult_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+sparsity_pmult'' :: SparsityClass a => a -> Vector Int -> Bool -> IO Sparsity
+sparsity_pmult'' x = casADi__Sparsity__pmult'' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__pmult_TIC_TIC_TIC" c_CasADi__Sparsity__pmult_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__pmult'''
+  :: Sparsity -> Vector Int -> IO Sparsity
+casADi__Sparsity__pmult''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__pmult_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+sparsity_pmult''' :: SparsityClass a => a -> Vector Int -> IO Sparsity
+sparsity_pmult''' x = casADi__Sparsity__pmult''' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__dimString" c_CasADi__Sparsity__dimString
+  :: Ptr Sparsity' -> IO (Ptr StdString')
+casADi__Sparsity__dimString
+  :: Sparsity -> IO String
+casADi__Sparsity__dimString x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__dimString x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Get the dimension as a string.
+-}
+sparsity_dimString :: SparsityClass a => a -> IO String
+sparsity_dimString x = casADi__Sparsity__dimString (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__spy_TIC" c_CasADi__Sparsity__spy_TIC
+  :: Ptr Sparsity' -> IO ()
+casADi__Sparsity__spy'
+  :: Sparsity -> IO ()
+casADi__Sparsity__spy' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__spy_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_spy' :: SparsityClass a => a -> IO ()
+sparsity_spy' x = casADi__Sparsity__spy' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__spyMatlab" c_CasADi__Sparsity__spyMatlab
+  :: Ptr Sparsity' -> Ptr StdString' -> IO ()
+casADi__Sparsity__spyMatlab
+  :: Sparsity -> String -> IO ()
+casADi__Sparsity__spyMatlab x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Sparsity__spyMatlab x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a script for Matlab or Octave which visualizes the sparsity using
+>the spy command.
+-}
+sparsity_spyMatlab :: SparsityClass a => a -> String -> IO ()
+sparsity_spyMatlab x = casADi__Sparsity__spyMatlab (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__printCompact_TIC" c_CasADi__Sparsity__printCompact_TIC
+  :: Ptr Sparsity' -> IO ()
+casADi__Sparsity__printCompact'
+  :: Sparsity -> IO ()
+casADi__Sparsity__printCompact' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__printCompact_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_printCompact' :: SparsityClass a => a -> IO ()
+sparsity_printCompact' x = casADi__Sparsity__printCompact' (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__hash" c_CasADi__Sparsity__hash
+  :: Ptr Sparsity' -> IO CSize
+casADi__Sparsity__hash
+  :: Sparsity -> IO CSize
+casADi__Sparsity__hash x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__hash x0' >>= wrapReturn
+
+-- classy wrapper
+sparsity_hash :: SparsityClass a => a -> IO CSize
+sparsity_hash x = casADi__Sparsity__hash (castSparsity x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__Sparsity" c_CasADi__Sparsity__Sparsity
+  :: CInt -> IO (Ptr Sparsity')
+casADi__Sparsity__Sparsity
+  :: Int -> IO Sparsity
+casADi__Sparsity__Sparsity x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Sparsity__Sparsity x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::Sparsity::Sparsity(int nrow, int ncol, bool dense=false)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+>
+>>  CasADi::Sparsity::Sparsity(int dummy=0)
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::Sparsity::Sparsity(int nrow, int ncol, const std::vector< int > &colind, const std::vector< int > &row)
+>------------------------------------------------------------------------
+>
+>Construct from sparsity pattern vectors given in compressed column storage
+>format.
+-}
+sparsity :: Int -> IO Sparsity
+sparsity = casADi__Sparsity__Sparsity
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__Sparsity_TIC" c_CasADi__Sparsity__Sparsity_TIC
+  :: IO (Ptr Sparsity')
+casADi__Sparsity__Sparsity'
+  :: IO Sparsity
+casADi__Sparsity__Sparsity'  =
+  c_CasADi__Sparsity__Sparsity_TIC  >>= wrapReturn
+
+-- classy wrapper
+sparsity' :: IO Sparsity
+sparsity' = casADi__Sparsity__Sparsity'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Sparsity__Sparsity_TIC_TIC" c_CasADi__Sparsity__Sparsity_TIC_TIC
+  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr Sparsity')
+casADi__Sparsity__Sparsity''
+  :: Int -> Int -> Vector Int -> Vector Int -> IO Sparsity
+casADi__Sparsity__Sparsity'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__Sparsity__Sparsity_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+sparsity'' :: Int -> Int -> Vector Int -> Vector Int -> IO Sparsity
+sparsity'' = casADi__Sparsity__Sparsity''
+
diff --git a/Casadi/Wrappers/Classes/StabilizedQPSolver.hs b/Casadi/Wrappers/Classes/StabilizedQPSolver.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/StabilizedQPSolver.hs
@@ -0,0 +1,103 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.StabilizedQPSolver
+       (
+         StabilizedQPSolver,
+         StabilizedQPSolverClass(..),
+         stabilizedQPSolver,
+         stabilizedQPSolver_checkNode,
+         stabilizedQPSolver_generateNativeCode,
+         stabilizedQPSolver_setLPOptions,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show StabilizedQPSolver where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedQPSolver__checkNode" c_CasADi__StabilizedQPSolver__checkNode
+  :: Ptr StabilizedQPSolver' -> IO CInt
+casADi__StabilizedQPSolver__checkNode
+  :: StabilizedQPSolver -> IO Bool
+casADi__StabilizedQPSolver__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__StabilizedQPSolver__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+stabilizedQPSolver_checkNode :: StabilizedQPSolverClass a => a -> IO Bool
+stabilizedQPSolver_checkNode x = casADi__StabilizedQPSolver__checkNode (castStabilizedQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedQPSolver__setLPOptions" c_CasADi__StabilizedQPSolver__setLPOptions
+  :: Ptr StabilizedQPSolver' -> IO ()
+casADi__StabilizedQPSolver__setLPOptions
+  :: StabilizedQPSolver -> IO ()
+casADi__StabilizedQPSolver__setLPOptions x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__StabilizedQPSolver__setLPOptions x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set options that make the QP solver more suitable for solving LPs.
+-}
+stabilizedQPSolver_setLPOptions :: StabilizedQPSolverClass a => a -> IO ()
+stabilizedQPSolver_setLPOptions x = casADi__StabilizedQPSolver__setLPOptions (castStabilizedQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedQPSolver__generateNativeCode" c_CasADi__StabilizedQPSolver__generateNativeCode
+  :: Ptr StabilizedQPSolver' -> Ptr StdString' -> IO ()
+casADi__StabilizedQPSolver__generateNativeCode
+  :: StabilizedQPSolver -> String -> IO ()
+casADi__StabilizedQPSolver__generateNativeCode x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__StabilizedQPSolver__generateNativeCode x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate native code in the interfaced language for debugging
+-}
+stabilizedQPSolver_generateNativeCode :: StabilizedQPSolverClass a => a -> String -> IO ()
+stabilizedQPSolver_generateNativeCode x = casADi__StabilizedQPSolver__generateNativeCode (castStabilizedQPSolver x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedQPSolver__StabilizedQPSolver" c_CasADi__StabilizedQPSolver__StabilizedQPSolver
+  :: IO (Ptr StabilizedQPSolver')
+casADi__StabilizedQPSolver__StabilizedQPSolver
+  :: IO StabilizedQPSolver
+casADi__StabilizedQPSolver__StabilizedQPSolver  =
+  c_CasADi__StabilizedQPSolver__StabilizedQPSolver  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+stabilizedQPSolver :: IO StabilizedQPSolver
+stabilizedQPSolver = casADi__StabilizedQPSolver__StabilizedQPSolver
+
diff --git a/Casadi/Wrappers/Classes/StabilizedSQPMethod.hs b/Casadi/Wrappers/Classes/StabilizedSQPMethod.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/StabilizedSQPMethod.hs
@@ -0,0 +1,109 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.StabilizedSQPMethod
+       (
+         StabilizedSQPMethod,
+         StabilizedSQPMethodClass(..),
+         stabilizedSQPMethod,
+         stabilizedSQPMethod',
+         stabilizedSQPMethod_checkNode,
+         stabilizedSQPMethod_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show StabilizedSQPMethod where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedSQPMethod__checkNode" c_CasADi__StabilizedSQPMethod__checkNode
+  :: Ptr StabilizedSQPMethod' -> IO CInt
+casADi__StabilizedSQPMethod__checkNode
+  :: StabilizedSQPMethod -> IO Bool
+casADi__StabilizedSQPMethod__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__StabilizedSQPMethod__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+stabilizedSQPMethod_checkNode :: StabilizedSQPMethodClass a => a -> IO Bool
+stabilizedSQPMethod_checkNode x = casADi__StabilizedSQPMethod__checkNode (castStabilizedSQPMethod x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedSQPMethod__creator" c_CasADi__StabilizedSQPMethod__creator
+  :: Ptr Function' -> IO (Ptr NLPSolver')
+casADi__StabilizedSQPMethod__creator
+  :: Function -> IO NLPSolver
+casADi__StabilizedSQPMethod__creator x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__StabilizedSQPMethod__creator x0' >>= wrapReturn
+
+-- classy wrapper
+stabilizedSQPMethod_creator :: Function -> IO NLPSolver
+stabilizedSQPMethod_creator = casADi__StabilizedSQPMethod__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedSQPMethod__StabilizedSQPMethod" c_CasADi__StabilizedSQPMethod__StabilizedSQPMethod
+  :: IO (Ptr StabilizedSQPMethod')
+casADi__StabilizedSQPMethod__StabilizedSQPMethod
+  :: IO StabilizedSQPMethod
+casADi__StabilizedSQPMethod__StabilizedSQPMethod  =
+  c_CasADi__StabilizedSQPMethod__StabilizedSQPMethod  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::StabilizedSQPMethod::StabilizedSQPMethod()
+>------------------------------------------------------------------------
+>
+>Default constructor.
+>
+>>  CasADi::StabilizedSQPMethod::StabilizedSQPMethod(const Function &F, const Function &G)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED] Create an NLP solver instance (legacy syntax)
+>
+>>  CasADi::StabilizedSQPMethod::StabilizedSQPMethod(const Function &nlp)
+>------------------------------------------------------------------------
+>
+>Create an NLP solver instance.
+-}
+stabilizedSQPMethod :: IO StabilizedSQPMethod
+stabilizedSQPMethod = casADi__StabilizedSQPMethod__StabilizedSQPMethod
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__StabilizedSQPMethod__StabilizedSQPMethod_TIC" c_CasADi__StabilizedSQPMethod__StabilizedSQPMethod_TIC
+  :: Ptr Function' -> IO (Ptr StabilizedSQPMethod')
+casADi__StabilizedSQPMethod__StabilizedSQPMethod'
+  :: Function -> IO StabilizedSQPMethod
+casADi__StabilizedSQPMethod__StabilizedSQPMethod' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__StabilizedSQPMethod__StabilizedSQPMethod_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+stabilizedSQPMethod' :: Function -> IO StabilizedSQPMethod
+stabilizedSQPMethod' = casADi__StabilizedSQPMethod__StabilizedSQPMethod'
+
diff --git a/Casadi/Wrappers/Classes/SundialsIntegrator.hs b/Casadi/Wrappers/Classes/SundialsIntegrator.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SundialsIntegrator.hs
@@ -0,0 +1,85 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SundialsIntegrator
+       (
+         SundialsIntegrator,
+         SundialsIntegratorClass(..),
+         sundialsIntegrator,
+         sundialsIntegrator_checkNode,
+         sundialsIntegrator_setStopTime,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SundialsIntegrator where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SundialsIntegrator__checkNode" c_CasADi__SundialsIntegrator__checkNode
+  :: Ptr SundialsIntegrator' -> IO CInt
+casADi__SundialsIntegrator__checkNode
+  :: SundialsIntegrator -> IO Bool
+casADi__SundialsIntegrator__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SundialsIntegrator__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+sundialsIntegrator_checkNode :: SundialsIntegratorClass a => a -> IO Bool
+sundialsIntegrator_checkNode x = casADi__SundialsIntegrator__checkNode (castSundialsIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SundialsIntegrator__setStopTime" c_CasADi__SundialsIntegrator__setStopTime
+  :: Ptr SundialsIntegrator' -> CDouble -> IO ()
+casADi__SundialsIntegrator__setStopTime
+  :: SundialsIntegrator -> Double -> IO ()
+casADi__SundialsIntegrator__setStopTime x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SundialsIntegrator__setStopTime x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set a stop time for the forward integration.
+-}
+sundialsIntegrator_setStopTime :: SundialsIntegratorClass a => a -> Double -> IO ()
+sundialsIntegrator_setStopTime x = casADi__SundialsIntegrator__setStopTime (castSundialsIntegrator x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SundialsIntegrator__SundialsIntegrator" c_CasADi__SundialsIntegrator__SundialsIntegrator
+  :: IO (Ptr SundialsIntegrator')
+casADi__SundialsIntegrator__SundialsIntegrator
+  :: IO SundialsIntegrator
+casADi__SundialsIntegrator__SundialsIntegrator  =
+  c_CasADi__SundialsIntegrator__SundialsIntegrator  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+sundialsIntegrator :: IO SundialsIntegrator
+sundialsIntegrator = casADi__SundialsIntegrator__SundialsIntegrator
+
diff --git a/Casadi/Wrappers/Classes/SymbolicNLP.hs b/Casadi/Wrappers/Classes/SymbolicNLP.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SymbolicNLP.hs
@@ -0,0 +1,50 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SymbolicNLP
+       (
+         SymbolicNLP,
+         SymbolicNLPClass(..),
+         symbolicNLP_parseNL,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SymbolicNLP where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicNLP__parseNL" c_CasADi__SymbolicNLP__parseNL
+  :: Ptr SymbolicNLP' -> Ptr StdString' -> IO ()
+casADi__SymbolicNLP__parseNL
+  :: SymbolicNLP -> String -> IO ()
+casADi__SymbolicNLP__parseNL x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicNLP__parseNL x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Parse an AMPL och PyOmo NL-file.
+-}
+symbolicNLP_parseNL :: SymbolicNLPClass a => a -> String -> IO ()
+symbolicNLP_parseNL x = casADi__SymbolicNLP__parseNL (castSymbolicNLP x)
+
diff --git a/Casadi/Wrappers/Classes/SymbolicOCP.hs b/Casadi/Wrappers/Classes/SymbolicOCP.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SymbolicOCP.hs
@@ -0,0 +1,1498 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SymbolicOCP
+       (
+         SymbolicOCP,
+         SymbolicOCPClass(..),
+         symbolicOCP,
+         symbolicOCP',
+         symbolicOCP_addVariable,
+         symbolicOCP_atTime,
+         symbolicOCP_atTime',
+         symbolicOCP_atTime'',
+         symbolicOCP_atTime''',
+         symbolicOCP_beq,
+         symbolicOCP_beq',
+         symbolicOCP_der,
+         symbolicOCP_der',
+         symbolicOCP_derivativeStart,
+         symbolicOCP_derivativeStart',
+         symbolicOCP_derivativeStart'',
+         symbolicOCP_derivativeStart''',
+         symbolicOCP_eliminateAlgebraic,
+         symbolicOCP_eliminateDependentParameterInterdependencies,
+         symbolicOCP_eliminateDependentParameters,
+         symbolicOCP_eliminateIndependentParameters,
+         symbolicOCP_eliminateLagrangeTerms,
+         symbolicOCP_eliminateOutputInterdependencies,
+         symbolicOCP_eliminateOutputs,
+         symbolicOCP_eliminateQuadratureStates,
+         symbolicOCP_generateMuscodDatFile,
+         symbolicOCP_initialGuess,
+         symbolicOCP_initialGuess',
+         symbolicOCP_makeExplicit,
+         symbolicOCP_makeSemiExplicit,
+         symbolicOCP_max,
+         symbolicOCP_max',
+         symbolicOCP_min,
+         symbolicOCP_min',
+         symbolicOCP_nominal,
+         symbolicOCP_nominal',
+         symbolicOCP_ode,
+         symbolicOCP_ode',
+         symbolicOCP_operator_call,
+         symbolicOCP_parseFMI,
+         symbolicOCP_scaleEquations,
+         symbolicOCP_scaleVariables,
+         symbolicOCP_separateAlgebraic,
+         symbolicOCP_setBeq,
+         symbolicOCP_setBeq',
+         symbolicOCP_setDerivativeStart,
+         symbolicOCP_setDerivativeStart',
+         symbolicOCP_setDerivativeStart'',
+         symbolicOCP_setDerivativeStart''',
+         symbolicOCP_setInitialGuess,
+         symbolicOCP_setInitialGuess',
+         symbolicOCP_setMax,
+         symbolicOCP_setMax',
+         symbolicOCP_setMin,
+         symbolicOCP_setMin',
+         symbolicOCP_setNominal,
+         symbolicOCP_setNominal',
+         symbolicOCP_setOde,
+         symbolicOCP_setOde',
+         symbolicOCP_setStart,
+         symbolicOCP_setStart',
+         symbolicOCP_setStart'',
+         symbolicOCP_setStart''',
+         symbolicOCP_setUnit,
+         symbolicOCP_sortALG,
+         symbolicOCP_sortDAE,
+         symbolicOCP_sortDependentParameters,
+         symbolicOCP_sortOutputs,
+         symbolicOCP_start,
+         symbolicOCP_start',
+         symbolicOCP_start'',
+         symbolicOCP_start''',
+         symbolicOCP_unit,
+         symbolicOCP_unit',
+         symbolicOCP_variable,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SymbolicOCP where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__parseFMI" c_CasADi__SymbolicOCP__parseFMI
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO ()
+casADi__SymbolicOCP__parseFMI
+  :: SymbolicOCP -> String -> IO ()
+casADi__SymbolicOCP__parseFMI x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__parseFMI x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Parse from XML to C++ format.
+-}
+symbolicOCP_parseFMI :: SymbolicOCPClass a => a -> String -> IO ()
+symbolicOCP_parseFMI x = casADi__SymbolicOCP__parseFMI (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__addVariable" c_CasADi__SymbolicOCP__addVariable
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr Variable' -> IO ()
+casADi__SymbolicOCP__addVariable
+  :: SymbolicOCP -> String -> Variable -> IO ()
+casADi__SymbolicOCP__addVariable x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__addVariable x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Add a variable.
+-}
+symbolicOCP_addVariable :: SymbolicOCPClass a => a -> String -> Variable -> IO ()
+symbolicOCP_addVariable x = casADi__SymbolicOCP__addVariable (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__variable" c_CasADi__SymbolicOCP__variable
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr Variable')
+casADi__SymbolicOCP__variable
+  :: SymbolicOCP -> String -> IO Variable
+casADi__SymbolicOCP__variable x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__variable x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Access a variable by name.
+-}
+symbolicOCP_variable :: SymbolicOCPClass a => a -> String -> IO Variable
+symbolicOCP_variable x = casADi__SymbolicOCP__variable (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__separateAlgebraic" c_CasADi__SymbolicOCP__separateAlgebraic
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__separateAlgebraic
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__separateAlgebraic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__separateAlgebraic x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Identify and separate the algebraic variables and equations in the DAE.
+-}
+symbolicOCP_separateAlgebraic :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_separateAlgebraic x = casADi__SymbolicOCP__separateAlgebraic (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateAlgebraic" c_CasADi__SymbolicOCP__eliminateAlgebraic
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateAlgebraic
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateAlgebraic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateAlgebraic x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate algebraic variables, transforming them into outputs.
+-}
+symbolicOCP_eliminateAlgebraic :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateAlgebraic x = casADi__SymbolicOCP__eliminateAlgebraic (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__makeSemiExplicit" c_CasADi__SymbolicOCP__makeSemiExplicit
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__makeSemiExplicit
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__makeSemiExplicit x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__makeSemiExplicit x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Transform the implicit DAE to a semi-explicit DAE.
+-}
+symbolicOCP_makeSemiExplicit :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_makeSemiExplicit x = casADi__SymbolicOCP__makeSemiExplicit (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__makeExplicit" c_CasADi__SymbolicOCP__makeExplicit
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__makeExplicit
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__makeExplicit x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__makeExplicit x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Transform the implicit DAE or semi-explicit DAE into an explicit ODE.
+-}
+symbolicOCP_makeExplicit :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_makeExplicit x = casADi__SymbolicOCP__makeExplicit (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateIndependentParameters" c_CasADi__SymbolicOCP__eliminateIndependentParameters
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateIndependentParameters
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateIndependentParameters x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateIndependentParameters x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate independent parameters.
+-}
+symbolicOCP_eliminateIndependentParameters :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateIndependentParameters x = casADi__SymbolicOCP__eliminateIndependentParameters (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__sortDependentParameters" c_CasADi__SymbolicOCP__sortDependentParameters
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__sortDependentParameters
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__sortDependentParameters x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__sortDependentParameters x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Sort the dependent parameters.
+-}
+symbolicOCP_sortDependentParameters :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_sortDependentParameters x = casADi__SymbolicOCP__sortDependentParameters (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateDependentParameterInterdependencies" c_CasADi__SymbolicOCP__eliminateDependentParameterInterdependencies
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateDependentParameterInterdependencies
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateDependentParameterInterdependencies x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateDependentParameterInterdependencies x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate interdependencies amongst the dependent parameters.
+-}
+symbolicOCP_eliminateDependentParameterInterdependencies :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateDependentParameterInterdependencies x = casADi__SymbolicOCP__eliminateDependentParameterInterdependencies (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateDependentParameters" c_CasADi__SymbolicOCP__eliminateDependentParameters
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateDependentParameters
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateDependentParameters x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateDependentParameters x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate dependent parameters.
+-}
+symbolicOCP_eliminateDependentParameters :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateDependentParameters x = casADi__SymbolicOCP__eliminateDependentParameters (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__sortOutputs" c_CasADi__SymbolicOCP__sortOutputs
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__sortOutputs
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__sortOutputs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__sortOutputs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Sort the outputs.
+-}
+symbolicOCP_sortOutputs :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_sortOutputs x = casADi__SymbolicOCP__sortOutputs (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateOutputInterdependencies" c_CasADi__SymbolicOCP__eliminateOutputInterdependencies
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateOutputInterdependencies
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateOutputInterdependencies x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateOutputInterdependencies x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate interdependencies amongst the outputs.
+-}
+symbolicOCP_eliminateOutputInterdependencies :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateOutputInterdependencies x = casADi__SymbolicOCP__eliminateOutputInterdependencies (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateOutputs" c_CasADi__SymbolicOCP__eliminateOutputs
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateOutputs
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateOutputs x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateOutputs x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate outputs.
+-}
+symbolicOCP_eliminateOutputs :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateOutputs x = casADi__SymbolicOCP__eliminateOutputs (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateLagrangeTerms" c_CasADi__SymbolicOCP__eliminateLagrangeTerms
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateLagrangeTerms
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateLagrangeTerms x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateLagrangeTerms x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate Lagrange terms from the objective function and make them
+>quadrature states.
+-}
+symbolicOCP_eliminateLagrangeTerms :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateLagrangeTerms x = casADi__SymbolicOCP__eliminateLagrangeTerms (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__eliminateQuadratureStates" c_CasADi__SymbolicOCP__eliminateQuadratureStates
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__eliminateQuadratureStates
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__eliminateQuadratureStates x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__eliminateQuadratureStates x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Eliminate quadrature states and turn them into ODE states.
+-}
+symbolicOCP_eliminateQuadratureStates :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_eliminateQuadratureStates x = casADi__SymbolicOCP__eliminateQuadratureStates (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__sortDAE" c_CasADi__SymbolicOCP__sortDAE
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__sortDAE
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__sortDAE x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__sortDAE x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Sort the DAE and implictly defined states.
+-}
+symbolicOCP_sortDAE :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_sortDAE x = casADi__SymbolicOCP__sortDAE (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__sortALG" c_CasADi__SymbolicOCP__sortALG
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__sortALG
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__sortALG x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__sortALG x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Sort the algebraic equations and algebraic states.
+-}
+symbolicOCP_sortALG :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_sortALG x = casADi__SymbolicOCP__sortALG (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__generateMuscodDatFile" c_CasADi__SymbolicOCP__generateMuscodDatFile
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO ()
+casADi__SymbolicOCP__generateMuscodDatFile
+  :: SymbolicOCP -> String -> IO ()
+casADi__SymbolicOCP__generateMuscodDatFile x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__generateMuscodDatFile x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Generate a MUSCOD-II compatible DAT file.
+-}
+symbolicOCP_generateMuscodDatFile :: SymbolicOCPClass a => a -> String -> IO ()
+symbolicOCP_generateMuscodDatFile x = casADi__SymbolicOCP__generateMuscodDatFile (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__scaleVariables" c_CasADi__SymbolicOCP__scaleVariables
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__scaleVariables
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__scaleVariables x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__scaleVariables x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Scale the variables.
+-}
+symbolicOCP_scaleVariables :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_scaleVariables x = casADi__SymbolicOCP__scaleVariables (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__scaleEquations" c_CasADi__SymbolicOCP__scaleEquations
+  :: Ptr SymbolicOCP' -> IO ()
+casADi__SymbolicOCP__scaleEquations
+  :: SymbolicOCP -> IO ()
+casADi__SymbolicOCP__scaleEquations x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__scaleEquations x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Scale the implicit equations.
+-}
+symbolicOCP_scaleEquations :: SymbolicOCPClass a => a -> IO ()
+symbolicOCP_scaleEquations x = casADi__SymbolicOCP__scaleEquations (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__operator_call" c_CasADi__SymbolicOCP__operator_call
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__operator_call
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__operator_call x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__operator_call x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_operator_call :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_operator_call x = casADi__SymbolicOCP__operator_call (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__der" c_CasADi__SymbolicOCP__der
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__der
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__der x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__der x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::der(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get a derivative expression by name.
+>
+>>  SX CasADi::SymbolicOCP::der(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get a derivative expression by non-differentiated expression.
+-}
+symbolicOCP_der :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_der x = casADi__SymbolicOCP__der (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__der_TIC" c_CasADi__SymbolicOCP__der_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr SX')
+casADi__SymbolicOCP__der'
+  :: SymbolicOCP -> SX -> IO SX
+casADi__SymbolicOCP__der' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__der_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_der' :: SymbolicOCPClass a => a -> SX -> IO SX
+symbolicOCP_der' x = casADi__SymbolicOCP__der' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__beq" c_CasADi__SymbolicOCP__beq
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__beq
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__beq x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__beq x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::beq(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get a binding equation by name.
+>
+>>  SX CasADi::SymbolicOCP::beq(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get a binding equation by non-differentiated expression.
+-}
+symbolicOCP_beq :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_beq x = casADi__SymbolicOCP__beq (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__beq_TIC" c_CasADi__SymbolicOCP__beq_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr SX')
+casADi__SymbolicOCP__beq'
+  :: SymbolicOCP -> SX -> IO SX
+casADi__SymbolicOCP__beq' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__beq_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_beq' :: SymbolicOCPClass a => a -> SX -> IO SX
+symbolicOCP_beq' x = casADi__SymbolicOCP__beq' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setBeq" c_CasADi__SymbolicOCP__setBeq
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setBeq
+  :: SymbolicOCP -> String -> SX -> IO ()
+casADi__SymbolicOCP__setBeq x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setBeq x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setBeq(const std::string &name, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set a binding equation by name.
+>
+>>  void CasADi::SymbolicOCP::setBeq(const SX &var, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set an binding expression by non-differentiated expression.
+-}
+symbolicOCP_setBeq :: SymbolicOCPClass a => a -> String -> SX -> IO ()
+symbolicOCP_setBeq x = casADi__SymbolicOCP__setBeq (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setBeq_TIC" c_CasADi__SymbolicOCP__setBeq_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setBeq'
+  :: SymbolicOCP -> SX -> SX -> IO ()
+casADi__SymbolicOCP__setBeq' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setBeq_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setBeq' :: SymbolicOCPClass a => a -> SX -> SX -> IO ()
+symbolicOCP_setBeq' x = casADi__SymbolicOCP__setBeq' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__ode" c_CasADi__SymbolicOCP__ode
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__ode
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__ode x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__ode x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::ode(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get a derivative binding equation (i.e. ordinary differential equation, ODE)
+>by name. Returns variable expression if unknwon.
+>
+>>  SX CasADi::SymbolicOCP::ode(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get a derivative binding expression (i.e. ordinary differential equation,
+>ODE) by non-differentiated expression. Returns derivative expression if
+>unknown.
+-}
+symbolicOCP_ode :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_ode x = casADi__SymbolicOCP__ode (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__ode_TIC" c_CasADi__SymbolicOCP__ode_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr SX')
+casADi__SymbolicOCP__ode'
+  :: SymbolicOCP -> SX -> IO SX
+casADi__SymbolicOCP__ode' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__ode_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_ode' :: SymbolicOCPClass a => a -> SX -> IO SX
+symbolicOCP_ode' x = casADi__SymbolicOCP__ode' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setOde" c_CasADi__SymbolicOCP__setOde
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setOde
+  :: SymbolicOCP -> String -> SX -> IO ()
+casADi__SymbolicOCP__setOde x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setOde x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setOde(const std::string &name, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set a derivative binding equation by name.
+>
+>>  void CasADi::SymbolicOCP::setOde(const SX &var, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set an derivative binding expression by non-differentiated expression.
+-}
+symbolicOCP_setOde :: SymbolicOCPClass a => a -> String -> SX -> IO ()
+symbolicOCP_setOde x = casADi__SymbolicOCP__setOde (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setOde_TIC" c_CasADi__SymbolicOCP__setOde_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setOde'
+  :: SymbolicOCP -> SX -> SX -> IO ()
+casADi__SymbolicOCP__setOde' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setOde_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setOde' :: SymbolicOCPClass a => a -> SX -> SX -> IO ()
+symbolicOCP_setOde' x = casADi__SymbolicOCP__setOde' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__nominal" c_CasADi__SymbolicOCP__nominal
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO CDouble
+casADi__SymbolicOCP__nominal
+  :: SymbolicOCP -> String -> IO Double
+casADi__SymbolicOCP__nominal x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__nominal x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  double CasADi::SymbolicOCP::nominal(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get the nominal value by name.
+>
+>>  std::vector< double > CasADi::SymbolicOCP::nominal(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get the nominal value(s) by expression.
+-}
+symbolicOCP_nominal :: SymbolicOCPClass a => a -> String -> IO Double
+symbolicOCP_nominal x = casADi__SymbolicOCP__nominal (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__nominal_TIC" c_CasADi__SymbolicOCP__nominal_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr (CppVec CDouble))
+casADi__SymbolicOCP__nominal'
+  :: SymbolicOCP -> SX -> IO (Vector Double)
+casADi__SymbolicOCP__nominal' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__nominal_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_nominal' :: SymbolicOCPClass a => a -> SX -> IO (Vector Double)
+symbolicOCP_nominal' x = casADi__SymbolicOCP__nominal' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setNominal" c_CasADi__SymbolicOCP__setNominal
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> IO ()
+casADi__SymbolicOCP__setNominal
+  :: SymbolicOCP -> String -> Double -> IO ()
+casADi__SymbolicOCP__setNominal x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setNominal x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setNominal(const std::string &name, double val)
+>------------------------------------------------------------------------
+>
+>Set the nominal value by name.
+>
+>>  void CasADi::SymbolicOCP::setNominal(const SX &var, const std::vector< double > &val)
+>------------------------------------------------------------------------
+>
+>Set the nominal value(s) by expression.
+-}
+symbolicOCP_setNominal :: SymbolicOCPClass a => a -> String -> Double -> IO ()
+symbolicOCP_setNominal x = casADi__SymbolicOCP__setNominal (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setNominal_TIC" c_CasADi__SymbolicOCP__setNominal_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr (CppVec CDouble) -> IO ()
+casADi__SymbolicOCP__setNominal'
+  :: SymbolicOCP -> SX -> Vector Double -> IO ()
+casADi__SymbolicOCP__setNominal' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setNominal_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setNominal' :: SymbolicOCPClass a => a -> SX -> Vector Double -> IO ()
+symbolicOCP_setNominal' x = casADi__SymbolicOCP__setNominal' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__min" c_CasADi__SymbolicOCP__min
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__min
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__min x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__min x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::min(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get the lower bound by name.
+>
+>>  SX CasADi::SymbolicOCP::min(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get the lower bound(s) by expression.
+-}
+symbolicOCP_min :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_min x = casADi__SymbolicOCP__min (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__min_TIC" c_CasADi__SymbolicOCP__min_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr SX')
+casADi__SymbolicOCP__min'
+  :: SymbolicOCP -> SX -> IO SX
+casADi__SymbolicOCP__min' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__min_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_min' :: SymbolicOCPClass a => a -> SX -> IO SX
+symbolicOCP_min' x = casADi__SymbolicOCP__min' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setMin" c_CasADi__SymbolicOCP__setMin
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setMin
+  :: SymbolicOCP -> String -> SX -> IO ()
+casADi__SymbolicOCP__setMin x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setMin x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setMin(const std::string &name, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set the lower bound by name.
+>
+>>  void CasADi::SymbolicOCP::setMin(const SX &var, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set the lower bound(s) by expression.
+-}
+symbolicOCP_setMin :: SymbolicOCPClass a => a -> String -> SX -> IO ()
+symbolicOCP_setMin x = casADi__SymbolicOCP__setMin (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setMin_TIC" c_CasADi__SymbolicOCP__setMin_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setMin'
+  :: SymbolicOCP -> SX -> SX -> IO ()
+casADi__SymbolicOCP__setMin' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setMin_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setMin' :: SymbolicOCPClass a => a -> SX -> SX -> IO ()
+symbolicOCP_setMin' x = casADi__SymbolicOCP__setMin' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__max" c_CasADi__SymbolicOCP__max
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__max
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__max x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__max x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::max(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get the upper bound by name.
+>
+>>  SX CasADi::SymbolicOCP::max(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get the upper bound(s) by expression.
+-}
+symbolicOCP_max :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_max x = casADi__SymbolicOCP__max (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__max_TIC" c_CasADi__SymbolicOCP__max_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr SX')
+casADi__SymbolicOCP__max'
+  :: SymbolicOCP -> SX -> IO SX
+casADi__SymbolicOCP__max' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__max_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_max' :: SymbolicOCPClass a => a -> SX -> IO SX
+symbolicOCP_max' x = casADi__SymbolicOCP__max' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setMax" c_CasADi__SymbolicOCP__setMax
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setMax
+  :: SymbolicOCP -> String -> SX -> IO ()
+casADi__SymbolicOCP__setMax x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setMax x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setMax(const std::string &name, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set the upper bound by name.
+>
+>>  void CasADi::SymbolicOCP::setMax(const SX &var, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set the upper bound(s) by expression.
+-}
+symbolicOCP_setMax :: SymbolicOCPClass a => a -> String -> SX -> IO ()
+symbolicOCP_setMax x = casADi__SymbolicOCP__setMax (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setMax_TIC" c_CasADi__SymbolicOCP__setMax_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setMax'
+  :: SymbolicOCP -> SX -> SX -> IO ()
+casADi__SymbolicOCP__setMax' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setMax_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setMax' :: SymbolicOCPClass a => a -> SX -> SX -> IO ()
+symbolicOCP_setMax' x = casADi__SymbolicOCP__setMax' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__initialGuess" c_CasADi__SymbolicOCP__initialGuess
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr SX')
+casADi__SymbolicOCP__initialGuess
+  :: SymbolicOCP -> String -> IO SX
+casADi__SymbolicOCP__initialGuess x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__initialGuess x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::initialGuess(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get the initial guess by name.
+>
+>>  SX CasADi::SymbolicOCP::initialGuess(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get the initial guess(es) by expression.
+-}
+symbolicOCP_initialGuess :: SymbolicOCPClass a => a -> String -> IO SX
+symbolicOCP_initialGuess x = casADi__SymbolicOCP__initialGuess (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__initialGuess_TIC" c_CasADi__SymbolicOCP__initialGuess_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr SX')
+casADi__SymbolicOCP__initialGuess'
+  :: SymbolicOCP -> SX -> IO SX
+casADi__SymbolicOCP__initialGuess' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__initialGuess_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_initialGuess' :: SymbolicOCPClass a => a -> SX -> IO SX
+symbolicOCP_initialGuess' x = casADi__SymbolicOCP__initialGuess' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setInitialGuess" c_CasADi__SymbolicOCP__setInitialGuess
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setInitialGuess
+  :: SymbolicOCP -> String -> SX -> IO ()
+casADi__SymbolicOCP__setInitialGuess x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setInitialGuess x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setInitialGuess(const std::string &name, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set the initial guess by name.
+>
+>>  void CasADi::SymbolicOCP::setInitialGuess(const SX &var, const SX &val)
+>------------------------------------------------------------------------
+>
+>Set the initial guess(es) by expression.
+-}
+symbolicOCP_setInitialGuess :: SymbolicOCPClass a => a -> String -> SX -> IO ()
+symbolicOCP_setInitialGuess x = casADi__SymbolicOCP__setInitialGuess (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setInitialGuess_TIC" c_CasADi__SymbolicOCP__setInitialGuess_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr SX' -> IO ()
+casADi__SymbolicOCP__setInitialGuess'
+  :: SymbolicOCP -> SX -> SX -> IO ()
+casADi__SymbolicOCP__setInitialGuess' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setInitialGuess_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setInitialGuess' :: SymbolicOCPClass a => a -> SX -> SX -> IO ()
+symbolicOCP_setInitialGuess' x = casADi__SymbolicOCP__setInitialGuess' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__start" c_CasADi__SymbolicOCP__start
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CInt -> IO CDouble
+casADi__SymbolicOCP__start
+  :: SymbolicOCP -> String -> Bool -> IO Double
+casADi__SymbolicOCP__start x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__start x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  double CasADi::SymbolicOCP::start(const std::string &name, bool normalized=false) const 
+>------------------------------------------------------------------------
+>
+>Get the (optionally normalized) value at time 0 by name.
+>
+>>  std::vector< double > CasADi::SymbolicOCP::start(const SX &var, bool normalized=false) const 
+>------------------------------------------------------------------------
+>
+>Get the (optionally normalized) value(s) at time 0 by expression.
+-}
+symbolicOCP_start :: SymbolicOCPClass a => a -> String -> Bool -> IO Double
+symbolicOCP_start x = casADi__SymbolicOCP__start (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__start_TIC" c_CasADi__SymbolicOCP__start_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO CDouble
+casADi__SymbolicOCP__start'
+  :: SymbolicOCP -> String -> IO Double
+casADi__SymbolicOCP__start' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__start_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_start' :: SymbolicOCPClass a => a -> String -> IO Double
+symbolicOCP_start' x = casADi__SymbolicOCP__start' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__start_TIC_TIC" c_CasADi__SymbolicOCP__start_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> CInt -> IO (Ptr (CppVec CDouble))
+casADi__SymbolicOCP__start''
+  :: SymbolicOCP -> SX -> Bool -> IO (Vector Double)
+casADi__SymbolicOCP__start'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__start_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_start'' :: SymbolicOCPClass a => a -> SX -> Bool -> IO (Vector Double)
+symbolicOCP_start'' x = casADi__SymbolicOCP__start'' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__start_TIC_TIC_TIC" c_CasADi__SymbolicOCP__start_TIC_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr (CppVec CDouble))
+casADi__SymbolicOCP__start'''
+  :: SymbolicOCP -> SX -> IO (Vector Double)
+casADi__SymbolicOCP__start''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__start_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_start''' :: SymbolicOCPClass a => a -> SX -> IO (Vector Double)
+symbolicOCP_start''' x = casADi__SymbolicOCP__start''' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setStart" c_CasADi__SymbolicOCP__setStart
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> CInt -> IO ()
+casADi__SymbolicOCP__setStart
+  :: SymbolicOCP -> String -> Double -> Bool -> IO ()
+casADi__SymbolicOCP__setStart x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SymbolicOCP__setStart x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setStart(const std::string &name, double val, bool normalized=false)
+>------------------------------------------------------------------------
+>
+>Set the (optionally normalized) value at time 0 by name.
+>
+>>  void CasADi::SymbolicOCP::setStart(const SX &var, const std::vector< double > &val, bool normalized=false)
+>------------------------------------------------------------------------
+>
+>Set the (optionally normalized) value(s) at time 0 by expression.
+-}
+symbolicOCP_setStart :: SymbolicOCPClass a => a -> String -> Double -> Bool -> IO ()
+symbolicOCP_setStart x = casADi__SymbolicOCP__setStart (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setStart_TIC" c_CasADi__SymbolicOCP__setStart_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> IO ()
+casADi__SymbolicOCP__setStart'
+  :: SymbolicOCP -> String -> Double -> IO ()
+casADi__SymbolicOCP__setStart' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setStart_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setStart' :: SymbolicOCPClass a => a -> String -> Double -> IO ()
+symbolicOCP_setStart' x = casADi__SymbolicOCP__setStart' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setStart_TIC_TIC" c_CasADi__SymbolicOCP__setStart_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr (CppVec CDouble) -> CInt -> IO ()
+casADi__SymbolicOCP__setStart''
+  :: SymbolicOCP -> SX -> Vector Double -> Bool -> IO ()
+casADi__SymbolicOCP__setStart'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SymbolicOCP__setStart_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setStart'' :: SymbolicOCPClass a => a -> SX -> Vector Double -> Bool -> IO ()
+symbolicOCP_setStart'' x = casADi__SymbolicOCP__setStart'' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setStart_TIC_TIC_TIC" c_CasADi__SymbolicOCP__setStart_TIC_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr (CppVec CDouble) -> IO ()
+casADi__SymbolicOCP__setStart'''
+  :: SymbolicOCP -> SX -> Vector Double -> IO ()
+casADi__SymbolicOCP__setStart''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setStart_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setStart''' :: SymbolicOCPClass a => a -> SX -> Vector Double -> IO ()
+symbolicOCP_setStart''' x = casADi__SymbolicOCP__setStart''' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__derivativeStart" c_CasADi__SymbolicOCP__derivativeStart
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CInt -> IO CDouble
+casADi__SymbolicOCP__derivativeStart
+  :: SymbolicOCP -> String -> Bool -> IO Double
+casADi__SymbolicOCP__derivativeStart x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__derivativeStart x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  double CasADi::SymbolicOCP::derivativeStart(const std::string &name, bool normalized=false) const 
+>------------------------------------------------------------------------
+>
+>Get the (optionally normalized) derivative value at time 0 by name.
+>
+>>  std::vector< double > CasADi::SymbolicOCP::derivativeStart(const SX &var, bool normalized=false) const 
+>------------------------------------------------------------------------
+>
+>Get the (optionally normalized) derivative value(s) at time 0 by expression.
+-}
+symbolicOCP_derivativeStart :: SymbolicOCPClass a => a -> String -> Bool -> IO Double
+symbolicOCP_derivativeStart x = casADi__SymbolicOCP__derivativeStart (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__derivativeStart_TIC" c_CasADi__SymbolicOCP__derivativeStart_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO CDouble
+casADi__SymbolicOCP__derivativeStart'
+  :: SymbolicOCP -> String -> IO Double
+casADi__SymbolicOCP__derivativeStart' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__derivativeStart_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_derivativeStart' :: SymbolicOCPClass a => a -> String -> IO Double
+symbolicOCP_derivativeStart' x = casADi__SymbolicOCP__derivativeStart' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__derivativeStart_TIC_TIC" c_CasADi__SymbolicOCP__derivativeStart_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> CInt -> IO (Ptr (CppVec CDouble))
+casADi__SymbolicOCP__derivativeStart''
+  :: SymbolicOCP -> SX -> Bool -> IO (Vector Double)
+casADi__SymbolicOCP__derivativeStart'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__derivativeStart_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_derivativeStart'' :: SymbolicOCPClass a => a -> SX -> Bool -> IO (Vector Double)
+symbolicOCP_derivativeStart'' x = casADi__SymbolicOCP__derivativeStart'' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__derivativeStart_TIC_TIC_TIC" c_CasADi__SymbolicOCP__derivativeStart_TIC_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr (CppVec CDouble))
+casADi__SymbolicOCP__derivativeStart'''
+  :: SymbolicOCP -> SX -> IO (Vector Double)
+casADi__SymbolicOCP__derivativeStart''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__derivativeStart_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_derivativeStart''' :: SymbolicOCPClass a => a -> SX -> IO (Vector Double)
+symbolicOCP_derivativeStart''' x = casADi__SymbolicOCP__derivativeStart''' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setDerivativeStart" c_CasADi__SymbolicOCP__setDerivativeStart
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> CInt -> IO ()
+casADi__SymbolicOCP__setDerivativeStart
+  :: SymbolicOCP -> String -> Double -> Bool -> IO ()
+casADi__SymbolicOCP__setDerivativeStart x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SymbolicOCP__setDerivativeStart x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  void CasADi::SymbolicOCP::setDerivativeStart(const std::string &name, double val, bool normalized=false)
+>------------------------------------------------------------------------
+>
+>Set the (optionally normalized) derivative value at time 0 by name.
+>
+>>  void CasADi::SymbolicOCP::setDerivativeStart(const SX &var, const std::vector< double > &val, bool normalized=false)
+>------------------------------------------------------------------------
+>
+>Set the (optionally normalized) derivative value(s) at time 0 by expression.
+-}
+symbolicOCP_setDerivativeStart :: SymbolicOCPClass a => a -> String -> Double -> Bool -> IO ()
+symbolicOCP_setDerivativeStart x = casADi__SymbolicOCP__setDerivativeStart (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setDerivativeStart_TIC" c_CasADi__SymbolicOCP__setDerivativeStart_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> IO ()
+casADi__SymbolicOCP__setDerivativeStart'
+  :: SymbolicOCP -> String -> Double -> IO ()
+casADi__SymbolicOCP__setDerivativeStart' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setDerivativeStart_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setDerivativeStart' :: SymbolicOCPClass a => a -> String -> Double -> IO ()
+symbolicOCP_setDerivativeStart' x = casADi__SymbolicOCP__setDerivativeStart' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setDerivativeStart_TIC_TIC" c_CasADi__SymbolicOCP__setDerivativeStart_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr (CppVec CDouble) -> CInt -> IO ()
+casADi__SymbolicOCP__setDerivativeStart''
+  :: SymbolicOCP -> SX -> Vector Double -> Bool -> IO ()
+casADi__SymbolicOCP__setDerivativeStart'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SymbolicOCP__setDerivativeStart_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setDerivativeStart'' :: SymbolicOCPClass a => a -> SX -> Vector Double -> Bool -> IO ()
+symbolicOCP_setDerivativeStart'' x = casADi__SymbolicOCP__setDerivativeStart'' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setDerivativeStart_TIC_TIC_TIC" c_CasADi__SymbolicOCP__setDerivativeStart_TIC_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> Ptr (CppVec CDouble) -> IO ()
+casADi__SymbolicOCP__setDerivativeStart'''
+  :: SymbolicOCP -> SX -> Vector Double -> IO ()
+casADi__SymbolicOCP__setDerivativeStart''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setDerivativeStart_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_setDerivativeStart''' :: SymbolicOCPClass a => a -> SX -> Vector Double -> IO ()
+symbolicOCP_setDerivativeStart''' x = casADi__SymbolicOCP__setDerivativeStart''' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__unit" c_CasADi__SymbolicOCP__unit
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> IO (Ptr StdString')
+casADi__SymbolicOCP__unit
+  :: SymbolicOCP -> String -> IO String
+casADi__SymbolicOCP__unit x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__unit x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  std::string CasADi::SymbolicOCP::unit(const std::string &name) const 
+>------------------------------------------------------------------------
+>
+>Get the unit for a component.
+>
+>>  std::string CasADi::SymbolicOCP::unit(const SX &var) const 
+>------------------------------------------------------------------------
+>
+>Get the unit given a vector of symbolic variables (all units must be
+>identical)
+-}
+symbolicOCP_unit :: SymbolicOCPClass a => a -> String -> IO String
+symbolicOCP_unit x = casADi__SymbolicOCP__unit (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__unit_TIC" c_CasADi__SymbolicOCP__unit_TIC
+  :: Ptr SymbolicOCP' -> Ptr SX' -> IO (Ptr StdString')
+casADi__SymbolicOCP__unit'
+  :: SymbolicOCP -> SX -> IO String
+casADi__SymbolicOCP__unit' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicOCP__unit_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_unit' :: SymbolicOCPClass a => a -> SX -> IO String
+symbolicOCP_unit' x = casADi__SymbolicOCP__unit' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__setUnit" c_CasADi__SymbolicOCP__setUnit
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> Ptr StdString' -> IO ()
+casADi__SymbolicOCP__setUnit
+  :: SymbolicOCP -> String -> String -> IO ()
+casADi__SymbolicOCP__setUnit x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__setUnit x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the unit for a component.
+-}
+symbolicOCP_setUnit :: SymbolicOCPClass a => a -> String -> String -> IO ()
+symbolicOCP_setUnit x = casADi__SymbolicOCP__setUnit (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__atTime" c_CasADi__SymbolicOCP__atTime
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> CInt -> IO (Ptr SX')
+casADi__SymbolicOCP__atTime
+  :: SymbolicOCP -> String -> Double -> Bool -> IO SX
+casADi__SymbolicOCP__atTime x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SymbolicOCP__atTime x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SX CasADi::SymbolicOCP::atTime(const std::string &name, double t, bool allocate=false) const 
+>------------------------------------------------------------------------
+>
+>Timed variable (never allocate)
+>
+>>  SX CasADi::SymbolicOCP::atTime(const std::string &name, double t, bool allocate=false)
+>------------------------------------------------------------------------
+>
+>Timed variable (allocate if necessary)
+-}
+symbolicOCP_atTime :: SymbolicOCPClass a => a -> String -> Double -> Bool -> IO SX
+symbolicOCP_atTime x = casADi__SymbolicOCP__atTime (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__atTime_TIC" c_CasADi__SymbolicOCP__atTime_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> IO (Ptr SX')
+casADi__SymbolicOCP__atTime'
+  :: SymbolicOCP -> String -> Double -> IO SX
+casADi__SymbolicOCP__atTime' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__atTime_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_atTime' :: SymbolicOCPClass a => a -> String -> Double -> IO SX
+symbolicOCP_atTime' x = casADi__SymbolicOCP__atTime' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__atTime_TIC_TIC" c_CasADi__SymbolicOCP__atTime_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> CInt -> IO (Ptr SX')
+casADi__SymbolicOCP__atTime''
+  :: SymbolicOCP -> String -> Double -> Bool -> IO SX
+casADi__SymbolicOCP__atTime'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__SymbolicOCP__atTime_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_atTime'' :: SymbolicOCPClass a => a -> String -> Double -> Bool -> IO SX
+symbolicOCP_atTime'' x = casADi__SymbolicOCP__atTime'' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__atTime_TIC_TIC_TIC" c_CasADi__SymbolicOCP__atTime_TIC_TIC_TIC
+  :: Ptr SymbolicOCP' -> Ptr StdString' -> CDouble -> IO (Ptr SX')
+casADi__SymbolicOCP__atTime'''
+  :: SymbolicOCP -> String -> Double -> IO SX
+casADi__SymbolicOCP__atTime''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__SymbolicOCP__atTime_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP_atTime''' :: SymbolicOCPClass a => a -> String -> Double -> IO SX
+symbolicOCP_atTime''' x = casADi__SymbolicOCP__atTime''' (castSymbolicOCP x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__SymbolicOCP" c_CasADi__SymbolicOCP__SymbolicOCP
+  :: CInt -> IO (Ptr SymbolicOCP')
+casADi__SymbolicOCP__SymbolicOCP
+  :: Bool -> IO SymbolicOCP
+casADi__SymbolicOCP__SymbolicOCP x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicOCP__SymbolicOCP x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+symbolicOCP :: Bool -> IO SymbolicOCP
+symbolicOCP = casADi__SymbolicOCP__SymbolicOCP
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicOCP__SymbolicOCP_TIC" c_CasADi__SymbolicOCP__SymbolicOCP_TIC
+  :: IO (Ptr SymbolicOCP')
+casADi__SymbolicOCP__SymbolicOCP'
+  :: IO SymbolicOCP
+casADi__SymbolicOCP__SymbolicOCP'  =
+  c_CasADi__SymbolicOCP__SymbolicOCP_TIC  >>= wrapReturn
+
+-- classy wrapper
+symbolicOCP' :: IO SymbolicOCP
+symbolicOCP' = casADi__SymbolicOCP__SymbolicOCP'
+
diff --git a/Casadi/Wrappers/Classes/SymbolicQR.hs b/Casadi/Wrappers/Classes/SymbolicQR.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/SymbolicQR.hs
@@ -0,0 +1,121 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.SymbolicQR
+       (
+         SymbolicQR,
+         SymbolicQRClass(..),
+         symbolicQR,
+         symbolicQR',
+         symbolicQR'',
+         symbolicQR_checkNode,
+         symbolicQR_creator,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show SymbolicQR where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicQR__checkNode" c_CasADi__SymbolicQR__checkNode
+  :: Ptr SymbolicQR' -> IO CInt
+casADi__SymbolicQR__checkNode
+  :: SymbolicQR -> IO Bool
+casADi__SymbolicQR__checkNode x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicQR__checkNode x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Check if the node is pointing to the right type of object.
+-}
+symbolicQR_checkNode :: SymbolicQRClass a => a -> IO Bool
+symbolicQR_checkNode x = casADi__SymbolicQR__checkNode (castSymbolicQR x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicQR__creator" c_CasADi__SymbolicQR__creator
+  :: Ptr Sparsity' -> CInt -> IO (Ptr LinearSolver')
+casADi__SymbolicQR__creator
+  :: Sparsity -> Int -> IO LinearSolver
+casADi__SymbolicQR__creator x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicQR__creator x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicQR_creator :: Sparsity -> Int -> IO LinearSolver
+symbolicQR_creator = casADi__SymbolicQR__creator
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicQR__SymbolicQR" c_CasADi__SymbolicQR__SymbolicQR
+  :: IO (Ptr SymbolicQR')
+casADi__SymbolicQR__SymbolicQR
+  :: IO SymbolicQR
+casADi__SymbolicQR__SymbolicQR  =
+  c_CasADi__SymbolicQR__SymbolicQR  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::SymbolicQR::SymbolicQR()
+>------------------------------------------------------------------------
+>
+>Default (empty) constructor.
+>
+>>  CasADi::SymbolicQR::SymbolicQR(const Sparsity &sp, int nrhs=1)
+>------------------------------------------------------------------------
+>
+>Create a linear solver given a sparsity pattern.
+-}
+symbolicQR :: IO SymbolicQR
+symbolicQR = casADi__SymbolicQR__SymbolicQR
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicQR__SymbolicQR_TIC" c_CasADi__SymbolicQR__SymbolicQR_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr SymbolicQR')
+casADi__SymbolicQR__SymbolicQR'
+  :: Sparsity -> Int -> IO SymbolicQR
+casADi__SymbolicQR__SymbolicQR' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__SymbolicQR__SymbolicQR_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+symbolicQR' :: Sparsity -> Int -> IO SymbolicQR
+symbolicQR' = casADi__SymbolicQR__SymbolicQR'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__SymbolicQR__SymbolicQR_TIC_TIC" c_CasADi__SymbolicQR__SymbolicQR_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr SymbolicQR')
+casADi__SymbolicQR__SymbolicQR''
+  :: Sparsity -> IO SymbolicQR
+casADi__SymbolicQR__SymbolicQR'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__SymbolicQR__SymbolicQR_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+symbolicQR'' :: Sparsity -> IO SymbolicQR
+symbolicQR'' = casADi__SymbolicQR__SymbolicQR''
+
diff --git a/Casadi/Wrappers/Classes/Variable.hs b/Casadi/Wrappers/Classes/Variable.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/Variable.hs
@@ -0,0 +1,162 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.Variable
+       (
+         Variable,
+         VariableClass(..),
+         variable,
+         variable_atTime,
+         variable_atTime',
+         variable_atTime'',
+         variable_atTime''',
+         variable_name,
+         variable_setName,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show Variable where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__name" c_CasADi__Variable__name
+  :: Ptr Variable' -> IO (Ptr StdString')
+casADi__Variable__name
+  :: Variable -> IO String
+casADi__Variable__name x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__Variable__name x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Variable name.
+-}
+variable_name :: VariableClass a => a -> IO String
+variable_name x = casADi__Variable__name (castVariable x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__setName" c_CasADi__Variable__setName
+  :: Ptr Variable' -> Ptr StdString' -> IO ()
+casADi__Variable__setName
+  :: Variable -> String -> IO ()
+casADi__Variable__setName x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Variable__setName x0' x1' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Set the variable name (and corresponding expressions)
+-}
+variable_setName :: VariableClass a => a -> String -> IO ()
+variable_setName x = casADi__Variable__setName (castVariable x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__atTime" c_CasADi__Variable__atTime
+  :: Ptr Variable' -> CDouble -> CInt -> IO (Ptr SXElement')
+casADi__Variable__atTime
+  :: Variable -> Double -> Bool -> IO SXElement
+casADi__Variable__atTime x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Variable__atTime x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  SXElement CasADi::Variable::atTime(double t, bool allocate=false) const 
+>------------------------------------------------------------------------
+>
+>Timed variable (never allocate)
+>
+>>  SXElement CasADi::Variable::atTime(double t, bool allocate=false)
+>------------------------------------------------------------------------
+>
+>Timed variable (allocate if necessary)
+-}
+variable_atTime :: VariableClass a => a -> Double -> Bool -> IO SXElement
+variable_atTime x = casADi__Variable__atTime (castVariable x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__atTime_TIC" c_CasADi__Variable__atTime_TIC
+  :: Ptr Variable' -> CDouble -> IO (Ptr SXElement')
+casADi__Variable__atTime'
+  :: Variable -> Double -> IO SXElement
+casADi__Variable__atTime' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Variable__atTime_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+variable_atTime' :: VariableClass a => a -> Double -> IO SXElement
+variable_atTime' x = casADi__Variable__atTime' (castVariable x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__atTime_TIC_TIC" c_CasADi__Variable__atTime_TIC_TIC
+  :: Ptr Variable' -> CDouble -> CInt -> IO (Ptr SXElement')
+casADi__Variable__atTime''
+  :: Variable -> Double -> Bool -> IO SXElement
+casADi__Variable__atTime'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__Variable__atTime_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+-- classy wrapper
+variable_atTime'' :: VariableClass a => a -> Double -> Bool -> IO SXElement
+variable_atTime'' x = casADi__Variable__atTime'' (castVariable x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__atTime_TIC_TIC_TIC" c_CasADi__Variable__atTime_TIC_TIC_TIC
+  :: Ptr Variable' -> CDouble -> IO (Ptr SXElement')
+casADi__Variable__atTime'''
+  :: Variable -> Double -> IO SXElement
+casADi__Variable__atTime''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__Variable__atTime_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+-- classy wrapper
+variable_atTime''' :: VariableClass a => a -> Double -> IO SXElement
+variable_atTime''' x = casADi__Variable__atTime''' (castVariable x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__Variable__Variable" c_CasADi__Variable__Variable
+  :: IO (Ptr Variable')
+casADi__Variable__Variable
+  :: IO Variable
+casADi__Variable__Variable  =
+  c_CasADi__Variable__Variable  >>= wrapReturn
+
+-- classy wrapper
+{-|
+>Default constructor.
+-}
+variable :: IO Variable
+variable = casADi__Variable__Variable
+
diff --git a/Casadi/Wrappers/Classes/WeakRef.hs b/Casadi/Wrappers/Classes/WeakRef.hs
new file mode 100644
--- /dev/null
+++ b/Casadi/Wrappers/Classes/WeakRef.hs
@@ -0,0 +1,123 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# Language ForeignFunctionInterface #-}
+{-# Language FlexibleInstances #-}
+{-# Language MultiParamTypeClasses #-}
+
+module Casadi.Wrappers.Classes.WeakRef
+       (
+         WeakRef,
+         WeakRefClass(..),
+         weakRef,
+         weakRef',
+         weakRef'',
+         weakRef_alive,
+         weakRef_shared,
+       ) where
+
+
+import Prelude hiding ( Functor )
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+import Foreign.ForeignPtr ( newForeignPtr )
+import System.IO.Unsafe ( unsafePerformIO ) -- for show instances
+
+import Casadi.Wrappers.Classes.PrintableObject
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.MarshalTypes ( CppVec, StdString' ) -- StdOstream'
+import Casadi.Marshal ( Marshal(..), withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+instance Show WeakRef where
+  show = unsafePerformIO . printableObject_getDescription
+-- direct wrapper
+foreign import ccall unsafe "CasADi__WeakRef__shared" c_CasADi__WeakRef__shared
+  :: Ptr WeakRef' -> IO (Ptr SharedObject')
+casADi__WeakRef__shared
+  :: WeakRef -> IO SharedObject
+casADi__WeakRef__shared x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__WeakRef__shared x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Get a shared
+>(owning) reference.
+-}
+weakRef_shared :: WeakRefClass a => a -> IO SharedObject
+weakRef_shared x = casADi__WeakRef__shared (castWeakRef x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__WeakRef__alive" c_CasADi__WeakRef__alive
+  :: Ptr WeakRef' -> IO CInt
+casADi__WeakRef__alive
+  :: WeakRef -> IO Bool
+casADi__WeakRef__alive x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__WeakRef__alive x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>[INTERNAL]  Check if alive.
+-}
+weakRef_alive :: WeakRefClass a => a -> IO Bool
+weakRef_alive x = casADi__WeakRef__alive (castWeakRef x)
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__WeakRef__WeakRef" c_CasADi__WeakRef__WeakRef
+  :: CInt -> IO (Ptr WeakRef')
+casADi__WeakRef__WeakRef
+  :: Int -> IO WeakRef
+casADi__WeakRef__WeakRef x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__WeakRef__WeakRef x0' >>= wrapReturn
+
+-- classy wrapper
+{-|
+>>  CasADi::WeakRef::WeakRef(int dummy=0)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Default constructor.
+>
+>>  CasADi::WeakRef::WeakRef(SharedObject shared)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct from a shared object (also implicit type conversion)
+-}
+weakRef :: Int -> IO WeakRef
+weakRef = casADi__WeakRef__WeakRef
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__WeakRef__WeakRef_TIC" c_CasADi__WeakRef__WeakRef_TIC
+  :: IO (Ptr WeakRef')
+casADi__WeakRef__WeakRef'
+  :: IO WeakRef
+casADi__WeakRef__WeakRef'  =
+  c_CasADi__WeakRef__WeakRef_TIC  >>= wrapReturn
+
+-- classy wrapper
+weakRef' :: IO WeakRef
+weakRef' = casADi__WeakRef__WeakRef'
+
+
+-- direct wrapper
+foreign import ccall unsafe "CasADi__WeakRef__WeakRef_TIC_TIC" c_CasADi__WeakRef__WeakRef_TIC_TIC
+  :: Ptr SharedObject' -> IO (Ptr WeakRef')
+casADi__WeakRef__WeakRef''
+  :: SharedObject -> IO WeakRef
+casADi__WeakRef__WeakRef'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__WeakRef__WeakRef_TIC_TIC x0' >>= wrapReturn
+
+-- classy wrapper
+weakRef'' :: SharedObject -> IO WeakRef
+weakRef'' = casADi__WeakRef__WeakRef''
+
diff --git a/Casadi/Wrappers/Data.hs b/Casadi/Wrappers/Data.hs
--- a/Casadi/Wrappers/Data.hs
+++ b/Casadi/Wrappers/Data.hs
@@ -17,4993 +17,17242 @@
 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 SharedObjectClass SXFunction where
-  castSharedObject (SXFunction x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass SXFunction where
-  castPrintableObject (SXFunction x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass SXFunction where
-  castIOInterfaceFX (SXFunction x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass SXFunction where
-  castOptionsFunctionality (SXFunction x) = OptionsFunctionality (castForeignPtr x)
-
-instance FXClass SXFunction where
-  castFX (SXFunction x) = FX (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 MXFunction'
--- data decl
-{-|
->General function mapping from/to MX.
->
->Joel Andersson
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
->|              |              |              | calculate    | ternal       |
->|              |              |              | the          |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (forward:    |              |
->|              |              |              | only forward |              |
->|              |              |              | mode|reverse |              |
->|              |              |              | : only       |              |
->|              |              |              | adjoint mode |              |
->|              |              |              | |automatic:  |              |
->|              |              |              | a heuristic  |              |
->|              |              |              | decides      |              |
->|              |              |              | which is     |              |
->|              |              |              | more         |              |
->|              |              |              | appropriate) |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
->|              |              |              | indicate     | ternal       |
->|              |              |              | wether       |              |
->|              |              |              | statistics   |              |
->|              |              |              | must be      |              |
->|              |              |              | gathered     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->|              |              |              | exceptions   | ternal       |
->|              |              |              | when the     |              |
->|              |              |              | numerical    |              |
->|              |              |              | values of    |              |
->|              |              |              | the inputs   |              |
->|              |              |              | don't make   |              |
->|              |              |              | sense        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that returns | ternal       |
->|              |              |              | a Jacobian   |              |
->|              |              |              | function     |              |
->|              |              |              | given a set  |              |
->|              |              |              | of desired   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | blocks,      |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of J |              |
->|              |              |              | acobianGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
->|              | TOR          | )            | be activated | ternal       |
->|              |              |              | (inputs|outp |              |
->|              |              |              | uts)         |              |
->+--------------+--------------+--------------+--------------+--------------+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| j_dir        |              |              | adjoint      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| d_dir        |              |              | forward      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| ian          |              |              | Hessians     | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| bian         |              |              | Jacobians    | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->| heck         |              |              | exceptions   | ternal       |
->|              |              |              | when NaN or  |              |
->|              |              |              | Inf appears  |              |
->|              |              |              | during       |              |
->|              |              |              | evaluation   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
->|              |              |              | sparse       | ternal       |
->+--------------+--------------+--------------+--------------+--------------+
->| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that         | ternal       |
->|              |              |              | provides     |              |
->|              |              |              | sparsity for |              |
->|              |              |              | a given      |              |
->|              |              |              | input output |              |
->|              |              |              | block,       |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of S |              |
->|              |              |              | parsityGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
->| ans          |              |              | references   | ternal       |
->|              |              |              | to generated |              |
->|              |              |              | Jacobians in |              |
->|              |              |              | order to     |              |
->|              |              |              | avoid        |              |
->|              |              |              | generating   |              |
->|              |              |              | identical    |              |
->|              |              |              | Jacobians    |              |
->|              |              |              | multiple     |              |
->|              |              |              | times        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
->|              |              | )            | defined      | ternal       |
->|              |              |              | field that   |              |
->|              |              |              | can be used  |              |
->|              |              |              | to identify  |              |
->|              |              |              | the function |              |
->|              |              |              | or pass      |              |
->|              |              |              | additional   |              |
->|              |              |              | information  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
->|              |              |              | evaluation   | ternal       |
->|              |              |              | for          |              |
->|              |              |              | debugging    |              |
->+--------------+--------------+--------------+--------------+--------------+
->
->Diagrams
->
->C++ includes: mx_function.hpp 
--}
-newtype MXFunction = MXFunction (ForeignPtr MXFunction')
--- typeclass decl
-class MXFunctionClass a where
-  castMXFunction :: a -> MXFunction
-instance MXFunctionClass MXFunction where
-  castMXFunction = id
-
--- baseclass instances
-instance SharedObjectClass MXFunction where
-  castSharedObject (MXFunction x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass MXFunction where
-  castPrintableObject (MXFunction x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass MXFunction where
-  castIOInterfaceFX (MXFunction x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass MXFunction where
-  castOptionsFunctionality (MXFunction x) = OptionsFunctionality (castForeignPtr x)
-
-instance FXClass MXFunction where
-  castFX (MXFunction x) = FX (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 FX'
--- data decl
-{-|
->General function.
->
->A general function $f$ in casadi can be multi-input, multi-output.  Number
->of inputs: nin getNumInputs()  Number of outputs: nout getNumOutputs()
->
->We can view this function as a being composed of a (nin, nout) grid of
->single-input, single-output primitive functions.  Each such primitive
->function $f_{i,j} \\forall i \\in [0,nin-1], j \\in [0,nout-1]$ can
->map as $\\mathbf{R}^{n,m}\\to\\mathbf{R}^{p,q}$, in which n,m,p,q can
->take different values for every (i,j) pair.
->
->When passing input, you specify which partition i is active. You pass the
->numbers flattened, as a vector of size $(n*m)$.  When requesting output, you
->specify which partition j is active. You get the numbers flattened, as a
->vector of size $(p*q)$.
->
->To calculate jacobians, you need to have $(m=1,q=1)$.
->
->Write the jacobian as $J_{i,j} = \\nabla f_{i,j} = \\frac{\\partial
->f_{i,j}(\\vec{x})}{\\partial \\vec{x}}$.
->
->Using $\\vec{v} \\in \\mathbf{R}^n$ as a forward seed: setFwdSeed(v,i)
->Retrieving $\\vec{s}_f \\in \\mathbf{R}^p$ from: getFwdSens(sf,j)
->
->Using $\\vec{w} \\in \\mathbf{R}^p$ as a forward seed: setAdjSeed(w,j)
->Retrieving $\\vec{s}_a \\in \\mathbf{R}^n $ from: getAdjSens(sa,i)
->
->We have the following relationships for function mapping from a column
->vector to a column vector:
->
->$ \\vec{s}_f = \\nabla f_{i,j} . \\vec{v}$ $ \\vec{s}_a = (\\nabla
->f_{i,j})^T . \\vec{w}$
->
->Some quantities is these formulas must be transposed:  input row: transpose
->$ \\vec{v} $ and $\\vec{s}_a$  output row: transpose $ \\vec{w} $ and
->$\\vec{s}_f$
->
->NOTE: FX's are allowed to modify their input arguments when evaluating:
->implicitFunction, IDAS solver Futher releases may disallow this. for
->developers Each function consists of 4 files: public class header file:
->imported in python
->
->public class implementation
->
->internal class header file: should only be used by derived classes
->
->internal class implementation
->
->python and c++ should be 1-to-1  There should be no extra features in 1.
->All the functionality should exist in 1.  If it means that c++ will be more
->"pythonic", so be it.
->
->Joel Andersson
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
->|              |              |              | calculate    | ternal       |
->|              |              |              | the          |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (forward:    |              |
->|              |              |              | only forward |              |
->|              |              |              | mode|reverse |              |
->|              |              |              | : only       |              |
->|              |              |              | adjoint mode |              |
->|              |              |              | |automatic:  |              |
->|              |              |              | a heuristic  |              |
->|              |              |              | decides      |              |
->|              |              |              | which is     |              |
->|              |              |              | more         |              |
->|              |              |              | appropriate) |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
->|              |              |              | indicate     | ternal       |
->|              |              |              | wether       |              |
->|              |              |              | statistics   |              |
->|              |              |              | must be      |              |
->|              |              |              | gathered     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->|              |              |              | exceptions   | ternal       |
->|              |              |              | when the     |              |
->|              |              |              | numerical    |              |
->|              |              |              | values of    |              |
->|              |              |              | the inputs   |              |
->|              |              |              | don't make   |              |
->|              |              |              | sense        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that returns | ternal       |
->|              |              |              | a Jacobian   |              |
->|              |              |              | function     |              |
->|              |              |              | given a set  |              |
->|              |              |              | of desired   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | blocks,      |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of J |              |
->|              |              |              | acobianGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
->|              | TOR          | )            | be activated | ternal       |
->|              |              |              | (inputs|outp |              |
->|              |              |              | uts)         |              |
->+--------------+--------------+--------------+--------------+--------------+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| j_dir        |              |              | adjoint      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| d_dir        |              |              | forward      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| ian          |              |              | Hessians     | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| bian         |              |              | Jacobians    | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->| heck         |              |              | exceptions   | ternal       |
->|              |              |              | when NaN or  |              |
->|              |              |              | Inf appears  |              |
->|              |              |              | during       |              |
->|              |              |              | evaluation   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
->|              |              |              | sparse       | ternal       |
->+--------------+--------------+--------------+--------------+--------------+
->| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that         | ternal       |
->|              |              |              | provides     |              |
->|              |              |              | sparsity for |              |
->|              |              |              | a given      |              |
->|              |              |              | input output |              |
->|              |              |              | block,       |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of S |              |
->|              |              |              | parsityGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
->| ans          |              |              | references   | ternal       |
->|              |              |              | to generated |              |
->|              |              |              | Jacobians in |              |
->|              |              |              | order to     |              |
->|              |              |              | avoid        |              |
->|              |              |              | generating   |              |
->|              |              |              | identical    |              |
->|              |              |              | Jacobians    |              |
->|              |              |              | multiple     |              |
->|              |              |              | times        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
->|              |              | )            | defined      | ternal       |
->|              |              |              | field that   |              |
->|              |              |              | can be used  |              |
->|              |              |              | to identify  |              |
->|              |              |              | the function |              |
->|              |              |              | or pass      |              |
->|              |              |              | additional   |              |
->|              |              |              | information  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
->|              |              |              | evaluation   | ternal       |
->|              |              |              | for          |              |
->|              |              |              | debugging    |              |
->+--------------+--------------+--------------+--------------+--------------+
->
->>List of available monitors
->+---------+--------------------+
->|   Id    |      Used in       |
->+=========+====================+
->| inputs  | CasADi::FXInternal |
->+---------+--------------------+
->| outputs | CasADi::FXInternal |
->+---------+--------------------+
->
->Diagrams
->
->C++ includes: fx.hpp 
--}
-newtype FX = FX (ForeignPtr FX')
--- typeclass decl
-class FXClass a where
-  castFX :: a -> FX
-instance FXClass FX where
-  castFX = id
-
--- baseclass instances
-instance SharedObjectClass FX where
-  castSharedObject (FX x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass FX where
-  castPrintableObject (FX x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass FX where
-  castIOInterfaceFX (FX x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass FX where
-  castOptionsFunctionality (FX x) = OptionsFunctionality (castForeignPtr x)
-
-
--- helper instances
-instance Marshal FX (Ptr FX') where
-  marshal (FX x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (FX x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__FX" 
-  c_delete_CasADi__FX :: FunPtr (Ptr FX' -> IO ())
-instance WrapReturn (Ptr FX') FX where
-  wrapReturn = (fmap FX) . (newForeignPtr c_delete_CasADi__FX)
-
-
--- raw decl
-data SharedObject'
--- data decl
-{-|
->SharedObject implements a reference counting framework simular for effient
->and easily-maintained memory management.
->
->To use the class, both the SharedObject class (the public class), and the
->SharedObjectNode class (the internal class) must be inherited from. It can
->be done in two different files and together with memory management, this
->approach provides a clear destinction of which methods of the class are to
->be considered "public", i.e. methods for public use that can be considered
->to remain over time with small changes, and the internal memory.
->
->When interfacing a software, which typically includes including some header
->file, this is best done only in the file where the internal class is
->defined, to avoid polluting the global namespace and other side effects.
->
->The default constructor always means creating a null pointer to an internal
->class only. To allocate an internal class (this works only when the internal
->class isn't abstract), use the constructor with arguments.
->
->The copy constructor and the assignment operator perform shallow copies
->only, to make a deep copy you must use the clone method explictly. This will
->give a shared pointer instance.
->
->In an inheritance hierarchy, you can cast down automatically, e.g. (
->SXFunction is a child class of FX): SXFunction derived(...); FX base =
->derived;
->
->To cast up, use the shared_cast template function, which works analogously
->to dynamic_cast, static_cast, const_cast etc, e.g.: SXFunction derived(...);
->FX base = derived; SXFunction derived_from_base =
->shared_cast<SXFunction>(base);
->
->A failed shared_cast will result in a null pointer (cf. dynamic_cast)
->
->Joel Andersson
->
->C++ includes: shared_object.hpp 
--}
-newtype SharedObject = SharedObject (ForeignPtr SharedObject')
--- typeclass decl
-class SharedObjectClass a where
-  castSharedObject :: a -> SharedObject
-instance SharedObjectClass SharedObject where
-  castSharedObject = id
-
--- baseclass instances
-instance PrintableObjectClass SharedObject where
-  castPrintableObject (SharedObject x) = PrintableObject (castForeignPtr x)
-
-
--- 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 PrintableObject'
--- data decl
-{-|
->Base class for objects that have a natural string representation.
->
->Joel Andersson
->
->C++ includes: printable_object.hpp 
--}
-newtype PrintableObject = PrintableObject (ForeignPtr PrintableObject')
--- typeclass decl
-class PrintableObjectClass a where
-  castPrintableObject :: a -> PrintableObject
-instance PrintableObjectClass PrintableObject where
-  castPrintableObject = id
-
--- baseclass instances
-
--- helper instances
-instance Marshal PrintableObject (Ptr PrintableObject') where
-  marshal (PrintableObject x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (PrintableObject x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__PrintableObject" 
-  c_delete_CasADi__PrintableObject :: FunPtr (Ptr PrintableObject' -> IO ())
-instance WrapReturn (Ptr PrintableObject') PrintableObject where
-  wrapReturn = (fmap PrintableObject) . (newForeignPtr c_delete_CasADi__PrintableObject)
-
-
--- raw decl
-data CRSSparsity'
--- data decl
-{-|
->General sparsity class.
->
->The storage format is a compressed row storage (CRS) format.
->
->In this format, the structural non-zero elements are stored in row- major
->order, starting from the upper left corner of the matrix and ending in the
->lower right corner.
->
->In addition to the dimension ( size1(), size2()), (i.e. the number of rows
->and the number of columns respectively), there are also two vectors of
->integers:
->
->"rowind" [length size1()+1], which contains the index to the first non-
->zero element on or after the corresponding row. All the non-zero elements of
->a particular i are thus the elements with index el that fulfils: rowind[i]
-><= el < rowind[i+1].
->
->"col" [same length as the number of non-zero elements, size()] The columns
->for each of the structural non-zeros.
->
->Note that with this format, it is cheap to loop over all the non-zero
->elements of a particular row, constant time per elment, but expensive to
->jump to access a location (i,j).
->
->If the matrix is dense, i.e. length(col) == size1()*size2(), the format
->reduces to standard dense row major format, which allows access to an
->arbitrary element in constant time.
->
->Since the object is reference counted (it inherits from SharedObject),
->several matrices are allowed to share the same sparsity pattern.
->
->The implementations of some methods of this class has been taken from the
->CSparse package and modified to use STL and CasADi data structures.
->
->See:   Matrix
->
->Joel Andersson
->
->C++ includes: crs_sparsity.hpp 
--}
-newtype CRSSparsity = CRSSparsity (ForeignPtr CRSSparsity')
--- typeclass decl
-class CRSSparsityClass a where
-  castCRSSparsity :: a -> CRSSparsity
-instance CRSSparsityClass CRSSparsity where
-  castCRSSparsity = id
-
--- baseclass instances
-instance SharedObjectClass CRSSparsity where
-  castSharedObject (CRSSparsity x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass CRSSparsity where
-  castPrintableObject (CRSSparsity x) = PrintableObject (castForeignPtr x)
-
-
--- helper instances
-instance Marshal CRSSparsity (Ptr CRSSparsity') where
-  marshal (CRSSparsity x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (CRSSparsity x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__CRSSparsity" 
-  c_delete_CasADi__CRSSparsity :: FunPtr (Ptr CRSSparsity' -> IO ())
-instance WrapReturn (Ptr CRSSparsity') CRSSparsity where
-  wrapReturn = (fmap CRSSparsity) . (newForeignPtr c_delete_CasADi__CRSSparsity)
-
-
--- raw decl
-data GenericType'
--- data decl
-{-|
->Generic data type.
->
->Joel Andersson
->
->C++ includes: generic_type.hpp 
--}
-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)
-
-instance PrintableObjectClass GenericType where
-  castPrintableObject (GenericType x) = PrintableObject (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 IOInterfaceFX'
--- data decl
-{-|
->Interface for accessing input and output data structures.
->
->Joel Andersson
->
->C++ includes: io_interface.hpp 
--}
-newtype IOInterfaceFX = IOInterfaceFX (ForeignPtr IOInterfaceFX')
--- typeclass decl
-class IOInterfaceFXClass a where
-  castIOInterfaceFX :: a -> IOInterfaceFX
-instance IOInterfaceFXClass IOInterfaceFX where
-  castIOInterfaceFX = id
-
--- baseclass instances
-
--- helper instances
-instance Marshal IOInterfaceFX (Ptr IOInterfaceFX') where
-  marshal (IOInterfaceFX x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (IOInterfaceFX x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__IOInterface_CasADi__FX_" 
-  c_delete_CasADi__IOInterface_CasADi__FX_ :: FunPtr (Ptr IOInterfaceFX' -> IO ())
-instance WrapReturn (Ptr IOInterfaceFX') IOInterfaceFX where
-  wrapReturn = (fmap IOInterfaceFX) . (newForeignPtr c_delete_CasADi__IOInterface_CasADi__FX_)
-
-
--- raw decl
-data OptionsFunctionality'
--- data decl
-{-|
->Provides options setting/getting functionality Gives a derived class the
->ability to set and retrieve options in a convenient way. It also contains
->error checking, making sure that the option exists and that the value type
->is correct.
->
->A derived class should add option names, types and default values to the
->corresponding vectors.
->
->Joel Andersson
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->
->Diagrams
->
->C++ includes: options_functionality.hpp 
--}
-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)
-
-instance PrintableObjectClass OptionsFunctionality where
-  castPrintableObject (OptionsFunctionality x) = PrintableObject (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 IpoptSolver'
--- data decl
-{-|
->interface to IPOPT NLP solver
->
->Solves the following parametric nonlinear program (NLP):min          F(x,p)
->x  subject to             LBX <=   x    <= UBX LBG <= G(x,p) <= UBG
->p  == P nx: number of decision variables     ng: number of constraints
->np: number of parameters
->
->When in warmstart mode, output NLP_SOLVER_LAM_X may be used as input
->
->NOTE: Even when max_iter == 0, it is not guaranteed that
->input(NLP_SOLVER_X0) == output(NLP_SOLVER_X). Indeed if bounds on X or
->constraints are unmet, they will differ.
->
->For a good tutorial on IPOPT,
->seehttp://drops.dagstuhl.de/volltexte/2009/2089/pdf/09061.WaechterAndreas.Paper.2089.pdf
->
->A good resource about the algorithms in IPOPT is: Wachter and L. T. Biegler,
->On the Implementation of an Interior-Point Filter Line-Search Algorithm for
->Large-Scale Nonlinear Programming, Mathematical Programming 106(1), pp.
->25-57, 2006 (As Research Report RC 23149, IBM T. J. Watson Research Center,
->Yorktown, USA
->
->Caveats: with default options, multipliers for the decision variables are
->wrong for equality constraints. Change the 'fixed_variable_treatment' to
->'make_constraint' or 'relax_bounds' to obtain correct results.
->
->>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
->+------------------------+------------------------+------------------------+
->|       Full name        |         Short          |      Description       |
->+========================+========================+========================+
->| NLP_SOLVER_X0          | x0                     | Decision variables,    |
->|                        |                        | initial guess (nx x 1) |
->|                        |                        | .                      |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_P           | p                      | Value of fixed         |
->|                        |                        | parameters (np x 1) .  |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
->|                        |                        | lower bound (nx x 1),  |
->|                        |                        | default -inf .         |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
->|                        |                        | upper bound (nx x 1),  |
->|                        |                        | default +inf .         |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
->|                        |                        | bound (ng x 1),        |
->|                        |                        | default -inf .         |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
->|                        |                        | bound (ng x 1),        |
->|                        |                        | default +inf .         |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
->|                        |                        | for bounds on X,       |
->|                        |                        | initial guess (nx x 1) |
->|                        |                        | .                      |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
->|                        |                        | for bounds on G,       |
->|                        |                        | initial guess (ng x 1) |
->|                        |                        | .                      |
->+------------------------+------------------------+------------------------+
->
->>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
->+------------------------+------------------------+------------------------+
->|       Full name        |         Short          |      Description       |
->+========================+========================+========================+
->| NLP_SOLVER_X           | x                      | Decision variables at  |
->|                        |                        | the optimal solution   |
->|                        |                        | (nx x 1) .             |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_F           | f                      | Cost function value at |
->|                        |                        | the optimal solution   |
->|                        |                        | (1 x 1) .              |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_G           | g                      | Constraints function   |
->|                        |                        | at the optimal         |
->|                        |                        | solution (ng x 1) .    |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
->|                        |                        | for bounds on X at the |
->|                        |                        | solution (nx x 1) .    |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
->|                        |                        | for bounds on G at the |
->|                        |                        | solution (ng x 1) .    |
->+------------------------+------------------------+------------------------+
->| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
->|                        |                        | for bounds on P at the |
->|                        |                        | solution (np x 1) .    |
->+------------------------+------------------------+------------------------+
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| accept_after | OT_INTEGER   | -1           | Accept a     | CasADi::Ipop |
->| _max_steps   |              |              | trial point  | tInternal    |
->|              |              |              | after        |              |
->|              |              |              | maximal this |              |
->|              |              |              | number of    |              |
->|              |              |              | steps. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| accept_every | OT_STRING    | no           | Always       | CasADi::Ipop |
->| _trial_step  |              |              | accept the   | tInternal    |
->|              |              |              | first trial  |              |
->|              |              |              | step. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| acceptable_c | OT_REAL      | 0.010        | "Acceptance" | CasADi::Ipop |
->| ompl_inf_tol |              |              | threshold    | tInternal    |
->|              |              |              | for the comp |              |
->|              |              |              | lementarity  |              |
->|              |              |              | conditions.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| acceptable_c | OT_REAL      | 0.010        | "Acceptance" | CasADi::Ipop |
->| onstr_viol_t |              |              | threshold    | tInternal    |
->| ol           |              |              | for the      |              |
->|              |              |              | constraint   |              |
->|              |              |              | violation.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| acceptable_d | OT_REAL      | 1.000e+10    | "Acceptance" | CasADi::Ipop |
->| ual_inf_tol  |              |              | threshold    | tInternal    |
->|              |              |              | for the dual |              |
->|              |              |              | infeasibilit |              |
->|              |              |              | y. (see      |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| acceptable_i | OT_INTEGER   | 15           | Number of    | CasADi::Ipop |
->| ter          |              |              | "acceptable" | tInternal    |
->|              |              |              | iterates     |              |
->|              |              |              | before       |              |
->|              |              |              | triggering   |              |
->|              |              |              | termination. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| acceptable_o | OT_REAL      | 1.000e+20    | "Acceptance" | CasADi::Ipop |
->| bj_change_to |              |              | stopping     | tInternal    |
->| l            |              |              | criterion    |              |
->|              |              |              | based on     |              |
->|              |              |              | objective    |              |
->|              |              |              | function     |              |
->|              |              |              | change. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| acceptable_t | OT_REAL      | 0.000        | "Acceptable" | CasADi::Ipop |
->| ol           |              |              | convergence  | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | (relative).  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
->|              |              |              | calculate    | ternal       |
->|              |              |              | the          |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (forward:    |              |
->|              |              |              | only forward |              |
->|              |              |              | mode|reverse |              |
->|              |              |              | : only       |              |
->|              |              |              | adjoint mode |              |
->|              |              |              | |automatic:  |              |
->|              |              |              | a heuristic  |              |
->|              |              |              | decides      |              |
->|              |              |              | which is     |              |
->|              |              |              | more         |              |
->|              |              |              | appropriate) |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_STRING    | obj-constr-  | Globalizatio | CasADi::Ipop |
->| globalizatio |              | filter       | n strategy   | tInternal    |
->| n            |              |              | for the      |              |
->|              |              |              | adaptive mu  |              |
->|              |              |              | selection    |              |
->|              |              |              | mode. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_STRING    | 2-norm-      | Norm used    | CasADi::Ipop |
->| kkt_norm_typ |              | squared      | for the KKT  | tInternal    |
->| e            |              |              | error in the |              |
->|              |              |              | adaptive mu  |              |
->|              |              |              | globalizatio |              |
->|              |              |              | n            |              |
->|              |              |              | strategies.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_REAL      | 1.000        | Sufficient   | CasADi::Ipop |
->| kkterror_red |              |              | decrease     | tInternal    |
->| _fact        |              |              | factor for   |              |
->|              |              |              | "kkt-error"  |              |
->|              |              |              | globalizatio |              |
->|              |              |              | n strategy.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_INTEGER   | 4            | Maximum      | CasADi::Ipop |
->| kkterror_red |              |              | number of    | tInternal    |
->| _iters       |              |              | iterations   |              |
->|              |              |              | requiring    |              |
->|              |              |              | sufficient   |              |
->|              |              |              | progress.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_REAL      | 0.800        | Determines   | CasADi::Ipop |
->| monotone_ini |              |              | the initial  | tInternal    |
->| t_factor     |              |              | value of the |              |
->|              |              |              | barrier      |              |
->|              |              |              | parameter    |              |
->|              |              |              | when         |              |
->|              |              |              | switching to |              |
->|              |              |              | the monotone |              |
->|              |              |              | mode. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_STRING    | no           | Indicates if | CasADi::Ipop |
->| restore_prev |              |              | the previous | tInternal    |
->| ious_iterate |              |              | iterate      |              |
->|              |              |              | should be    |              |
->|              |              |              | restored if  |              |
->|              |              |              | the monotone |              |
->|              |              |              | mode is      |              |
->|              |              |              | entered.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| adaptive_mu_ | OT_REAL      | 0            | (see IPOPT d | CasADi::Ipop |
->| safeguard_fa |              |              | ocumentation | tInternal    |
->| ctor         |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| alpha_for_y  | OT_STRING    | primal       | Method to    | CasADi::Ipop |
->|              |              |              | determine    | tInternal    |
->|              |              |              | the step     |              |
->|              |              |              | size for     |              |
->|              |              |              | constraint   |              |
->|              |              |              | multipliers. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| alpha_for_y_ | OT_REAL      | 10           | Tolerance    | CasADi::Ipop |
->| tol          |              |              | for          | tInternal    |
->|              |              |              | switching to |              |
->|              |              |              | full         |              |
->|              |              |              | equality     |              |
->|              |              |              | multiplier   |              |
->|              |              |              | steps. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| alpha_min_fr | OT_REAL      | 0.050        | Safety       | CasADi::Ipop |
->| ac           |              |              | factor for   | tInternal    |
->|              |              |              | the minimal  |              |
->|              |              |              | step size    |              |
->|              |              |              | (before      |              |
->|              |              |              | switching to |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase). (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| alpha_red_fa | OT_REAL      | 0.500        | Fractional   | CasADi::Ipop |
->| ctor         |              |              | reduction of | tInternal    |
->|              |              |              | the trial    |              |
->|              |              |              | step size in |              |
->|              |              |              | the          |              |
->|              |              |              | backtracking |              |
->|              |              |              | line search. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| barrier_tol_ | OT_REAL      | 10           | Factor for   | CasADi::Ipop |
->| factor       |              |              | mu in        | tInternal    |
->|              |              |              | barrier stop |              |
->|              |              |              | test. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| bound_frac   | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
->|              |              |              | minimum      | tInternal    |
->|              |              |              | relative     |              |
->|              |              |              | distance     |              |
->|              |              |              | from the     |              |
->|              |              |              | initial      |              |
->|              |              |              | point to     |              |
->|              |              |              | bound. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| bound_mult_i | OT_STRING    | constant     | Initializati | CasADi::Ipop |
->| nit_method   |              |              | on method    | tInternal    |
->|              |              |              | for bound    |              |
->|              |              |              | multipliers  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| bound_mult_i | OT_REAL      | 1            | Initial      | CasADi::Ipop |
->| nit_val      |              |              | value for    | tInternal    |
->|              |              |              | the bound    |              |
->|              |              |              | multipliers. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| bound_mult_r | OT_REAL      | 1000         | Threshold    | CasADi::Ipop |
->| eset_thresho |              |              | for          | tInternal    |
->| ld           |              |              | resetting    |              |
->|              |              |              | bound        |              |
->|              |              |              | multipliers  |              |
->|              |              |              | after the    |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| bound_push   | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
->|              |              |              | minimum      | tInternal    |
->|              |              |              | absolute     |              |
->|              |              |              | distance     |              |
->|              |              |              | from the     |              |
->|              |              |              | initial      |              |
->|              |              |              | point to     |              |
->|              |              |              | bound. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| bound_relax_ | OT_REAL      | 0.000        | Factor for   | CasADi::Ipop |
->| factor       |              |              | initial      | tInternal    |
->|              |              |              | relaxation   |              |
->|              |              |              | of the       |              |
->|              |              |              | bounds. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| check_deriva | OT_STRING    | no           | Indicates    | CasADi::Ipop |
->| tives_for_na |              |              | whether it   | tInternal    |
->| ninf         |              |              | is desired   |              |
->|              |              |              | to check for |              |
->|              |              |              | Nan/Inf in   |              |
->|              |              |              | derivative   |              |
->|              |              |              | matrices     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| chi_cup      | OT_REAL      | 1.500        | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| chi_hat      | OT_REAL      | 2            | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| chi_tilde    | OT_REAL      | 5            | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| compl_inf_to | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
->| l            |              |              | threshold    | tInternal    |
->|              |              |              | for the comp |              |
->|              |              |              | lementarity  |              |
->|              |              |              | conditions.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| con_integer_ | OT_DICTIONAR | None         | Integer      | CasADi::Ipop |
->| md           | Y            |              | metadata (a  | tInternal    |
->|              |              |              | dictionary   |              |
->|              |              |              | with lists   |              |
->|              |              |              | of integers) |              |
->|              |              |              | about        |              |
->|              |              |              | constraints  |              |
->|              |              |              | to be passed |              |
->|              |              |              | to IPOPT     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| con_numeric_ | OT_DICTIONAR | None         | Numeric      | CasADi::Ipop |
->| md           | Y            |              | metadata (a  | tInternal    |
->|              |              |              | dictionary   |              |
->|              |              |              | with lists   |              |
->|              |              |              | of reals)    |              |
->|              |              |              | about        |              |
->|              |              |              | constraints  |              |
->|              |              |              | to be passed |              |
->|              |              |              | to IPOPT     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| con_string_m | OT_DICTIONAR | None         | String       | CasADi::Ipop |
->| d            | Y            |              | metadata (a  | tInternal    |
->|              |              |              | dictionary   |              |
->|              |              |              | with lists   |              |
->|              |              |              | of strings)  |              |
->|              |              |              | about        |              |
->|              |              |              | constraints  |              |
->|              |              |              | to be passed |              |
->|              |              |              | to IPOPT     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| constr_mult_ | OT_REAL      | 1000         | Maximum      | CasADi::Ipop |
->| init_max     |              |              | allowed      | tInternal    |
->|              |              |              | least-square |              |
->|              |              |              | guess of     |              |
->|              |              |              | constraint   |              |
->|              |              |              | multipliers. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| constr_mult_ | OT_REAL      | 0            | Threshold    | CasADi::Ipop |
->| reset_thresh |              |              | for          | tInternal    |
->| old          |              |              | resetting    |              |
->|              |              |              | equality and |              |
->|              |              |              | inequality   |              |
->|              |              |              | multipliers  |              |
->|              |              |              | after        |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| constr_viol_ | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
->| tol          |              |              | threshold    | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | constraint   |              |
->|              |              |              | violation.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| constraint_v | OT_STRING    | 1-norm       | Norm to be   | CasADi::Ipop |
->| iolation_nor |              |              | used for the | tInternal    |
->| m_type       |              |              | constraint   |              |
->|              |              |              | violation in |              |
->|              |              |              | the line     |              |
->|              |              |              | search. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| corrector_co | OT_REAL      | 1            | Complementar | CasADi::Ipop |
->| mpl_avrg_red |              |              | ity          | tInternal    |
->| _fact        |              |              | tolerance    |              |
->|              |              |              | factor for   |              |
->|              |              |              | accepting    |              |
->|              |              |              | corrector    |              |
->|              |              |              | step (unsupp |              |
->|              |              |              | orted!).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| corrector_ty | OT_STRING    | none         | The type of  | CasADi::Ipop |
->| pe           |              |              | corrector    | tInternal    |
->|              |              |              | steps that   |              |
->|              |              |              | should be    |              |
->|              |              |              | taken (unsup |              |
->|              |              |              | ported!).    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| delta        | OT_REAL      | 1            | Multiplier   | CasADi::Ipop |
->|              |              |              | for          | tInternal    |
->|              |              |              | constraint   |              |
->|              |              |              | violation in |              |
->|              |              |              | the          |              |
->|              |              |              | switching    |              |
->|              |              |              | rule. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| delta_y_max  | OT_REAL      | 1.000e+12    | a parameter  | CasADi::Ipop |
->|              |              |              | used to      | tInternal    |
->|              |              |              | check if the |              |
->|              |              |              | fast         |              |
->|              |              |              | direction    |              |
->|              |              |              | can be used  |              |
->|              |              |              | asthe line   |              |
->|              |              |              | search       |              |
->|              |              |              | direction    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| dependency_d | OT_STRING    | no           | Indicates if | CasADi::Ipop |
->| etection_wit |              |              | the right    | tInternal    |
->| h_rhs        |              |              | hand sides   |              |
->|              |              |              | of the       |              |
->|              |              |              | constraints  |              |
->|              |              |              | should be    |              |
->|              |              |              | considered   |              |
->|              |              |              | during       |              |
->|              |              |              | dependency   |              |
->|              |              |              | detection    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| dependency_d | OT_STRING    | none         | Indicates    | CasADi::Ipop |
->| etector      |              |              | which linear | tInternal    |
->|              |              |              | solver       |              |
->|              |              |              | should be    |              |
->|              |              |              | used to      |              |
->|              |              |              | detect       |              |
->|              |              |              | linearly     |              |
->|              |              |              | dependent    |              |
->|              |              |              | equality     |              |
->|              |              |              | constraints. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| derivative_t | OT_STRING    | none         | Enable       | CasADi::Ipop |
->| est          |              |              | derivative   | tInternal    |
->|              |              |              | checker (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| derivative_t | OT_INTEGER   | -2           | Index of     | CasADi::Ipop |
->| est_first_in |              |              | first        | tInternal    |
->| dex          |              |              | quantity to  |              |
->|              |              |              | be checked   |              |
->|              |              |              | by           |              |
->|              |              |              | derivative   |              |
->|              |              |              | checker (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| derivative_t | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
->| est_perturba |              |              | finite       | tInternal    |
->| tion         |              |              | difference   |              |
->|              |              |              | perturbation |              |
->|              |              |              | in           |              |
->|              |              |              | derivative   |              |
->|              |              |              | test. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| derivative_t | OT_STRING    | no           | Indicates    | CasADi::Ipop |
->| est_print_al |              |              | whether      | tInternal    |
->| l            |              |              | information  |              |
->|              |              |              | for all      |              |
->|              |              |              | estimated    |              |
->|              |              |              | derivatives  |              |
->|              |              |              | should be    |              |
->|              |              |              | printed.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| derivative_t | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
->| est_tol      |              |              | for          | tInternal    |
->|              |              |              | indicating   |              |
->|              |              |              | wrong        |              |
->|              |              |              | derivative.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| diverging_it | OT_REAL      | 1.000e+20    | Threshold    | CasADi::Ipop |
->| erates_tol   |              |              | for maximal  | tInternal    |
->|              |              |              | value of     |              |
->|              |              |              | primal       |              |
->|              |              |              | iterates.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| dual_inf_tol | OT_REAL      | 1            | Desired      | CasADi::Ipop |
->|              |              |              | threshold    | tInternal    |
->|              |              |              | for the dual |              |
->|              |              |              | infeasibilit |              |
->|              |              |              | y. (see      |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| epsilon_c    | OT_REAL      | 0.010        | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| eta_min      | OT_REAL      | 10           | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| eta_penalty  | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
->|              |              |              | factor in    | tInternal    |
->|              |              |              | the Armijo   |              |
->|              |              |              | condition    |              |
->|              |              |              | for the      |              |
->|              |              |              | penalty      |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| eta_phi      | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
->|              |              |              | factor in    | tInternal    |
->|              |              |              | the Armijo   |              |
->|              |              |              | condition.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| evaluate_ori | OT_STRING    | yes          | Determines   | CasADi::Ipop |
->| g_obj_at_res |              |              | if the       | tInternal    |
->| to_trial     |              |              | original     |              |
->|              |              |              | objective    |              |
->|              |              |              | function     |              |
->|              |              |              | should be    |              |
->|              |              |              | evaluated at |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase trial  |              |
->|              |              |              | points. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
->|              |              |              | NLP function | olverInterna |
->|              |              |              | in terms of  | l            |
->|              |              |              | scalar       |              |
->|              |              |              | operations,  |              |
->|              |              |              | i.e. MX-> SX |              |
->+--------------+--------------+--------------+--------------+--------------+
->| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
->|              |              | )            | objective    | olverInterna |
->|              |              |              | function in  | l            |
->|              |              |              | terms of     |              |
->|              |              |              | scalar       |              |
->|              |              |              | operations,  |              |
->|              |              |              | i.e. MX-> SX |              |
->|              |              |              | .            |              |
->|              |              |              | Deprecated,  |              |
->|              |              |              | use "expand" |              |
->|              |              |              | instead.     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
->|              |              | )            | constraint   | olverInterna |
->|              |              |              | function in  | l            |
->|              |              |              | terms of     |              |
->|              |              |              | scalar       |              |
->|              |              |              | operations,  |              |
->|              |              |              | i.e. MX-> SX |              |
->|              |              |              | .            |              |
->|              |              |              | Deprecated,  |              |
->|              |              |              | use "expand" |              |
->|              |              |              | instead.     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| expect_infea | OT_STRING    | no           | Enable       | CasADi::Ipop |
->| sible_proble |              |              | heuristics   | tInternal    |
->| m            |              |              | to quickly   |              |
->|              |              |              | detect an    |              |
->|              |              |              | infeasible   |              |
->|              |              |              | problem.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| expect_infea | OT_REAL      | 0.001        | Threshold    | CasADi::Ipop |
->| sible_proble |              |              | for          | tInternal    |
->| m_ctol       |              |              | disabling "e |              |
->|              |              |              | xpect_infeas |              |
->|              |              |              | ible_problem |              |
->|              |              |              | " option.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| expect_infea | OT_REAL      | 100000000    | Multiplier   | CasADi::Ipop |
->| sible_proble |              |              | threshold    | tInternal    |
->| m_ytol       |              |              | for          |              |
->|              |              |              | activating " |              |
->|              |              |              | expect_infea |              |
->|              |              |              | sible_proble |              |
->|              |              |              | m" option.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| fast_des_fac | OT_REAL      | 0.100        | a parameter  | CasADi::Ipop |
->| t            |              |              | used to      | tInternal    |
->|              |              |              | check if the |              |
->|              |              |              | fast         |              |
->|              |              |              | direction    |              |
->|              |              |              | can be used  |              |
->|              |              |              | asthe line   |              |
->|              |              |              | search       |              |
->|              |              |              | direction    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| fast_step_co | OT_STRING    | no           | Indicates if | CasADi::Ipop |
->| mputation    |              |              | the linear   | tInternal    |
->|              |              |              | system       |              |
->|              |              |              | should be    |              |
->|              |              |              | solved       |              |
->|              |              |              | quickly.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| file_print_l | OT_INTEGER   | 5            | Verbosity    | CasADi::Ipop |
->| evel         |              |              | level for    | tInternal    |
->|              |              |              | output file. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| filter_margi | OT_REAL      | 0.000        | Factor       | CasADi::Ipop |
->| n_fact       |              |              | determining  | tInternal    |
->|              |              |              | width of     |              |
->|              |              |              | margin for   |              |
->|              |              |              | obj-constr-  |              |
->|              |              |              | filter       |              |
->|              |              |              | adaptive glo |              |
->|              |              |              | balization   |              |
->|              |              |              | strategy.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| filter_max_m | OT_REAL      | 1            | Maximum      | CasADi::Ipop |
->| argin        |              |              | width of     | tInternal    |
->|              |              |              | margin in    |              |
->|              |              |              | obj-constr-  |              |
->|              |              |              | filter       |              |
->|              |              |              | adaptive glo |              |
->|              |              |              | balization   |              |
->|              |              |              | strategy.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| filter_reset | OT_INTEGER   | 5            | Number of    | CasADi::Ipop |
->| _trigger     |              |              | iterations   | tInternal    |
->|              |              |              | that trigger |              |
->|              |              |              | the filter   |              |
->|              |              |              | reset. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| findiff_pert | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
->| urbation     |              |              | finite       | tInternal    |
->|              |              |              | difference   |              |
->|              |              |              | perturbation |              |
->|              |              |              | for          |              |
->|              |              |              | derivative a |              |
->|              |              |              | pproximation |              |
->|              |              |              | . (see IPOPT |              |
->|              |              |              | documentatio |              |
->|              |              |              | n)           |              |
->+--------------+--------------+--------------+--------------+--------------+
->| first_hessia | OT_REAL      | 0.000        | Size of      | CasADi::Ipop |
->| n_perturbati |              |              | first x-s    | tInternal    |
->| on           |              |              | perturbation |              |
->|              |              |              | tried. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| fixed_mu_ora | OT_STRING    | average_comp | Oracle for   | CasADi::Ipop |
->| cle          |              | l            | the barrier  | tInternal    |
->|              |              |              | parameter    |              |
->|              |              |              | when         |              |
->|              |              |              | switching to |              |
->|              |              |              | fixed mode.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| fixed_variab | OT_STRING    | make_paramet | Determines   | CasADi::Ipop |
->| le_treatment |              | er           | how fixed    | tInternal    |
->|              |              |              | variables    |              |
->|              |              |              | should be    |              |
->|              |              |              | handled.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gamma_hat    | OT_REAL      | 0.040        | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gamma_phi    | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
->|              |              |              | factor in    | tInternal    |
->|              |              |              | the filter   |              |
->|              |              |              | margin for   |              |
->|              |              |              | the barrier  |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gamma_theta  | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
->|              |              |              | factor in    | tInternal    |
->|              |              |              | the filter   |              |
->|              |              |              | margin for   |              |
->|              |              |              | the          |              |
->|              |              |              | constraint   |              |
->|              |              |              | violation.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gamma_tilde  | OT_REAL      | 4            | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
->|              |              |              | indicate     | ternal       |
->|              |              |              | wether       |              |
->|              |              |              | statistics   |              |
->|              |              |              | must be      |              |
->|              |              |              | gathered     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
->|              |              | )            | option. Use  | olverInterna |
->|              |              |              | Gauss Newton | l            |
->|              |              |              | Hessian appr |              |
->|              |              |              | oximation    |              |
->+--------------+--------------+--------------+--------------+--------------+
->| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
->| dient        |              | )            | option.      | olverInterna |
->|              |              |              | Generate a   | l            |
->|              |              |              | function for |              |
->|              |              |              | calculating  |              |
->|              |              |              | the gradient |              |
->|              |              |              | of the       |              |
->|              |              |              | objective.   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
->| sian         |              | )            | option.      | olverInterna |
->|              |              |              | Generate an  | l            |
->|              |              |              | exact        |              |
->|              |              |              | Hessian of   |              |
->|              |              |              | the          |              |
->|              |              |              | Lagrangian   |              |
->|              |              |              | if not       |              |
->|              |              |              | supplied.    |              |
->+--------------+--------------+--------------+--------------+--------------+
->| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
->| obian        |              | )            | option.      | olverInterna |
->|              |              |              | Generate an  | l            |
->|              |              |              | exact        |              |
->|              |              |              | Jacobian of  |              |
->|              |              |              | the          |              |
->|              |              |              | constraints  |              |
->|              |              |              | if not       |              |
->|              |              |              | supplied.    |              |
->+--------------+--------------+--------------+--------------+--------------+
->| grad_f       | OT_FX        | GenericType( | Function for | CasADi::NLPS |
->|              |              | )            | calculating  | olverInterna |
->|              |              |              | the gradient | l            |
->|              |              |              | of the       |              |
->|              |              |              | objective (a |              |
->|              |              |              | utogenerated |              |
->|              |              |              | by default)  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| grad_lag     | OT_FX        | GenericType( | Function for | CasADi::NLPS |
->|              |              | )            | calculating  | olverInterna |
->|              |              |              | the gradient | l            |
->|              |              |              | of the       |              |
->|              |              |              | Lagrangian ( |              |
->|              |              |              | autogenerate |              |
->|              |              |              | d by         |              |
->|              |              |              | default)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| hess_lag     | OT_FX        | GenericType( | Function for | CasADi::NLPS |
->|              |              | )            | calculating  | olverInterna |
->|              |              |              | the Hessian  | l            |
->|              |              |              | of the       |              |
->|              |              |              | Lagrangian ( |              |
->|              |              |              | autogenerate |              |
->|              |              |              | d by         |              |
->|              |              |              | default)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| hessian_appr | OT_STRING    | exact        | Indicates    | CasADi::Ipop |
->| oximation    |              |              | what Hessian | tInternal    |
->|              |              |              | information  |              |
->|              |              |              | is to be     |              |
->|              |              |              | used. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| hessian_appr | OT_STRING    | nonlinear-   | Indicates in | CasADi::Ipop |
->| oximation_sp |              | variables    | which        | tInternal    |
->| ace          |              |              | subspace the |              |
->|              |              |              | Hessian      |              |
->|              |              |              | information  |              |
->|              |              |              | is to be app |              |
->|              |              |              | roximated.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| hessian_cons | OT_STRING    | no           | Indicates    | CasADi::Ipop |
->| tant         |              |              | whether the  | tInternal    |
->|              |              |              | problem is a |              |
->|              |              |              | quadratic    |              |
->|              |              |              | problem (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| honor_origin | OT_STRING    | yes          | Indicates    | CasADi::Ipop |
->| al_bounds    |              |              | whether      | tInternal    |
->|              |              |              | final points |              |
->|              |              |              | should be    |              |
->|              |              |              | projected    |              |
->|              |              |              | into         |              |
->|              |              |              | original     |              |
->|              |              |              | bounds. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
->| _vec         |              |              | true, the    | olverInterna |
->|              |              |              | input shape  | l            |
->|              |              |              | of F will    |              |
->|              |              |              | not be       |              |
->|              |              |              | checked.     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inf_pr_outpu | OT_STRING    | original     | Determines   | CasADi::Ipop |
->| t            |              |              | what value   | tInternal    |
->|              |              |              | is printed   |              |
->|              |              |              | in the       |              |
->|              |              |              | "inf_pr"     |              |
->|              |              |              | output       |              |
->|              |              |              | column. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->|              |              |              | exceptions   | ternal       |
->|              |              |              | when the     |              |
->|              |              |              | numerical    |              |
->|              |              |              | values of    |              |
->|              |              |              | the inputs   |              |
->|              |              |              | don't make   |              |
->|              |              |              | sense        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
->| llback       |              | )            | that will be | olverInterna |
->|              |              |              | called at    | l            |
->|              |              |              | each         |              |
->|              |              |              | iteration    |              |
->|              |              |              | with the     |              |
->|              |              |              | solver as    |              |
->|              |              |              | input. Check |              |
->|              |              |              | documentatio |              |
->|              |              |              | n of         |              |
->|              |              |              | Callback .   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
->| llback_ignor |              |              | true, errors | olverInterna |
->| e_errors     |              |              | thrown by it | l            |
->|              |              |              | eration_call |              |
->|              |              |              | back will be |              |
->|              |              |              | ignored.     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
->| llback_step  |              |              | the callback | olverInterna |
->|              |              |              | function     | l            |
->|              |              |              | every few    |              |
->|              |              |              | iterations.  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jac_c_consta | OT_STRING    | no           | Indicates    | CasADi::Ipop |
->| nt           |              |              | whether all  | tInternal    |
->|              |              |              | equality     |              |
->|              |              |              | constraints  |              |
->|              |              |              | are linear   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jac_d_consta | OT_STRING    | no           | Indicates    | CasADi::Ipop |
->| nt           |              |              | whether all  | tInternal    |
->|              |              |              | inequality   |              |
->|              |              |              | constraints  |              |
->|              |              |              | are linear   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jac_g        | OT_FX        | GenericType( | Function for | CasADi::NLPS |
->|              |              | )            | calculating  | olverInterna |
->|              |              |              | the Jacobian | l            |
->|              |              |              | of the       |              |
->|              |              |              | constraints  |              |
->|              |              |              | (autogenerat |              |
->|              |              |              | ed by        |              |
->|              |              |              | default)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_app | OT_STRING    | exact        | Specifies    | CasADi::Ipop |
->| roximation   |              |              | technique to | tInternal    |
->|              |              |              | compute      |              |
->|              |              |              | constraint   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that returns | ternal       |
->|              |              |              | a Jacobian   |              |
->|              |              |              | function     |              |
->|              |              |              | given a set  |              |
->|              |              |              | of desired   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | blocks,      |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of J |              |
->|              |              |              | acobianGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_reg | OT_REAL      | 0.250        | Exponent for | CasADi::Ipop |
->| ularization_ |              |              | mu in the re | tInternal    |
->| exponent     |              |              | gularization |              |
->|              |              |              | for rank-    |              |
->|              |              |              | deficient    |              |
->|              |              |              | constraint   |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_reg | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
->| ularization_ |              |              | regularizati | tInternal    |
->| value        |              |              | on for rank- |              |
->|              |              |              | deficient    |              |
->|              |              |              | constraint   |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| kappa_d      | OT_REAL      | 0.000        | Weight for   | CasADi::Ipop |
->|              |              |              | linear       | tInternal    |
->|              |              |              | damping term |              |
->|              |              |              | (to handle   |              |
->|              |              |              | one-sided    |              |
->|              |              |              | bounds).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| kappa_sigma  | OT_REAL      | 1.000e+10    | Factor       | CasADi::Ipop |
->|              |              |              | limiting the | tInternal    |
->|              |              |              | deviation of |              |
->|              |              |              | dual         |              |
->|              |              |              | variables    |              |
->|              |              |              | from primal  |              |
->|              |              |              | estimates.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| kappa_soc    | OT_REAL      | 0.990        | Factor in    | CasADi::Ipop |
->|              |              |              | the          | tInternal    |
->|              |              |              | sufficient   |              |
->|              |              |              | reduction    |              |
->|              |              |              | rule for     |              |
->|              |              |              | second order |              |
->|              |              |              | correction.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| kappa_x_dis  | OT_REAL      | 100          | a parameter  | CasADi::Ipop |
->|              |              |              | used to      | tInternal    |
->|              |              |              | check if the |              |
->|              |              |              | fast         |              |
->|              |              |              | direction    |              |
->|              |              |              | can be used  |              |
->|              |              |              | asthe line   |              |
->|              |              |              | search       |              |
->|              |              |              | direction    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| kappa_y_dis  | OT_REAL      | 10000        | a parameter  | CasADi::Ipop |
->|              |              |              | used to      | tInternal    |
->|              |              |              | check if the |              |
->|              |              |              | fast         |              |
->|              |              |              | direction    |              |
->|              |              |              | can be used  |              |
->|              |              |              | asthe line   |              |
->|              |              |              | search       |              |
->|              |              |              | direction    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| least_square | OT_STRING    | no           | Least square | CasADi::Ipop |
->| _init_duals  |              |              | initializati | tInternal    |
->|              |              |              | on of all    |              |
->|              |              |              | dual         |              |
->|              |              |              | variables    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| least_square | OT_STRING    | no           | Least square | CasADi::Ipop |
->| _init_primal |              |              | initializati | tInternal    |
->|              |              |              | on of the    |              |
->|              |              |              | primal       |              |
->|              |              |              | variables    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_STRING    | sherman-     | Strategy for | CasADi::Ipop |
->| ry_aug_solve |              | morrison     | solving the  | tInternal    |
->| r            |              |              | augmented    |              |
->|              |              |              | system for   |              |
->|              |              |              | low-rank     |              |
->|              |              |              | Hessian.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_REAL      | 1            | Value for B0 | CasADi::Ipop |
->| ry_init_val  |              |              | in low-rank  | tInternal    |
->|              |              |              | update. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_REAL      | 100000000    | Upper bound  | CasADi::Ipop |
->| ry_init_val_ |              |              | on value for | tInternal    |
->| max          |              |              | B0 in low-   |              |
->|              |              |              | rank update. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_REAL      | 0.000        | Lower bound  | CasADi::Ipop |
->| ry_init_val_ |              |              | on value for | tInternal    |
->| min          |              |              | B0 in low-   |              |
->|              |              |              | rank update. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_STRING    | scalar1      | Initializati | CasADi::Ipop |
->| ry_initializ |              |              | on strategy  | tInternal    |
->| ation        |              |              | for the      |              |
->|              |              |              | limited      |              |
->|              |              |              | memory       |              |
->|              |              |              | quasi-Newton |              |
->|              |              |              | approximatio |              |
->|              |              |              | n. (see      |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_INTEGER   | 6            | Maximum size | CasADi::Ipop |
->| ry_max_histo |              |              | of the       | tInternal    |
->| ry           |              |              | history for  |              |
->|              |              |              | the limited  |              |
->|              |              |              | quasi-Newton |              |
->|              |              |              | Hessian appr |              |
->|              |              |              | oximation.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_INTEGER   | 2            | Threshold    | CasADi::Ipop |
->| ry_max_skipp |              |              | for          | tInternal    |
->| ing          |              |              | successive   |              |
->|              |              |              | iterations   |              |
->|              |              |              | where update |              |
->|              |              |              | is skipped.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_STRING    | no           | Determines   | CasADi::Ipop |
->| ry_special_f |              |              | if the       | tInternal    |
->| or_resto     |              |              | quasi-Newton |              |
->|              |              |              | updates      |              |
->|              |              |              | should be    |              |
->|              |              |              | special      |              |
->|              |              |              | during the   |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| limited_memo | OT_STRING    | bfgs         | Quasi-Newton | CasADi::Ipop |
->| ry_update_ty |              |              | update       | tInternal    |
->| pe           |              |              | formula for  |              |
->|              |              |              | the limited  |              |
->|              |              |              | memory appro |              |
->|              |              |              | ximation.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| line_search_ | OT_STRING    | filter       | Globalizatio | CasADi::Ipop |
->| method       |              |              | n method     | tInternal    |
->|              |              |              | used in      |              |
->|              |              |              | backtracking |              |
->|              |              |              | line search  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| linear_scali | OT_STRING    | yes          | Flag         | CasADi::Ipop |
->| ng_on_demand |              |              | indicating   | tInternal    |
->|              |              |              | that linear  |              |
->|              |              |              | scaling is   |              |
->|              |              |              | only done if |              |
->|              |              |              | it seems     |              |
->|              |              |              | required.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| linear_solve | OT_STRING    | ma27         | Linear       | CasADi::Ipop |
->| r            |              |              | solver used  | tInternal    |
->|              |              |              | for step com |              |
->|              |              |              | putations.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| linear_syste | OT_STRING    | mc19         | Method for   | CasADi::Ipop |
->| m_scaling    |              |              | scaling the  | tInternal    |
->|              |              |              | linear       |              |
->|              |              |              | system. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_ignore_ | OT_STRING    | no           | Enables      | CasADi::Ipop |
->| singularity  |              |              | MA27's       | tInternal    |
->|              |              |              | ability to   |              |
->|              |              |              | solve a      |              |
->|              |              |              | linear       |              |
->|              |              |              | system even  |              |
->|              |              |              | if the       |              |
->|              |              |              | matrix is    |              |
->|              |              |              | singular.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_la_init | OT_REAL      | 5            | Real         | CasADi::Ipop |
->| _factor      |              |              | workspace    | tInternal    |
->|              |              |              | memory for   |              |
->|              |              |              | MA27. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_liw_ini | OT_REAL      | 5            | Integer      | CasADi::Ipop |
->| t_factor     |              |              | workspace    | tInternal    |
->|              |              |              | memory for   |              |
->|              |              |              | MA27. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_meminc_ | OT_REAL      | 10           | Increment    | CasADi::Ipop |
->| factor       |              |              | factor for   | tInternal    |
->|              |              |              | workspace    |              |
->|              |              |              | size for     |              |
->|              |              |              | MA27. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
->|              |              |              | tolerance    | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver MA27. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_pivtolm | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
->| ax           |              |              | pivot        | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver MA27. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma27_skip_in | OT_STRING    | no           | Always       | CasADi::Ipop |
->| ertia_check  |              |              | pretend      | tInternal    |
->|              |              |              | inertia is   |              |
->|              |              |              | correct.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma28_pivtol  | OT_REAL      | 0.010        | Pivot        | CasADi::Ipop |
->|              |              |              | tolerance    | tInternal    |
->|              |              |              | for linear   |              |
->|              |              |              | solver MA28. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_automat | OT_STRING    | yes          | Controls     | CasADi::Ipop |
->| ic_scaling   |              |              | MA57         | tInternal    |
->|              |              |              | automatic    |              |
->|              |              |              | scaling (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_block_s | OT_INTEGER   | 16           | Controls     | CasADi::Ipop |
->| ize          |              |              | block size   | tInternal    |
->|              |              |              | used by      |              |
->|              |              |              | Level 3 BLAS |              |
->|              |              |              | in MA57BD    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_node_am | OT_INTEGER   | 16           | Node         | CasADi::Ipop |
->| algamation   |              |              | amalgamation | tInternal    |
->|              |              |              | parameter    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_pivot_o | OT_INTEGER   | 5            | Controls     | CasADi::Ipop |
->| rder         |              |              | pivot order  | tInternal    |
->|              |              |              | in MA57 (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
->|              |              |              | tolerance    | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver MA57. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_pivtolm | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
->| ax           |              |              | pivot        | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver MA57. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_pre_all | OT_REAL      | 1.050        | Safety       | CasADi::Ipop |
->| oc           |              |              | factor for   | tInternal    |
->|              |              |              | work space   |              |
->|              |              |              | memory       |              |
->|              |              |              | allocation   |              |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver MA57. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma57_small_p | OT_INTEGER   | 0            | If set to 1, | CasADi::Ipop |
->| ivot_flag    |              |              | then when    | tInternal    |
->|              |              |              | small        |              |
->|              |              |              | entries      |              |
->|              |              |              | defined by   |              |
->|              |              |              | CNTL(2) are  |              |
->|              |              |              | detected     |              |
->|              |              |              | they are     |              |
->|              |              |              | removed and  |              |
->|              |              |              | the correspo |              |
->|              |              |              | nding pivots |              |
->|              |              |              | placed at    |              |
->|              |              |              | the end of   |              |
->|              |              |              | the factoriz |              |
->|              |              |              | ation. This  |              |
->|              |              |              | can be       |              |
->|              |              |              | particularly |              |
->|              |              |              | efficient if |              |
->|              |              |              | the matrix   |              |
->|              |              |              | is highly    |              |
->|              |              |              | rank         |              |
->|              |              |              | deficient.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma86_nemin   | OT_INTEGER   | 32           | Node         | CasADi::Ipop |
->|              |              |              | Amalgamation | tInternal    |
->|              |              |              | parameter    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma86_print_l | OT_INTEGER   | 0            | Debug        | CasADi::Ipop |
->| evel         |              |              | printing     | tInternal    |
->|              |              |              | level for    |              |
->|              |              |              | the linear   |              |
->|              |              |              | solver MA86  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma86_small   | OT_REAL      | 0.000        | Zero Pivot   | CasADi::Ipop |
->|              |              |              | Threshold    | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma86_static  | OT_REAL      | 0            | Static       | CasADi::Ipop |
->|              |              |              | Pivoting     | tInternal    |
->|              |              |              | Threshold    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma86_u       | OT_REAL      | 0.000        | Pivoting     | CasADi::Ipop |
->|              |              |              | Threshold    | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| ma86_umax    | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
->|              |              |              | Pivoting     | tInternal    |
->|              |              |              | Threshold    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| magic_steps  | OT_STRING    | no           | Enables      | CasADi::Ipop |
->|              |              |              | magic steps. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_cpu_time | OT_REAL      | 1000000      | Maximum      | CasADi::Ipop |
->|              |              |              | number of    | tInternal    |
->|              |              |              | CPU seconds. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_filter_r | OT_INTEGER   | 5            | Maximal      | CasADi::Ipop |
->| esets        |              |              | allowed      | tInternal    |
->|              |              |              | number of    |              |
->|              |              |              | filter       |              |
->|              |              |              | resets (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_hessian_ | OT_REAL      | 1.000e+20    | Maximum      | CasADi::Ipop |
->| perturbation |              |              | value of reg | tInternal    |
->|              |              |              | ularization  |              |
->|              |              |              | parameter    |              |
->|              |              |              | for handling |              |
->|              |              |              | negative     |              |
->|              |              |              | curvature.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_iter     | OT_INTEGER   | 3000         | Maximum      | CasADi::Ipop |
->|              |              |              | number of    | tInternal    |
->|              |              |              | iterations.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_refineme | OT_INTEGER   | 10           | Maximum      | CasADi::Ipop |
->| nt_steps     |              |              | number of    | tInternal    |
->|              |              |              | iterative    |              |
->|              |              |              | refinement   |              |
->|              |              |              | steps per    |              |
->|              |              |              | linear       |              |
->|              |              |              | system       |              |
->|              |              |              | solve. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_resto_it | OT_INTEGER   | 3000000      | Maximum      | CasADi::Ipop |
->| er           |              |              | number of    | tInternal    |
->|              |              |              | successive   |              |
->|              |              |              | iterations   |              |
->|              |              |              | in           |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_soc      | OT_INTEGER   | 4            | Maximum      | CasADi::Ipop |
->|              |              |              | number of    | tInternal    |
->|              |              |              | second order |              |
->|              |              |              | correction   |              |
->|              |              |              | trial steps  |              |
->|              |              |              | at each      |              |
->|              |              |              | iteration.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_soft_res | OT_INTEGER   | 10           | Maximum      | CasADi::Ipop |
->| to_iters     |              |              | number of    | tInternal    |
->|              |              |              | iterations   |              |
->|              |              |              | performed    |              |
->|              |              |              | successively |              |
->|              |              |              | in soft      |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mehrotra_alg | OT_STRING    | no           | Indicates if | CasADi::Ipop |
->| orithm       |              |              | we want to   | tInternal    |
->|              |              |              | do           |              |
->|              |              |              | Mehrotra's   |              |
->|              |              |              | algorithm.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| min_alpha_pr | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
->| imal         |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| min_hessian_ | OT_REAL      | 0.000        | Smallest     | CasADi::Ipop |
->| perturbation |              |              | perturbation | tInternal    |
->|              |              |              | of the       |              |
->|              |              |              | Hessian      |              |
->|              |              |              | block. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| min_refineme | OT_INTEGER   | 1            | Minimum      | CasADi::Ipop |
->| nt_steps     |              |              | number of    | tInternal    |
->|              |              |              | iterative    |              |
->|              |              |              | refinement   |              |
->|              |              |              | steps per    |              |
->|              |              |              | linear       |              |
->|              |              |              | system       |              |
->|              |              |              | solve. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
->|              | TOR          | )            | be activated | ternal   Cas |
->|              |              |              | (inputs|outp | ADi::IpoptIn |
->|              |              |              | uts)  (eval_ | ternal       |
->|              |              |              | f|eval_g|eva |              |
->|              |              |              | l_jac_g|eval |              |
->|              |              |              | _grad_f)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_allow_fas | OT_STRING    | yes          | Allow        | CasADi::Ipop |
->| t_monotone_d |              |              | skipping of  | tInternal    |
->| ecrease      |              |              | barrier      |              |
->|              |              |              | problem if   |              |
->|              |              |              | barrier test |              |
->|              |              |              | is already   |              |
->|              |              |              | met. (see    |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_init      | OT_REAL      | 0.100        | Initial      | CasADi::Ipop |
->|              |              |              | value for    | tInternal    |
->|              |              |              | the barrier  |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_linear_de | OT_REAL      | 0.200        | Determines   | CasADi::Ipop |
->| crease_facto |              |              | linear       | tInternal    |
->| r            |              |              | decrease     |              |
->|              |              |              | rate of      |              |
->|              |              |              | barrier      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_max       | OT_REAL      | 100000       | Maximum      | CasADi::Ipop |
->|              |              |              | value for    | tInternal    |
->|              |              |              | barrier      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_max_fact  | OT_REAL      | 1000         | Factor for i | CasADi::Ipop |
->|              |              |              | nitializatio | tInternal    |
->|              |              |              | n of maximum |              |
->|              |              |              | value for    |              |
->|              |              |              | barrier      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_min       | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
->|              |              |              | value for    | tInternal    |
->|              |              |              | barrier      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_oracle    | OT_STRING    | quality-     | Oracle for a | CasADi::Ipop |
->|              |              | function     | new barrier  | tInternal    |
->|              |              |              | parameter in |              |
->|              |              |              | the adaptive |              |
->|              |              |              | strategy.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_strategy  | OT_STRING    | monotone     | Update       | CasADi::Ipop |
->|              |              |              | strategy for | tInternal    |
->|              |              |              | barrier      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_superline | OT_REAL      | 1.500        | Determines   | CasADi::Ipop |
->| ar_decrease_ |              |              | superlinear  | tInternal    |
->| power        |              |              | decrease     |              |
->|              |              |              | rate of      |              |
->|              |              |              | barrier      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mu_target    | OT_REAL      | 0            | Desired      | CasADi::Ipop |
->|              |              |              | value of com | tInternal    |
->|              |              |              | plementarity |              |
->|              |              |              | . (see IPOPT |              |
->|              |              |              | documentatio |              |
->|              |              |              | n)           |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mult_diverg_ | OT_REAL      | 0.000        | tolerance    | CasADi::Ipop |
->| feasibility_ |              |              | for deciding | tInternal    |
->| tol          |              |              | if the       |              |
->|              |              |              | multipliers  |              |
->|              |              |              | are          |              |
->|              |              |              | diverging    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mult_diverg_ | OT_REAL      | 100000000    | tolerance    | CasADi::Ipop |
->| y_tol        |              |              | for deciding | tInternal    |
->|              |              |              | if the       |              |
->|              |              |              | multipliers  |              |
->|              |              |              | are          |              |
->|              |              |              | diverging    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_dep_to | OT_REAL      | -1           | Pivot        | CasADi::Ipop |
->| l            |              |              | threshold    | tInternal    |
->|              |              |              | for          |              |
->|              |              |              | detection of |              |
->|              |              |              | linearly     |              |
->|              |              |              | dependent    |              |
->|              |              |              | constraints  |              |
->|              |              |              | in MUMPS.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_mem_pe | OT_INTEGER   | 1000         | Percentage   | CasADi::Ipop |
->| rcent        |              |              | increase in  | tInternal    |
->|              |              |              | the          |              |
->|              |              |              | estimated    |              |
->|              |              |              | working      |              |
->|              |              |              | space for    |              |
->|              |              |              | MUMPS. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_permut | OT_INTEGER   | 7            | Controls     | CasADi::Ipop |
->| ing_scaling  |              |              | permuting    | tInternal    |
->|              |              |              | and scaling  |              |
->|              |              |              | in MUMPS     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_pivot_ | OT_INTEGER   | 7            | Controls     | CasADi::Ipop |
->| order        |              |              | pivot order  | tInternal    |
->|              |              |              | in MUMPS     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_pivtol | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
->|              |              |              | tolerance    | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver       |              |
->|              |              |              | MUMPS. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_pivtol | OT_REAL      | 0.100        | Maximum      | CasADi::Ipop |
->| max          |              |              | pivot        | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver       |              |
->|              |              |              | MUMPS. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| mumps_scalin | OT_INTEGER   | 77           | Controls     | CasADi::Ipop |
->| g            |              |              | scaling in   | tInternal    |
->|              |              |              | MUMPS (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->| neg_curv_tes | OT_REAL      | 0            | Tolerance    | CasADi::Ipop |
->| t_tol        |              |              | for          | tInternal    |
->|              |              |              | heuristic to |              |
->|              |              |              | ignore wrong |              |
->|              |              |              | inertia.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| never_use_fa | OT_STRING    | no           | Toggle to    | CasADi::Ipop |
->| ct_cgpen_dir |              |              | switch off   | tInternal    |
->| ection       |              |              | the fast     |              |
->|              |              |              | Chen-        |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | direction    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| never_use_pi | OT_STRING    | no           | Toggle to    | CasADi::Ipop |
->| ecewise_pena |              |              | switch off   | tInternal    |
->| lty_ls       |              |              | the          |              |
->|              |              |              | piecewise    |              |
->|              |              |              | penalty      |              |
->|              |              |              | method (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_lower_bo | OT_REAL      | -1.000e+19   | any bound    | CasADi::Ipop |
->| und_inf      |              |              | less or      | tInternal    |
->|              |              |              | equal this   |              |
->|              |              |              | value will   |              |
->|              |              |              | be           |              |
->|              |              |              | considered   |              |
->|              |              |              | -inf (i.e.   |              |
->|              |              |              | not lower    |              |
->|              |              |              | bounded).    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_scaling_ | OT_REAL      | 0            | Target value | CasADi::Ipop |
->| constr_targe |              |              | for          | tInternal    |
->| t_gradient   |              |              | constraint   |              |
->|              |              |              | function     |              |
->|              |              |              | gradient     |              |
->|              |              |              | size. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_scaling_ | OT_REAL      | 100          | Maximum      | CasADi::Ipop |
->| max_gradient |              |              | gradient     | tInternal    |
->|              |              |              | after NLP    |              |
->|              |              |              | scaling.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_scaling_ | OT_STRING    | gradient-    | Select the   | CasADi::Ipop |
->| method       |              | based        | technique    | tInternal    |
->|              |              |              | used for     |              |
->|              |              |              | scaling the  |              |
->|              |              |              | NLP. (see    |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_scaling_ | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
->| min_value    |              |              | value of     | tInternal    |
->|              |              |              | gradient-    |              |
->|              |              |              | based        |              |
->|              |              |              | scaling      |              |
->|              |              |              | values. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_scaling_ | OT_REAL      | 0            | Target value | CasADi::Ipop |
->| obj_target_g |              |              | for          | tInternal    |
->| radient      |              |              | objective    |              |
->|              |              |              | function     |              |
->|              |              |              | gradient     |              |
->|              |              |              | size. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nlp_upper_bo | OT_REAL      | 1.000e+19    | any bound    | CasADi::Ipop |
->| und_inf      |              |              | greater or   | tInternal    |
->|              |              |              | this value   |              |
->|              |              |              | will be      |              |
->|              |              |              | considered   |              |
->|              |              |              | +inf (i.e.   |              |
->|              |              |              | not upper    |              |
->|              |              |              | bounded).    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nu_inc       | OT_REAL      | 0.000        | Increment of | CasADi::Ipop |
->|              |              |              | the penalty  | tInternal    |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| nu_init      | OT_REAL      | 0.000        | Initial      | CasADi::Ipop |
->|              |              |              | value of the | tInternal    |
->|              |              |              | penalty      |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| num_linear_v | OT_INTEGER   | 0            | Number of    | CasADi::Ipop |
->| ariables     |              |              | linear       | tInternal    |
->|              |              |              | variables    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| j_dir        |              |              | adjoint      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| d_dir        |              |              | forward      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| ian          |              |              | Hessians     | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| bian         |              |              | Jacobians    | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| obj_max_inc  | OT_REAL      | 5            | Determines   | CasADi::Ipop |
->|              |              |              | the upper    | tInternal    |
->|              |              |              | bound on the |              |
->|              |              |              | acceptable   |              |
->|              |              |              | increase of  |              |
->|              |              |              | barrier      |              |
->|              |              |              | objective    |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| obj_scaling_ | OT_REAL      | 1            | Scaling      | CasADi::Ipop |
->| factor       |              |              | factor for   | tInternal    |
->|              |              |              | the          |              |
->|              |              |              | objective    |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| option_file_ | OT_STRING    |              | File name of | CasADi::Ipop |
->| name         |              |              | options file | tInternal    |
->|              |              |              | (to          |              |
->|              |              |              | overwrite    |              |
->|              |              |              | default).    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| output_file  | OT_STRING    |              | File name of | CasADi::Ipop |
->|              |              |              | desired      | tInternal    |
->|              |              |              | output file  |              |
->|              |              |              | (leave unset |              |
->|              |              |              | for no file  |              |
->|              |              |              | output).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
->|              |              | )            | option.      | olverInterna |
->|              |              |              | Expect F, G, | l            |
->|              |              |              | H, J to have |              |
->|              |              |              | an           |              |
->|              |              |              | additional   |              |
->|              |              |              | input        |              |
->|              |              |              | argument     |              |
->|              |              |              | appended at  |              |
->|              |              |              | the end,     |              |
->|              |              |              | denoting     |              |
->|              |              |              | fixed        |              |
->|              |              |              | parameters.  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_INTEGER   | 5000         | Maximum Size | CasADi::Ipop |
->| _coarse_size |              |              | of Coarse    | tInternal    |
->|              |              |              | Grid Matrix  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_REAL      | 0.500        | dropping     | CasADi::Ipop |
->| _dropping_fa |              |              | value for    | tInternal    |
->| ctor         |              |              | incomplete   |              |
->|              |              |              | factor (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_REAL      | 0.100        | dropping     | CasADi::Ipop |
->| _dropping_sc |              |              | value for    | tInternal    |
->| hur          |              |              | sparsify     |              |
->|              |              |              | schur        |              |
->|              |              |              | complement   |              |
->|              |              |              | factor (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_REAL      | 5000000      | (see IPOPT d | CasADi::Ipop |
->| _inverse_nor |              |              | ocumentation | tInternal    |
->| m_factor     |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_INTEGER   | 10           | Maximum Size | CasADi::Ipop |
->| _max_levels  |              |              | of Grid      | tInternal    |
->|              |              |              | Levels (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_INTEGER   | 10000000     | max fill for | CasADi::Ipop |
->| _max_row_fil |              |              | each row     | tInternal    |
->| l            |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_REAL      | 0.000        | Relative     | CasADi::Ipop |
->| _relative_to |              |              | Residual     | tInternal    |
->| l            |              |              | Convergence  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_iter | OT_STRING    | no           | Switch on    | CasADi::Ipop |
->| ative        |              |              | iterative    | tInternal    |
->|              |              |              | solver in    |              |
->|              |              |              | Pardiso      |              |
->|              |              |              | library (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_matc | OT_STRING    | complete+2x2 | Matching     | CasADi::Ipop |
->| hing_strateg |              |              | strategy to  | tInternal    |
->| y            |              |              | be used by   |              |
->|              |              |              | Pardiso (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_max_ | OT_INTEGER   | 4            | Maximal      | CasADi::Ipop |
->| droptol_corr |              |              | number of    | tInternal    |
->| ections      |              |              | decreases of |              |
->|              |              |              | drop         |              |
->|              |              |              | tolerance    |              |
->|              |              |              | during one   |              |
->|              |              |              | solve. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_max_ | OT_INTEGER   | 500          | Maximum      | CasADi::Ipop |
->| iter         |              |              | number of    | tInternal    |
->|              |              |              | Krylov-      |              |
->|              |              |              | Subspace     |              |
->|              |              |              | Iteration    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_msgl | OT_INTEGER   | 0            | Pardiso      | CasADi::Ipop |
->| vl           |              |              | message      | tInternal    |
->|              |              |              | level (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_out_ | OT_INTEGER   | 0            | Enables out- | CasADi::Ipop |
->| of_core_powe |              |              | of-core      | tInternal    |
->| r            |              |              | variant of   |              |
->|              |              |              | Pardiso (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_redo | OT_STRING    | no           | Toggle for   | CasADi::Ipop |
->| _symbolic_fa |              |              | handling     | tInternal    |
->| ct_only_if_i |              |              | case when    |              |
->| nertia_wrong |              |              | elements     |              |
->|              |              |              | were         |              |
->|              |              |              | perturbed by |              |
->|              |              |              | Pardiso.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_repe | OT_STRING    | no           | Interpretati | CasADi::Ipop |
->| ated_perturb |              |              | on of        | tInternal    |
->| ation_means_ |              |              | perturbed    |              |
->| singular     |              |              | elements.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pardiso_skip | OT_STRING    | no           | Always       | CasADi::Ipop |
->| _inertia_che |              |              | pretend      | tInternal    |
->| ck           |              |              | inertia is   |              |
->|              |              |              | correct.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pass_nonline | OT_BOOLEAN   | False        | n/a          | CasADi::Ipop |
->| ar_variables |              |              |              | tInternal    |
->+--------------+--------------+--------------+--------------+--------------+
->| pen_des_fact | OT_REAL      | 0.200        | a parameter  | CasADi::Ipop |
->|              |              |              | used in      | tInternal    |
->|              |              |              | penalty      |              |
->|              |              |              | parameter    |              |
->|              |              |              | computation  |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pen_init_fac | OT_REAL      | 50           | a parameter  | CasADi::Ipop |
->|              |              |              | used to      | tInternal    |
->|              |              |              | choose       |              |
->|              |              |              | initial      |              |
->|              |              |              | penalty para |              |
->|              |              |              | meterswhen   |              |
->|              |              |              | the          |              |
->|              |              |              | regularized  |              |
->|              |              |              | Newton       |              |
->|              |              |              | method is    |              |
->|              |              |              | used. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| pen_theta_ma | OT_REAL      | 10000        | Determines   | CasADi::Ipop |
->| x_fact       |              |              | upper bound  | tInternal    |
->|              |              |              | for          |              |
->|              |              |              | constraint   |              |
->|              |              |              | violation in |              |
->|              |              |              | the filter.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| penalty_init | OT_REAL      | 100000       | Maximal      | CasADi::Ipop |
->| _max         |              |              | value for    | tInternal    |
->|              |              |              | the intial   |              |
->|              |              |              | penalty      |              |
->|              |              |              | parameter    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| penalty_init | OT_REAL      | 1            | Minimal      | CasADi::Ipop |
->| _min         |              |              | value for    | tInternal    |
->|              |              |              | the intial   |              |
->|              |              |              | penalty      |              |
->|              |              |              | parameter    |              |
->|              |              |              | for line     |              |
->|              |              |              | search(for   |              |
->|              |              |              | Chen-        |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| penalty_max  | OT_REAL      | 1.000e+30    | Maximal      | CasADi::Ipop |
->|              |              |              | value for    | tInternal    |
->|              |              |              | the penalty  |              |
->|              |              |              | parameter    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| penalty_upda | OT_REAL      | 10           | LIFENG       | CasADi::Ipop |
->| te_compl_tol |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| penalty_upda | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
->| te_infeasibi |              |              | for infeasib | tInternal    |
->| lity_tol     |              |              | ility in     |              |
->|              |              |              | penalty      |              |
->|              |              |              | parameter    |              |
->|              |              |              | update test. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| perturb_alwa | OT_STRING    | no           | Active       | CasADi::Ipop |
->| ys_cd        |              |              | permanent    | tInternal    |
->|              |              |              | perturbation |              |
->|              |              |              | of           |              |
->|              |              |              | constraint l |              |
->|              |              |              | inearization |              |
->|              |              |              | . (see IPOPT |              |
->|              |              |              | documentatio |              |
->|              |              |              | n)           |              |
->+--------------+--------------+--------------+--------------+--------------+
->| perturb_dec_ | OT_REAL      | 0.333        | Decrease     | CasADi::Ipop |
->| fact         |              |              | factor for   | tInternal    |
->|              |              |              | x-s perturba |              |
->|              |              |              | tion. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| perturb_inc_ | OT_REAL      | 8            | Increase     | CasADi::Ipop |
->| fact         |              |              | factor for   | tInternal    |
->|              |              |              | x-s perturba |              |
->|              |              |              | tion. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| perturb_inc_ | OT_REAL      | 100          | Increase     | CasADi::Ipop |
->| fact_first   |              |              | factor for   | tInternal    |
->|              |              |              | x-s          |              |
->|              |              |              | perturbation |              |
->|              |              |              | for very     |              |
->|              |              |              | first pertur |              |
->|              |              |              | bation. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| piecewisepen | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
->| alty_gamma_i |              |              | WRITES THIS. | tInternal    |
->| nfeasi       |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| piecewisepen | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
->| alty_gamma_o |              |              | WRITES THIS. | tInternal    |
->| bj           |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| point_pertur | OT_REAL      | 10           | Maximal      | CasADi::Ipop |
->| bation_radiu |              |              | perturbation | tInternal    |
->| s            |              |              | of an        |              |
->|              |              |              | evaluation   |              |
->|              |              |              | point. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_info_s | OT_STRING    | no           | Enables      | CasADi::Ipop |
->| tring        |              |              | printing of  | tInternal    |
->|              |              |              | additional   |              |
->|              |              |              | info string  |              |
->|              |              |              | at end of    |              |
->|              |              |              | iteration    |              |
->|              |              |              | output. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_level  | OT_INTEGER   | 5            | Output       | CasADi::Ipop |
->|              |              |              | verbosity    | tInternal    |
->|              |              |              | level. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_option | OT_STRING    | no           | Switch to    | CasADi::Ipop |
->| s_documentat |              |              | print all    | tInternal    |
->| ion          |              |              | algorithmic  |              |
->|              |              |              | options.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_option | OT_STRING    | no           | Undocumented | CasADi::Ipop |
->| s_latex_mode |              |              | (see IPOPT d | tInternal    |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_time   | OT_BOOLEAN   | True         | print        | CasADi::Ipop |
->|              |              |              | information  | tInternal    |
->|              |              |              | about        |              |
->|              |              |              | execution    |              |
->|              |              |              | time         |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_timing | OT_STRING    | no           | Switch to    | CasADi::Ipop |
->| _statistics  |              |              | print timing | tInternal    |
->|              |              |              | statistics.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| print_user_o | OT_STRING    | no           | Print all    | CasADi::Ipop |
->| ptions       |              |              | options set  | tInternal    |
->|              |              |              | by the user. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| quality_func | OT_STRING    | none         | The          | CasADi::Ipop |
->| tion_balanci |              |              | balancing    | tInternal    |
->| ng_term      |              |              | term         |              |
->|              |              |              | included in  |              |
->|              |              |              | the quality  |              |
->|              |              |              | function for |              |
->|              |              |              | centrality.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| quality_func | OT_STRING    | none         | The penalty  | CasADi::Ipop |
->| tion_central |              |              | term for     | tInternal    |
->| ity          |              |              | centrality   |              |
->|              |              |              | that is      |              |
->|              |              |              | included in  |              |
->|              |              |              | quality      |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| quality_func | OT_INTEGER   | 8            | Maximum      | CasADi::Ipop |
->| tion_max_sec |              |              | number of    | tInternal    |
->| tion_steps   |              |              | search steps |              |
->|              |              |              | during       |              |
->|              |              |              | direct       |              |
->|              |              |              | search       |              |
->|              |              |              | procedure    |              |
->|              |              |              | determining  |              |
->|              |              |              | the optimal  |              |
->|              |              |              | centering    |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| quality_func | OT_STRING    | 2-norm-      | Norm used    | CasADi::Ipop |
->| tion_norm_ty |              | squared      | for          | tInternal    |
->| pe           |              |              | components   |              |
->|              |              |              | of the       |              |
->|              |              |              | quality      |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| quality_func | OT_REAL      | 0            | Tolerance    | CasADi::Ipop |
->| tion_section |              |              | for the      | tInternal    |
->| _qf_tol      |              |              | golden       |              |
->|              |              |              | section      |              |
->|              |              |              | search       |              |
->|              |              |              | procedure    |              |
->|              |              |              | determining  |              |
->|              |              |              | the optimal  |              |
->|              |              |              | centering    |              |
->|              |              |              | parameter    |              |
->|              |              |              | (in the      |              |
->|              |              |              | function     |              |
->|              |              |              | value        |              |
->|              |              |              | space). (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| quality_func | OT_REAL      | 0.010        | Tolerance    | CasADi::Ipop |
->| tion_section |              |              | for the      | tInternal    |
->| _sigma_tol   |              |              | section      |              |
->|              |              |              | search       |              |
->|              |              |              | procedure    |              |
->|              |              |              | determining  |              |
->|              |              |              | the optimal  |              |
->|              |              |              | centering    |              |
->|              |              |              | parameter    |              |
->|              |              |              | (in sigma    |              |
->|              |              |              | space). (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| recalc_y     | OT_STRING    | no           | Tells the    | CasADi::Ipop |
->|              |              |              | algorithm to | tInternal    |
->|              |              |              | recalculate  |              |
->|              |              |              | the equality |              |
->|              |              |              | and          |              |
->|              |              |              | inequality   |              |
->|              |              |              | multipliers  |              |
->|              |              |              | as least     |              |
->|              |              |              | square       |              |
->|              |              |              | estimates.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| recalc_y_fea | OT_REAL      | 0.000        | Feasibility  | CasADi::Ipop |
->| s_tol        |              |              | threshold    | tInternal    |
->|              |              |              | for recomput |              |
->|              |              |              | ation of     |              |
->|              |              |              | multipliers. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->| heck         |              |              | exceptions   | ternal       |
->|              |              |              | when NaN or  |              |
->|              |              |              | Inf appears  |              |
->|              |              |              | during       |              |
->|              |              |              | evaluation   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| replace_boun | OT_STRING    | no           | Indicates if | CasADi::Ipop |
->| ds           |              |              | all variable | tInternal    |
->|              |              |              | bounds       |              |
->|              |              |              | should be    |              |
->|              |              |              | replaced by  |              |
->|              |              |              | inequality   |              |
->|              |              |              | constraints  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| required_inf | OT_REAL      | 0.900        | Required     | CasADi::Ipop |
->| easibility_r |              |              | reduction of | tInternal    |
->| eduction     |              |              | infeasibilit |              |
->|              |              |              | y before     |              |
->|              |              |              | leaving      |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| residual_imp | OT_REAL      | 1.000        | Minimal      | CasADi::Ipop |
->| rovement_fac |              |              | required     | tInternal    |
->| tor          |              |              | reduction of |              |
->|              |              |              | residual     |              |
->|              |              |              | test ratio   |              |
->|              |              |              | in iterative |              |
->|              |              |              | refinement.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| residual_rat | OT_REAL      | 0.000        | Iterative    | CasADi::Ipop |
->| io_max       |              |              | refinement   | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| residual_rat | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
->| io_singular  |              |              | for          | tInternal    |
->|              |              |              | declaring    |              |
->|              |              |              | linear       |              |
->|              |              |              | system       |              |
->|              |              |              | singular     |              |
->|              |              |              | after failed |              |
->|              |              |              | iterative    |              |
->|              |              |              | refinement.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| resto_failur | OT_REAL      | 0            | Threshold    | CasADi::Ipop |
->| e_feasibilit |              |              | for primal i | tInternal    |
->| y_threshold  |              |              | nfeasibility |              |
->|              |              |              | to declare   |              |
->|              |              |              | failure of   |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| resto_penalt | OT_REAL      | 1000         | Penalty      | CasADi::Ipop |
->| y_parameter  |              |              | parameter in | tInternal    |
->|              |              |              | the          |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase        |              |
->|              |              |              | objective    |              |
->|              |              |              | function.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| resto_proxim | OT_REAL      | 1            | Weighting    | CasADi::Ipop |
->| ity_weight   |              |              | factor for   | tInternal    |
->|              |              |              | the          |              |
->|              |              |              | proximity    |              |
->|              |              |              | term in      |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase        |              |
->|              |              |              | objective.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| rho          | OT_REAL      | 0.100        | Value in     | CasADi::Ipop |
->|              |              |              | penalty      | tInternal    |
->|              |              |              | parameter    |              |
->|              |              |              | update       |              |
->|              |              |              | formula.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| s_max        | OT_REAL      | 100          | Scaling      | CasADi::Ipop |
->|              |              |              | threshold    | tInternal    |
->|              |              |              | for the NLP  |              |
->|              |              |              | error. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| s_phi        | OT_REAL      | 2.300        | Exponent for | CasADi::Ipop |
->|              |              |              | linear       | tInternal    |
->|              |              |              | barrier      |              |
->|              |              |              | function     |              |
->|              |              |              | model in the |              |
->|              |              |              | switching    |              |
->|              |              |              | rule. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| s_theta      | OT_REAL      | 1.100        | Exponent for | CasADi::Ipop |
->|              |              |              | current      | tInternal    |
->|              |              |              | constraint   |              |
->|              |              |              | violation in |              |
->|              |              |              | the          |              |
->|              |              |              | switching    |              |
->|              |              |              | rule. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sb           | OT_STRING    | no           | (see IPOPT d | CasADi::Ipop |
->|              |              |              | ocumentation | tInternal    |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sigma_max    | OT_REAL      | 100          | Maximum      | CasADi::Ipop |
->|              |              |              | value of the | tInternal    |
->|              |              |              | centering    |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sigma_min    | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
->|              |              |              | value of the | tInternal    |
->|              |              |              | centering    |              |
->|              |              |              | parameter.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| skip_corr_if | OT_STRING    | yes          | Skip the     | CasADi::Ipop |
->| _neg_curv    |              |              | corrector    | tInternal    |
->|              |              |              | step in      |              |
->|              |              |              | negative     |              |
->|              |              |              | curvature    |              |
->|              |              |              | iteration (u |              |
->|              |              |              | nsupported!) |              |
->|              |              |              | . (see IPOPT |              |
->|              |              |              | documentatio |              |
->|              |              |              | n)           |              |
->+--------------+--------------+--------------+--------------+--------------+
->| skip_corr_in | OT_STRING    | yes          | Skip the     | CasADi::Ipop |
->| _monotone_mo |              |              | corrector    | tInternal    |
->| de           |              |              | step during  |              |
->|              |              |              | monotone     |              |
->|              |              |              | barrier      |              |
->|              |              |              | parameter    |              |
->|              |              |              | mode (unsupp |              |
->|              |              |              | orted!).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| skip_finaliz | OT_STRING    | no           | Indicates if | CasADi::Ipop |
->| e_solution_c |              |              | call to NLP: | tInternal    |
->| all          |              |              | :FinalizeSol |              |
->|              |              |              | ution after  |              |
->|              |              |              | optimization |              |
->|              |              |              | should be    |              |
->|              |              |              | suppressed   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| slack_bound_ | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
->| frac         |              |              | minimum      | tInternal    |
->|              |              |              | relative     |              |
->|              |              |              | distance     |              |
->|              |              |              | from the     |              |
->|              |              |              | initial      |              |
->|              |              |              | slack to     |              |
->|              |              |              | bound. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| slack_bound_ | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
->| push         |              |              | minimum      | tInternal    |
->|              |              |              | absolute     |              |
->|              |              |              | distance     |              |
->|              |              |              | from the     |              |
->|              |              |              | initial      |              |
->|              |              |              | slack to     |              |
->|              |              |              | bound. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| slack_move   | OT_REAL      | 0.000        | Correction   | CasADi::Ipop |
->|              |              |              | size for     | tInternal    |
->|              |              |              | very small   |              |
->|              |              |              | slacks. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| soft_resto_p | OT_REAL      | 1.000        | Required     | CasADi::Ipop |
->| derror_reduc |              |              | reduction in | tInternal    |
->| tion_factor  |              |              | primal-dual  |              |
->|              |              |              | error in the |              |
->|              |              |              | soft         |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
->|              |              |              | sparse       | ternal       |
->+--------------+--------------+--------------+--------------+--------------+
->| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that         | ternal       |
->|              |              |              | provides     |              |
->|              |              |              | sparsity for |              |
->|              |              |              | a given      |              |
->|              |              |              | input output |              |
->|              |              |              | block,       |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of S |              |
->|              |              |              | parsityGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| start_with_r | OT_STRING    | no           | Tells        | CasADi::Ipop |
->| esto         |              |              | algorithm to | tInternal    |
->|              |              |              | switch to    |              |
->|              |              |              | restoration  |              |
->|              |              |              | phase in     |              |
->|              |              |              | first        |              |
->|              |              |              | iteration.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
->| ans          |              |              | references   | ternal       |
->|              |              |              | to generated |              |
->|              |              |              | Jacobians in |              |
->|              |              |              | order to     |              |
->|              |              |              | avoid        |              |
->|              |              |              | generating   |              |
->|              |              |              | identical    |              |
->|              |              |              | Jacobians    |              |
->|              |              |              | multiple     |              |
->|              |              |              | times        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| suppress_all | OT_STRING    | no           | Undocumented | CasADi::Ipop |
->| _output      |              |              | (see IPOPT d | tInternal    |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| tau_min      | OT_REAL      | 0.990        | Lower bound  | CasADi::Ipop |
->|              |              |              | on fraction- | tInternal    |
->|              |              |              | to-the-      |              |
->|              |              |              | boundary     |              |
->|              |              |              | parameter    |              |
->|              |              |              | tau. (see    |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| theta_max_fa | OT_REAL      | 10000        | Determines   | CasADi::Ipop |
->| ct           |              |              | upper bound  | tInternal    |
->|              |              |              | for          |              |
->|              |              |              | constraint   |              |
->|              |              |              | violation in |              |
->|              |              |              | the filter.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| theta_min    | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
->|              |              |              | WRITES THIS. | tInternal    |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| theta_min_fa | OT_REAL      | 0.000        | Determines   | CasADi::Ipop |
->| ct           |              |              | constraint   | tInternal    |
->|              |              |              | violation    |              |
->|              |              |              | threshold in |              |
->|              |              |              | the          |              |
->|              |              |              | switching    |              |
->|              |              |              | rule. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| tiny_step_to | OT_REAL      | 0.000        | Tolerance    | CasADi::Ipop |
->| l            |              |              | for          | tInternal    |
->|              |              |              | detecting    |              |
->|              |              |              | numerically  |              |
->|              |              |              | insignifican |              |
->|              |              |              | t steps.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| tiny_step_y_ | OT_REAL      | 0.010        | Tolerance    | CasADi::Ipop |
->| tol          |              |              | for quitting | tInternal    |
->|              |              |              | because of   |              |
->|              |              |              | numerically  |              |
->|              |              |              | insignifican |              |
->|              |              |              | t steps.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| tol          | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
->|              |              |              | convergence  | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | (relative).  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
->|              |              | )            | defined      | ternal       |
->|              |              |              | field that   |              |
->|              |              |              | can be used  |              |
->|              |              |              | to identify  |              |
->|              |              |              | the function |              |
->|              |              |              | or pass      |              |
->|              |              |              | additional   |              |
->|              |              |              | information  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| var_integer_ | OT_DICTIONAR | None         | Integer      | CasADi::Ipop |
->| md           | Y            |              | metadata (a  | tInternal    |
->|              |              |              | dictionary   |              |
->|              |              |              | with lists   |              |
->|              |              |              | of integers) |              |
->|              |              |              | about        |              |
->|              |              |              | variables to |              |
->|              |              |              | be passed to |              |
->|              |              |              | IPOPT        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| var_numeric_ | OT_DICTIONAR | None         | Numeric      | CasADi::Ipop |
->| md           | Y            |              | metadata (a  | tInternal    |
->|              |              |              | dictionary   |              |
->|              |              |              | with lists   |              |
->|              |              |              | of reals)    |              |
->|              |              |              | about        |              |
->|              |              |              | variables to |              |
->|              |              |              | be passed to |              |
->|              |              |              | IPOPT        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| var_string_m | OT_DICTIONAR | None         | String       | CasADi::Ipop |
->| d            | Y            |              | metadata (a  | tInternal    |
->|              |              |              | dictionary   |              |
->|              |              |              | with lists   |              |
->|              |              |              | of strings)  |              |
->|              |              |              | about        |              |
->|              |              |              | variables to |              |
->|              |              |              | be passed to |              |
->|              |              |              | IPOPT        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| vartheta     | OT_REAL      | 0.500        | a parameter  | CasADi::Ipop |
->|              |              |              | used to      | tInternal    |
->|              |              |              | check if the |              |
->|              |              |              | fast         |              |
->|              |              |              | direction    |              |
->|              |              |              | can be used  |              |
->|              |              |              | asthe line   |              |
->|              |              |              | search       |              |
->|              |              |              | direction    |              |
->|              |              |              | (for Chen-   |              |
->|              |              |              | Goldfarb     |              |
->|              |              |              | line         |              |
->|              |              |              | search).     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
->|              |              |              | evaluation   | ternal       |
->|              |              |              | for          |              |
->|              |              |              | debugging    |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_b | OT_REAL      | 0.001        | same as      | CasADi::Ipop |
->| ound_frac    |              |              | bound_frac   | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | regular      |              |
->|              |              |              | initializer. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_b | OT_REAL      | 0.001        | same as      | CasADi::Ipop |
->| ound_push    |              |              | bound_push   | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | regular      |              |
->|              |              |              | initializer. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_e | OT_STRING    | no           | Tells        | CasADi::Ipop |
->| ntire_iterat |              |              | algorithm    | tInternal    |
->| e            |              |              | whether to   |              |
->|              |              |              | use the GetW |              |
->|              |              |              | armStartIter |              |
->|              |              |              | ate method   |              |
->|              |              |              | in the NLP.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_i | OT_STRING    | no           | Warm-start   | CasADi::Ipop |
->| nit_point    |              |              | for initial  | tInternal    |
->|              |              |              | point (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_m | OT_REAL      | 0.001        | same as mult | CasADi::Ipop |
->| ult_bound_pu |              |              | _bound_push  | tInternal    |
->| sh           |              |              | for the      |              |
->|              |              |              | regular      |              |
->|              |              |              | initializer. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_m | OT_REAL      | 1000000      | Maximum      | CasADi::Ipop |
->| ult_init_max |              |              | initial      | tInternal    |
->|              |              |              | value for    |              |
->|              |              |              | the equality |              |
->|              |              |              | multipliers. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_s | OT_STRING    | no           | Indicates    | CasADi::Ipop |
->| ame_structur |              |              | whether a    | tInternal    |
->| e            |              |              | problem with |              |
->|              |              |              | a structure  |              |
->|              |              |              | identical to |              |
->|              |              |              | the previous |              |
->|              |              |              | one is to be |              |
->|              |              |              | solved. (see |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_s | OT_REAL      | 0.001        | same as slac | CasADi::Ipop |
->| lack_bound_f |              |              | k_bound_frac | tInternal    |
->| rac          |              |              | for the      |              |
->|              |              |              | regular      |              |
->|              |              |              | initializer. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_s | OT_REAL      | 0.001        | same as slac | CasADi::Ipop |
->| lack_bound_p |              |              | k_bound_push | tInternal    |
->| ush          |              |              | for the      |              |
->|              |              |              | regular      |              |
->|              |              |              | initializer. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warm_start_t | OT_REAL      | 0            | Unsupported! | CasADi::Ipop |
->| arget_mu     |              |              | (see IPOPT d | tInternal    |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
->| _bounds      |              |              | initial      | olverInterna |
->|              |              |              | guess does   | l            |
->|              |              |              | not satisfy  |              |
->|              |              |              | LBX and UBX  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| watchdog_sho | OT_INTEGER   | 10           | Number of    | CasADi::Ipop |
->| rtened_iter_ |              |              | shortened    | tInternal    |
->| trigger      |              |              | iterations   |              |
->|              |              |              | that trigger |              |
->|              |              |              | the          |              |
->|              |              |              | watchdog.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| watchdog_tri | OT_INTEGER   | 3            | Maximum      | CasADi::Ipop |
->| al_iter_max  |              |              | number of    | tInternal    |
->|              |              |              | watchdog     |              |
->|              |              |              | iterations.  |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_inexact | OT_REAL      | 0            | Drop         | CasADi::Ipop |
->| _droptol     |              |              | tolerance    | tInternal    |
->|              |              |              | for inexact  |              |
->|              |              |              | factorizatio |              |
->|              |              |              | n preconditi |              |
->|              |              |              | oner in      |              |
->|              |              |              | WISMP. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_inexact | OT_REAL      | 0            | Fill-in      | CasADi::Ipop |
->| _fillin_limi |              |              | limit for    | tInternal    |
->| t            |              |              | inexact fact |              |
->|              |              |              | orization pr |              |
->|              |              |              | econditioner |              |
->|              |              |              | in WISMP.    |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_iterati | OT_STRING    | no           | Switches to  | CasADi::Ipop |
->| ve           |              |              | iterative    | tInternal    |
->|              |              |              | solver in    |              |
->|              |              |              | WSMP. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_max_ite | OT_INTEGER   | 1000         | Maximal      | CasADi::Ipop |
->| r            |              |              | number of    | tInternal    |
->|              |              |              | iterations   |              |
->|              |              |              | in iterative |              |
->|              |              |              | WISMP (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_no_pivo | OT_STRING    | no           | Use the      | CasADi::Ipop |
->| ting         |              |              | static       | tInternal    |
->|              |              |              | pivoting     |              |
->|              |              |              | option of    |              |
->|              |              |              | WSMP. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_num_thr | OT_INTEGER   | 1            | Number of    | CasADi::Ipop |
->| eads         |              |              | threads to   | tInternal    |
->|              |              |              | be used in   |              |
->|              |              |              | WSMP (see    |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_orderin | OT_INTEGER   | 1            | Determines   | CasADi::Ipop |
->| g_option     |              |              | how ordering | tInternal    |
->|              |              |              | is done in   |              |
->|              |              |              | WSMP         |              |
->|              |              |              | (IPARM(16)   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_orderin | OT_INTEGER   | 1            | Determines   | CasADi::Ipop |
->| g_option2    |              |              | how ordering | tInternal    |
->|              |              |              | is done in   |              |
->|              |              |              | WSMP         |              |
->|              |              |              | (IPARM(20)   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
->|              |              |              | tolerance    | tInternal    |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver WSMP. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_pivtolm | OT_REAL      | 0.100        | Maximum      | CasADi::Ipop |
->| ax           |              |              | pivot        | tInternal    |
->|              |              |              | tolerance    |              |
->|              |              |              | for the      |              |
->|              |              |              | linear       |              |
->|              |              |              | solver WSMP. |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_scaling | OT_INTEGER   | 0            | Determines   | CasADi::Ipop |
->|              |              |              | how the      | tInternal    |
->|              |              |              | matrix is    |              |
->|              |              |              | scaled by    |              |
->|              |              |              | WSMP. (see   |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_singula | OT_REAL      | 0.000        | WSMP's       | CasADi::Ipop |
->| rity_thresho |              |              | singularity  | tInternal    |
->| ld           |              |              | threshold.   |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_skip_in | OT_STRING    | no           | Always       | CasADi::Ipop |
->| ertia_check  |              |              | pretent      | tInternal    |
->|              |              |              | inertia is   |              |
->|              |              |              | correct.     |              |
->|              |              |              | (see IPOPT d |              |
->|              |              |              | ocumentation |              |
->|              |              |              | )            |              |
->+--------------+--------------+--------------+--------------+--------------+
->| wsmp_write_m | OT_INTEGER   | -1           | Iteration in | CasADi::Ipop |
->| atrix_iterat |              |              | which the    | tInternal    |
->| ion          |              |              | matrices are |              |
->|              |              |              | written to   |              |
->|              |              |              | files. (see  |              |
->|              |              |              | IPOPT docume |              |
->|              |              |              | ntation)     |              |
->+--------------+--------------+--------------+--------------+--------------+
->
->>List of available monitors
->+-------------+-----------------------+
->|     Id      |        Used in        |
->+=============+=======================+
->| eval_f      | CasADi::IpoptInternal |
->+-------------+-----------------------+
->| eval_g      | CasADi::IpoptInternal |
->+-------------+-----------------------+
->| eval_grad_f | CasADi::IpoptInternal |
->+-------------+-----------------------+
->| eval_jac_g  | CasADi::IpoptInternal |
->+-------------+-----------------------+
->| inputs      | CasADi::FXInternal    |
->+-------------+-----------------------+
->| outputs     | CasADi::FXInternal    |
->+-------------+-----------------------+
->
->>List of available stats
->+--------------------+-----------------------+
->|         Id         |        Used in        |
->+====================+=======================+
->| con_integer_md     | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| con_numeric_md     | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| con_string_md      | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| iter_count         | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| iteration          | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| return_status      | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_callback_fun     | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_callback_prepare | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_eval_f           | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_eval_g           | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_eval_grad_f      | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_eval_h           | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_eval_jac_g       | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| t_mainloop         | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| var_integer_md     | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| var_numeric_md     | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->| var_string_md      | CasADi::IpoptInternal |
->+--------------------+-----------------------+
->
->Diagrams
->
->C++ includes: ipopt_solver.hpp 
--}
-newtype IpoptSolver = IpoptSolver (ForeignPtr IpoptSolver')
--- typeclass decl
-class IpoptSolverClass a where
-  castIpoptSolver :: a -> IpoptSolver
-instance IpoptSolverClass IpoptSolver where
-  castIpoptSolver = id
-
--- baseclass instances
-instance SharedObjectClass IpoptSolver where
-  castSharedObject (IpoptSolver x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass IpoptSolver where
-  castPrintableObject (IpoptSolver x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass IpoptSolver where
-  castIOInterfaceFX (IpoptSolver x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass IpoptSolver where
-  castOptionsFunctionality (IpoptSolver x) = OptionsFunctionality (castForeignPtr x)
-
-instance FXClass IpoptSolver where
-  castFX (IpoptSolver x) = FX (castForeignPtr x)
-
-
--- helper instances
-instance Marshal IpoptSolver (Ptr IpoptSolver') where
-  marshal (IpoptSolver x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (IpoptSolver x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__IpoptSolver" 
-  c_delete_CasADi__IpoptSolver :: FunPtr (Ptr IpoptSolver' -> IO ())
-instance WrapReturn (Ptr IpoptSolver') IpoptSolver where
-  wrapReturn = (fmap IpoptSolver) . (newForeignPtr c_delete_CasADi__IpoptSolver)
-
-
--- raw decl
-data SXMatrix'
--- data decl
-{-|
->General sparse matrix class General sparse matrix class that is designed
->with the idea that "everything is a matrix", that is, also scalars and
->vectors.  This philosophy makes it easy to use and to interface in
->particularily with Python and Matlab/Octave. .
->
->The syntax tries to stay as close as possible to the ublas syntax when it
->comes to vector/matrix operations.
->
->Index starts with 0.  Index flatten happens as follows: (i,j) -> k =
->j+i*size2()  Vectors are considered to be column vectors.
->
->The storage format is a (modified) compressed row storage (CRS) format. This
->way, a vector element can always be accessed in constant time.
->
->Matrix<T> is polymorphic with a std::vector<T> that contain all non-
->identical-zero elements.  The sparsity can be accessed with CRSSparsity&
->sparsity()
->
->Joel Andersson
->
->C++ includes: matrix.hpp 
--}
-newtype SXMatrix = SXMatrix (ForeignPtr SXMatrix')
--- typeclass decl
-class SXMatrixClass a where
-  castSXMatrix :: a -> SXMatrix
-instance SXMatrixClass SXMatrix where
-  castSXMatrix = id
-
--- baseclass instances
-instance PrintableObjectClass SXMatrix where
-  castPrintableObject (SXMatrix x) = PrintableObject (castForeignPtr x)
-
-
--- helper instances
-instance Marshal SXMatrix (Ptr SXMatrix') where
-  marshal (SXMatrix x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (SXMatrix x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__Matrix_CasADi__SX_" 
-  c_delete_CasADi__Matrix_CasADi__SX_ :: FunPtr (Ptr SXMatrix' -> IO ())
-instance WrapReturn (Ptr SXMatrix') SXMatrix where
-  wrapReturn = (fmap SXMatrix) . (newForeignPtr c_delete_CasADi__Matrix_CasADi__SX_)
-
-
--- raw decl
-data IOScheme'
--- data decl
-{-|
->Class with mapping between names and indices.
->
->Joris Gillis
->
->C++ includes: io_scheme.hpp 
--}
-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)
-
-instance PrintableObjectClass IOScheme where
-  castPrintableObject (IOScheme x) = PrintableObject (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 DMatrix'
--- data decl
-{-|
->General sparse matrix class General sparse matrix class that is designed
->with the idea that "everything is a matrix", that is, also scalars and
->vectors.  This philosophy makes it easy to use and to interface in
->particularily with Python and Matlab/Octave. .
->
->The syntax tries to stay as close as possible to the ublas syntax when it
->comes to vector/matrix operations.
->
->Index starts with 0.  Index flatten happens as follows: (i,j) -> k =
->j+i*size2()  Vectors are considered to be column vectors.
->
->The storage format is a (modified) compressed row storage (CRS) format. This
->way, a vector element can always be accessed in constant time.
->
->Matrix<T> is polymorphic with a std::vector<T> that contain all non-
->identical-zero elements.  The sparsity can be accessed with CRSSparsity&
->sparsity()
->
->Joel Andersson
->
->C++ includes: matrix.hpp 
--}
-newtype DMatrix = DMatrix (ForeignPtr DMatrix')
--- typeclass decl
-class DMatrixClass a where
-  castDMatrix :: a -> DMatrix
-instance DMatrixClass DMatrix where
-  castDMatrix = id
-
--- baseclass instances
-instance PrintableObjectClass DMatrix where
-  castPrintableObject (DMatrix x) = PrintableObject (castForeignPtr x)
-
-
--- 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__Matrix_double_" 
-  c_delete_CasADi__Matrix_double_ :: FunPtr (Ptr DMatrix' -> IO ())
-instance WrapReturn (Ptr DMatrix') DMatrix where
-  wrapReturn = (fmap DMatrix) . (newForeignPtr c_delete_CasADi__Matrix_double_)
-
-
--- raw decl
-data MX'
--- data decl
-{-|
->MX - Matrix expression The MX class is used to build up trees made up from
->MXNodes. It is a more general graph representation than the scalar
->expression, SX, and much less efficient for small objects. On the other
->hand, the class allows much more general operations than does SX, in
->particular matrix valued operations and calls to arbitrary differentiable
->functions.
->
->The MX class is designed to have identical syntax with the Matrix<> template
->class, and uses Matrix<double> as its internal representation of the values
->at a node. By keeping the syntaxes identical, it is possible to switch from
->one class to the other, as well as inlining MX functions to SX functions.
->
->Note that an operation is always "lazy", making a matrix multiplication
->will create a matrix multiplication node, not perform the actual
->multiplication.
->
->Joel Andersson
->
->C++ includes: mx.hpp 
--}
-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)
-
-instance PrintableObjectClass MX where
-  castPrintableObject (MX x) = PrintableObject (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 CasadiOptions'
--- data decl
-{-|
->Collects global CasADi options.
->
->Note to developers: use sparingly. Global options are - in general - a
->rather bad idea
->
->this class must never be instantiated. Access its static members directly
->
->Joris Gillis
->
->C++ includes: casadi_options.hpp 
--}
-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 Callback'
--- data decl
-{-|
->Callback.
->
->In C++, supply a CallbackCPtr function pointer
->
->In python, supply a callable, annotated with pycallback decorator
->
->C++ includes: functor.hpp 
--}
-newtype Callback = Callback (ForeignPtr Callback')
--- typeclass decl
-class CallbackClass a where
-  castCallback :: a -> Callback
-instance CallbackClass Callback where
-  castCallback = id
-
--- baseclass instances
-instance SharedObjectClass Callback where
-  castSharedObject (Callback x) = SharedObject (castForeignPtr x)
-
-instance FunctorClass Callback where
-  castFunctor (Callback x) = Functor (castForeignPtr x)
-
-instance PrintableObjectClass Callback where
-  castPrintableObject (Callback x) = PrintableObject (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 CustomEvaluate'
--- data decl
-{-|
->CustomEvaluate.
->
->In C++, supply a CustomEvaluateCPtr function pointer
->
->In python, supply a callable, annotated with pyevaluate decorator
->
->C++ includes: functor.hpp 
--}
-newtype CustomEvaluate = CustomEvaluate (ForeignPtr CustomEvaluate')
--- typeclass decl
-class CustomEvaluateClass a where
-  castCustomEvaluate :: a -> CustomEvaluate
-instance CustomEvaluateClass CustomEvaluate where
-  castCustomEvaluate = id
-
--- baseclass instances
-instance SharedObjectClass CustomEvaluate where
-  castSharedObject (CustomEvaluate x) = SharedObject (castForeignPtr x)
-
-instance FunctorClass CustomEvaluate where
-  castFunctor (CustomEvaluate x) = Functor (castForeignPtr x)
-
-instance PrintableObjectClass CustomEvaluate where
-  castPrintableObject (CustomEvaluate x) = PrintableObject (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 ExternalFunction'
--- data decl
-{-|
->Interface for a function that is not implemented by CasADi symbolics.
->
->Joel Andersson
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
->|              |              |              | calculate    | ternal       |
->|              |              |              | the          |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (forward:    |              |
->|              |              |              | only forward |              |
->|              |              |              | mode|reverse |              |
->|              |              |              | : only       |              |
->|              |              |              | adjoint mode |              |
->|              |              |              | |automatic:  |              |
->|              |              |              | a heuristic  |              |
->|              |              |              | decides      |              |
->|              |              |              | which is     |              |
->|              |              |              | more         |              |
->|              |              |              | appropriate) |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
->|              |              |              | indicate     | ternal       |
->|              |              |              | wether       |              |
->|              |              |              | statistics   |              |
->|              |              |              | must be      |              |
->|              |              |              | gathered     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->|              |              |              | exceptions   | ternal       |
->|              |              |              | when the     |              |
->|              |              |              | numerical    |              |
->|              |              |              | values of    |              |
->|              |              |              | the inputs   |              |
->|              |              |              | don't make   |              |
->|              |              |              | sense        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that returns | ternal       |
->|              |              |              | a Jacobian   |              |
->|              |              |              | function     |              |
->|              |              |              | given a set  |              |
->|              |              |              | of desired   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | blocks,      |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of J |              |
->|              |              |              | acobianGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
->|              | TOR          | )            | be activated | ternal       |
->|              |              |              | (inputs|outp |              |
->|              |              |              | uts)         |              |
->+--------------+--------------+--------------+--------------+--------------+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| j_dir        |              |              | adjoint      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| d_dir        |              |              | forward      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| ian          |              |              | Hessians     | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| bian         |              |              | Jacobians    | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->| heck         |              |              | exceptions   | ternal       |
->|              |              |              | when NaN or  |              |
->|              |              |              | Inf appears  |              |
->|              |              |              | during       |              |
->|              |              |              | evaluation   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
->|              |              |              | sparse       | ternal       |
->+--------------+--------------+--------------+--------------+--------------+
->| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that         | ternal       |
->|              |              |              | provides     |              |
->|              |              |              | sparsity for |              |
->|              |              |              | a given      |              |
->|              |              |              | input output |              |
->|              |              |              | block,       |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of S |              |
->|              |              |              | parsityGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
->| ans          |              |              | references   | ternal       |
->|              |              |              | to generated |              |
->|              |              |              | Jacobians in |              |
->|              |              |              | order to     |              |
->|              |              |              | avoid        |              |
->|              |              |              | generating   |              |
->|              |              |              | identical    |              |
->|              |              |              | Jacobians    |              |
->|              |              |              | multiple     |              |
->|              |              |              | times        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
->|              |              | )            | defined      | ternal       |
->|              |              |              | field that   |              |
->|              |              |              | can be used  |              |
->|              |              |              | to identify  |              |
->|              |              |              | the function |              |
->|              |              |              | or pass      |              |
->|              |              |              | additional   |              |
->|              |              |              | information  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
->|              |              |              | evaluation   | ternal       |
->|              |              |              | for          |              |
->|              |              |              | debugging    |              |
->+--------------+--------------+--------------+--------------+--------------+
->
->Diagrams
->
->C++ includes: external_function.hpp 
--}
-newtype ExternalFunction = ExternalFunction (ForeignPtr ExternalFunction')
--- typeclass decl
-class ExternalFunctionClass a where
-  castExternalFunction :: a -> ExternalFunction
-instance ExternalFunctionClass ExternalFunction where
-  castExternalFunction = id
-
--- baseclass instances
-instance SharedObjectClass ExternalFunction where
-  castSharedObject (ExternalFunction x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass ExternalFunction where
-  castPrintableObject (ExternalFunction x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass ExternalFunction where
-  castIOInterfaceFX (ExternalFunction x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass ExternalFunction where
-  castOptionsFunctionality (ExternalFunction x) = OptionsFunctionality (castForeignPtr x)
-
-instance FXClass ExternalFunction where
-  castFX (ExternalFunction x) = FX (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 CSparse'
--- data decl
-{-|
->LinearSolver with CSparse Interface.
->
->Solves the linear system X*A = B or X*A^T = B for X with A square and non-
->singular
->
->If A is structurally singular, an error will be thrown during init. If A is
->numerically singular, the prepare step will fail.
->
->Note: the transposed form is equivalent to A X^T = B^T which is the same as
->A x = b with x = X^T, b = B^T
->
->CSparse is an CasADi::FX mapping from 2 inputs [ A (matrix),b (vector)] to
->one output [x (vector)].
->
->The usual procedure to use CSparse is:  init()
->
->set the first input (A)
->
->prepare()
->
->set the second input (b)
->
->solve()
->
->Repeat steps 4 and 5 to work with other b vectors.
->
->The method evaluate() combines the prepare() and solve() step and is
->therefore more expensive if A is invariant.
->
->>Input scheme: CasADi::LinsolInput (LINSOL_NUM_IN = 4) [linsolIn]
->+-----------+-------+------------------------------------------------+
->| Full name | Short |                  Description                   |
->+===========+=======+================================================+
->| LINSOL_A  | A     | The square matrix A: sparse, (n x n). .        |
->+-----------+-------+------------------------------------------------+
->| LINSOL_B  | B     | The right-hand-side matrix b: dense, (m x n) . |
->+-----------+-------+------------------------------------------------+
->
->>Output scheme: CasADi::LinsolOutput (LINSOL_NUM_OUT = 2) [linsolOut]
->+-----------+-------+----------------------------------------------+
->| Full name | Short |                 Description                  |
->+===========+=======+==============================================+
->| LINSOL_X  | X     | Solution to the linear system of equations . |
->+-----------+-------+----------------------------------------------+
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
->|              |              |              | calculate    | ternal       |
->|              |              |              | the          |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (forward:    |              |
->|              |              |              | only forward |              |
->|              |              |              | mode|reverse |              |
->|              |              |              | : only       |              |
->|              |              |              | adjoint mode |              |
->|              |              |              | |automatic:  |              |
->|              |              |              | a heuristic  |              |
->|              |              |              | decides      |              |
->|              |              |              | which is     |              |
->|              |              |              | more         |              |
->|              |              |              | appropriate) |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
->|              |              |              | indicate     | ternal       |
->|              |              |              | wether       |              |
->|              |              |              | statistics   |              |
->|              |              |              | must be      |              |
->|              |              |              | gathered     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->|              |              |              | exceptions   | ternal       |
->|              |              |              | when the     |              |
->|              |              |              | numerical    |              |
->|              |              |              | values of    |              |
->|              |              |              | the inputs   |              |
->|              |              |              | don't make   |              |
->|              |              |              | sense        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that returns | ternal       |
->|              |              |              | a Jacobian   |              |
->|              |              |              | function     |              |
->|              |              |              | given a set  |              |
->|              |              |              | of desired   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | blocks,      |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of J |              |
->|              |              |              | acobianGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
->|              | TOR          | )            | be activated | ternal       |
->|              |              |              | (inputs|outp |              |
->|              |              |              | uts)         |              |
->+--------------+--------------+--------------+--------------+--------------+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| j_dir        |              |              | adjoint      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| d_dir        |              |              | forward      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| ian          |              |              | Hessians     | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| bian         |              |              | Jacobians    | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->| heck         |              |              | exceptions   | ternal       |
->|              |              |              | when NaN or  |              |
->|              |              |              | Inf appears  |              |
->|              |              |              | during       |              |
->|              |              |              | evaluation   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
->|              |              |              | sparse       | ternal       |
->+--------------+--------------+--------------+--------------+--------------+
->| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that         | ternal       |
->|              |              |              | provides     |              |
->|              |              |              | sparsity for |              |
->|              |              |              | a given      |              |
->|              |              |              | input output |              |
->|              |              |              | block,       |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of S |              |
->|              |              |              | parsityGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
->| ans          |              |              | references   | ternal       |
->|              |              |              | to generated |              |
->|              |              |              | Jacobians in |              |
->|              |              |              | order to     |              |
->|              |              |              | avoid        |              |
->|              |              |              | generating   |              |
->|              |              |              | identical    |              |
->|              |              |              | Jacobians    |              |
->|              |              |              | multiple     |              |
->|              |              |              | times        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
->|              |              | )            | defined      | ternal       |
->|              |              |              | field that   |              |
->|              |              |              | can be used  |              |
->|              |              |              | to identify  |              |
->|              |              |              | the function |              |
->|              |              |              | or pass      |              |
->|              |              |              | additional   |              |
->|              |              |              | information  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
->|              |              |              | evaluation   | ternal       |
->|              |              |              | for          |              |
->|              |              |              | debugging    |              |
->+--------------+--------------+--------------+--------------+--------------+
->
->Diagrams
->
->C++ includes: csparse.hpp 
--}
-newtype CSparse = CSparse (ForeignPtr CSparse')
--- typeclass decl
-class CSparseClass a where
-  castCSparse :: a -> CSparse
-instance CSparseClass CSparse where
-  castCSparse = id
-
--- baseclass instances
-instance SharedObjectClass CSparse where
-  castSharedObject (CSparse x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass CSparse where
-  castPrintableObject (CSparse x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass CSparse where
-  castIOInterfaceFX (CSparse x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass CSparse where
-  castOptionsFunctionality (CSparse x) = OptionsFunctionality (castForeignPtr x)
-
-instance FXClass CSparse where
-  castFX (CSparse x) = FX (castForeignPtr x)
-
-
--- helper instances
-instance Marshal CSparse (Ptr CSparse') where
-  marshal (CSparse x) = return (unsafeForeignPtrToPtr x)
-  marshalFree (CSparse x) _ = touchForeignPtr x
-foreign import ccall unsafe "&delete_CasADi__CSparse" 
-  c_delete_CasADi__CSparse :: FunPtr (Ptr CSparse' -> IO ())
-instance WrapReturn (Ptr CSparse') CSparse where
-  wrapReturn = (fmap CSparse) . (newForeignPtr c_delete_CasADi__CSparse)
-
-
--- raw decl
-data SX'
--- data decl
-{-|
->The basic scalar symbolic class of CasADi.
->
->Joel Andersson
->
->C++ includes: sx.hpp 
--}
-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 CasadiMeta'
--- data decl
-{-|
->Collects global CasADi meta information.
->
->Joris Gillis
->
->C++ includes: casadi_meta.hpp 
--}
-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 Functor'
--- data decl
-{-|
->Internal class for Functor.
->
->Joris Gillis
->
->C++ includes: functor.hpp 
--}
-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)
-
-instance PrintableObjectClass Functor where
-  castPrintableObject (Functor x) = PrintableObject (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 CustomFunction'
--- data decl
-{-|
->Interface to a custom function.
->
->Note: max_number_of_fwd_dir and max_number_of_adj_dir will be default zero
->
->Joel Andersson
->
->>List of available options
->+--------------+--------------+--------------+--------------+--------------+
->|      Id      |     Type     |   Default    | Description  |   Used in    |
->+==============+==============+==============+==============+==============+
->| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
->|              |              |              | calculate    | ternal       |
->|              |              |              | the          |              |
->|              |              |              | Jacobians.   |              |
->|              |              |              | (forward:    |              |
->|              |              |              | only forward |              |
->|              |              |              | mode|reverse |              |
->|              |              |              | : only       |              |
->|              |              |              | adjoint mode |              |
->|              |              |              | |automatic:  |              |
->|              |              |              | a heuristic  |              |
->|              |              |              | decides      |              |
->|              |              |              | which is     |              |
->|              |              |              | more         |              |
->|              |              |              | appropriate) |              |
->+--------------+--------------+--------------+--------------+--------------+
->| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
->|              |              |              | indicate     | ternal       |
->|              |              |              | wether       |              |
->|              |              |              | statistics   |              |
->|              |              |              | must be      |              |
->|              |              |              | gathered     |              |
->+--------------+--------------+--------------+--------------+--------------+
->| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->|              |              |              | exceptions   | ternal       |
->|              |              |              | when the     |              |
->|              |              |              | numerical    |              |
->|              |              |              | values of    |              |
->|              |              |              | the inputs   |              |
->|              |              |              | don't make   |              |
->|              |              |              | sense        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that returns | ternal       |
->|              |              |              | a Jacobian   |              |
->|              |              |              | function     |              |
->|              |              |              | given a set  |              |
->|              |              |              | of desired   |              |
->|              |              |              | Jacobian     |              |
->|              |              |              | blocks,      |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of J |              |
->|              |              |              | acobianGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
->| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
->|              |              |              | " to grow    |              |
->|              |              |              | until it     |              |
->|              |              |              | reaches this |              |
->|              |              |              | number       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
->|              | TOR          | )            | be activated | ternal       |
->|              |              |              | (inputs|outp |              |
->|              |              |              | uts)         |              |
->+--------------+--------------+--------------+--------------+--------------+
->| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
->|              |              | red_object"  | object       | onsFunctiona |
->|              |              |              |              | lityNode     |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| j_dir        |              |              | adjoint      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
->| d_dir        |              |              | forward      | ternal       |
->|              |              |              | derivatives  |              |
->|              |              |              | to be        |              |
->|              |              |              | calculated s |              |
->|              |              |              | imultanously |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| ian          |              |              | Hessians     | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
->| bian         |              |              | Jacobians    | ternal       |
->|              |              |              | numerically  |              |
->|              |              |              | (using       |              |
->|              |              |              | directional  |              |
->|              |              |              | derivatives) |              |
->|              |              |              | rather than  |              |
->|              |              |              | with the     |              |
->|              |              |              | built-in     |              |
->|              |              |              | method       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
->| heck         |              |              | exceptions   | ternal       |
->|              |              |              | when NaN or  |              |
->|              |              |              | Inf appears  |              |
->|              |              |              | during       |              |
->|              |              |              | evaluation   |              |
->+--------------+--------------+--------------+--------------+--------------+
->| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
->|              |              |              | sparse       | ternal       |
->+--------------+--------------+--------------+--------------+--------------+
->| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
->| erator       | ENERATOR     | )            | that         | ternal       |
->|              |              |              | provides     |              |
->|              |              |              | sparsity for |              |
->|              |              |              | a given      |              |
->|              |              |              | input output |              |
->|              |              |              | block,       |              |
->|              |              |              | overrides    |              |
->|              |              |              | internal     |              |
->|              |              |              | routines.    |              |
->|              |              |              | Check docume |              |
->|              |              |              | ntation of S |              |
->|              |              |              | parsityGener |              |
->|              |              |              | ator .       |              |
->+--------------+--------------+--------------+--------------+--------------+
->| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
->| ans          |              |              | references   | ternal       |
->|              |              |              | to generated |              |
->|              |              |              | Jacobians in |              |
->|              |              |              | order to     |              |
->|              |              |              | avoid        |              |
->|              |              |              | generating   |              |
->|              |              |              | identical    |              |
->|              |              |              | Jacobians    |              |
->|              |              |              | multiple     |              |
->|              |              |              | times        |              |
->+--------------+--------------+--------------+--------------+--------------+
->| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
->|              |              | )            | defined      | ternal       |
->|              |              |              | field that   |              |
->|              |              |              | can be used  |              |
->|              |              |              | to identify  |              |
->|              |              |              | the function |              |
->|              |              |              | or pass      |              |
->|              |              |              | additional   |              |
->|              |              |              | information  |              |
->+--------------+--------------+--------------+--------------+--------------+
->| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
->|              |              |              | evaluation   | ternal       |
->|              |              |              | for          |              |
->|              |              |              | debugging    |              |
->+--------------+--------------+--------------+--------------+--------------+
->
->Diagrams
->
->C++ includes: custom_function.hpp 
--}
-newtype CustomFunction = CustomFunction (ForeignPtr CustomFunction')
--- typeclass decl
-class CustomFunctionClass a where
-  castCustomFunction :: a -> CustomFunction
-instance CustomFunctionClass CustomFunction where
-  castCustomFunction = id
-
--- baseclass instances
-instance SharedObjectClass CustomFunction where
-  castSharedObject (CustomFunction x) = SharedObject (castForeignPtr x)
-
-instance PrintableObjectClass CustomFunction where
-  castPrintableObject (CustomFunction x) = PrintableObject (castForeignPtr x)
-
-instance IOInterfaceFXClass CustomFunction where
-  castIOInterfaceFX (CustomFunction x) = IOInterfaceFX (castForeignPtr x)
-
-instance OptionsFunctionalityClass CustomFunction where
-  castOptionsFunctionality (CustomFunction x) = OptionsFunctionality (castForeignPtr x)
-
-instance FXClass CustomFunction where
-  castFX (CustomFunction x) = FX (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)
+>[INTERNAL]  Dynamically created
+>function that can be expanded into a series of scalar operations.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| just_in_time | OT_BOOLEAN   | false        | Just-in-time | CasADi::SXFu |
+>| _opencl      |              |              | compilation  | nctionIntern |
+>|              |              |              | for numeric  | al           |
+>|              |              |              | evaluation   |              |
+>|              |              |              | using OpenCL |              |
+>|              |              |              | (experimenta |              |
+>|              |              |              | l)           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| just_in_time | OT_BOOLEAN   | false        | Propagate    | CasADi::SXFu |
+>| _sparsity    |              |              | sparsity     | nctionIntern |
+>|              |              |              | patterns     | al           |
+>|              |              |              | using just-  |              |
+>|              |              |              | in-time      |              |
+>|              |              |              | compilation  |              |
+>|              |              |              | to a CPU or  |              |
+>|              |              |              | GPU using    |              |
+>|              |              |              | OpenCL       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: sx_function.hpp 
+-}
+newtype SXFunction = SXFunction (ForeignPtr SXFunction')
+-- typeclass decl
+class SXFunctionClass a where
+  castSXFunction :: a -> SXFunction
+instance SXFunctionClass SXFunction where
+  castSXFunction = id
+
+-- baseclass instances
+instance SharedObjectClass SXFunction where
+  castSharedObject (SXFunction x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SXFunction where
+  castPrintableObject (SXFunction x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SXFunction where
+  castOptionsFunctionality (SXFunction x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SXFunction where
+  castFunction (SXFunction x) = Function (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 RKIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Fixed-step explicit
+>Runge-Kutta integrator for ODEs Currently implements RK4.
+>
+>The method is still under development
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_fi | OT_INTEGER   | 20           | Number of    | CasADi::Fixe |
+>| nite_element |              |              | finite       | dStepIntegra |
+>| s            |              |              | elements     | torInternal  |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: rk_integrator.hpp 
+-}
+newtype RKIntegrator = RKIntegrator (ForeignPtr RKIntegrator')
+-- typeclass decl
+class RKIntegratorClass a where
+  castRKIntegrator :: a -> RKIntegrator
+instance RKIntegratorClass RKIntegrator where
+  castRKIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass RKIntegrator where
+  castSharedObject (RKIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass RKIntegrator where
+  castPrintableObject (RKIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance FixedStepIntegratorClass RKIntegrator where
+  castFixedStepIntegrator (RKIntegrator x) = FixedStepIntegrator (castForeignPtr x)
+
+instance OptionsFunctionalityClass RKIntegrator where
+  castOptionsFunctionality (RKIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass RKIntegrator where
+  castFunction (RKIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass RKIntegrator where
+  castIntegrator (RKIntegrator x) = Integrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass RKIntegrator where
+  castIOInterfaceFunction (RKIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal RKIntegrator (Ptr RKIntegrator') where
+  marshal (RKIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (RKIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__RKIntegrator" 
+  c_delete_CasADi__RKIntegrator :: FunPtr (Ptr RKIntegrator' -> IO ())
+instance WrapReturn (Ptr RKIntegrator') RKIntegrator where
+  wrapReturn = (fmap RKIntegrator) . (newForeignPtr c_delete_CasADi__RKIntegrator)
+
+
+-- raw decl
+data SQPMethod'
+-- data decl
+{-|
+>[INTERNAL]  Sequential Quadratic
+>Programming method.
+>
+>The algorithm is a classical SQP method with either exact (may be also
+>provided) or damped BFGS Lagrange Hessian approximation. Two different line-
+>search algorithms are available. First, Armijo (Wolfe) condition with
+>backtracking (suffers from Maratos effect). Seco::ifndef
+>WITHOUT_PRE_1_9_Xnd, a line-search method that checks if the merit function
+>is lower than the last k values (no Maratos effect). Both methods employ the
+>L1 merit function.
+>
+>The method solves the problems of form:min          F(x) x  subject to LBG
+><= G(x) <= UBG LBX <=   x  <= UBX
+>
+>Nonlinear equalities can be introduced by setting LBG and UBG equal at the
+>correct positions.
+>
+>The method is still under development and should be used with care
+>
+>Attila Kozma, Joel Andersson and Joris Gillis
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| beta         | OT_REAL      | 0.800        | Line-search  | CasADi::SQPI |
+>|              |              |              | parameter,   | nternal      |
+>|              |              |              | restoration  |              |
+>|              |              |              | factor of    |              |
+>|              |              |              | stepsize     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| c1           | OT_REAL      | 0.000        | Armijo       | CasADi::SQPI |
+>|              |              |              | condition,   | nternal      |
+>|              |              |              | coefficient  |              |
+>|              |              |              | of decrease  |              |
+>|              |              |              | in merit     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
+>|              |              |              | NLP function | olverInterna |
+>|              |              |              | in terms of  | l            |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | objective    | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | constraint   | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option. Use  | olverInterna |
+>|              |              |              | Gauss Newton | l            |
+>|              |              |              | Hessian appr |              |
+>|              |              |              | oximation    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| dient        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate a   | l            |
+>|              |              |              | function for |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| sian         |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Hessian of   |              |
+>|              |              |              | the          |              |
+>|              |              |              | Lagrangian   |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| obian        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Jacobian of  |              |
+>|              |              |              | the          |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hessian_appr | OT_STRING    | "exact"      | limited-     | CasADi::SQPI |
+>| oximation    |              |              | memory|exact | nternal      |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| _vec         |              |              | true, the    | olverInterna |
+>|              |              |              | input shape  | l            |
+>|              |              |              | of F will    |              |
+>|              |              |              | not be       |              |
+>|              |              |              | checked.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
+>| llback       |              | )            | that will be | olverInterna |
+>|              |              |              | called at    | l            |
+>|              |              |              | each         |              |
+>|              |              |              | iteration    |              |
+>|              |              |              | with the     |              |
+>|              |              |              | solver as    |              |
+>|              |              |              | input. Check |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n of         |              |
+>|              |              |              | Callback .   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| llback_ignor |              |              | true, errors | olverInterna |
+>| e_errors     |              |              | thrown by it | l            |
+>|              |              |              | eration_call |              |
+>|              |              |              | back will be |              |
+>|              |              |              | ignored.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
+>| llback_step  |              |              | the callback | olverInterna |
+>|              |              |              | function     | l            |
+>|              |              |              | every few    |              |
+>|              |              |              | iterations.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lbfgs_memory | OT_INTEGER   | 10           | Size of      | CasADi::SQPI |
+>|              |              |              | L-BFGS       | nternal      |
+>|              |              |              | memory.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter     | OT_INTEGER   | 50           | Maximum      | CasADi::SQPI |
+>|              |              |              | number of    | nternal      |
+>|              |              |              | SQP          |              |
+>|              |              |              | iterations   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter_ls  | OT_INTEGER   | 3            | Maximum      | CasADi::SQPI |
+>|              |              |              | number of    | nternal      |
+>|              |              |              | linesearch   |              |
+>|              |              |              | iterations   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| merit_memory | OT_INTEGER   | 4            | Size of      | CasADi::SQPI |
+>|              |              |              | memory to    | nternal      |
+>|              |              |              | store        |              |
+>|              |              |              | history of   |              |
+>|              |              |              | merit        |              |
+>|              |              |              | function     |              |
+>|              |              |              | values       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| min_step_siz | OT_REAL      | 0.000        | The size     | CasADi::SQPI |
+>| e            |              |              | (inf-norm)   | nternal      |
+>|              |              |              | of the step  |              |
+>|              |              |              | size should  |              |
+>|              |              |              | not become   |              |
+>|              |              |              | smaller than |              |
+>|              |              |              | this.        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::SQPI |
+>|              |              |              | uts)  (eval_ | nternal      |
+>|              |              |              | f|eval_g|eva |              |
+>|              |              |              | l_jac_g|eval |              |
+>|              |              |              | _grad_f|eval |              |
+>|              |              |              | _h|qp|dx)    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option.      | olverInterna |
+>|              |              |              | Expect F, G, | l            |
+>|              |              |              | H, J to have |              |
+>|              |              |              | an           |              |
+>|              |              |              | additional   |              |
+>|              |              |              | input        |              |
+>|              |              |              | argument     |              |
+>|              |              |              | appended at  |              |
+>|              |              |              | the end,     |              |
+>|              |              |              | denoting     |              |
+>|              |              |              | fixed        |              |
+>|              |              |              | parameters.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_header | OT_BOOLEAN   | true         | Print the    | CasADi::SQPI |
+>|              |              |              | header with  | nternal      |
+>|              |              |              | problem      |              |
+>|              |              |              | statistics   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_time   | OT_BOOLEAN   | true         | Print        | CasADi::SQPI |
+>|              |              |              | information  | nternal      |
+>|              |              |              | about        |              |
+>|              |              |              | execution    |              |
+>|              |              |              | time         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver    | OT_QPSOLVER  | GenericType( | The QP       | CasADi::SQPI |
+>|              |              | )            | solver to be | nternal      |
+>|              |              |              | used by the  |              |
+>|              |              |              | SQP method   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::SQPI |
+>| tions        | Y            | )            | be passed to | nternal      |
+>|              |              |              | the QP       |              |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularize   | OT_BOOLEAN   | false        | Automatic re | CasADi::SQPI |
+>|              |              |              | gularization | nternal      |
+>|              |              |              | of Lagrange  |              |
+>|              |              |              | Hessian.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_du       | OT_REAL      | 0.000        | Stopping     | CasADi::SQPI |
+>|              |              |              | criterion    | nternal      |
+>|              |              |              | for dual inf |              |
+>|              |              |              | easability   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_pr       | OT_REAL      | 0.000        | Stopping     | CasADi::SQPI |
+>|              |              |              | criterion    | nternal      |
+>|              |              |              | for primal i |              |
+>|              |              |              | nfeasibility |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
+>| _bounds      |              |              | initial      | olverInterna |
+>|              |              |              | guess does   | l            |
+>|              |              |              | not satisfy  |              |
+>|              |              |              | LBX and UBX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+-------------+--------------------------+
+>|     Id      |         Used in          |
+>+=============+==========================+
+>| dx          | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>| eval_f      | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>| eval_g      | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>| eval_grad_f | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>| eval_h      | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>| eval_jac_g  | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>| inputs      | CasADi::FunctionInternal |
+>+-------------+--------------------------+
+>| outputs     | CasADi::FunctionInternal |
+>+-------------+--------------------------+
+>| qp          | CasADi::SQPInternal      |
+>+-------------+--------------------------+
+>
+>>List of available stats
+>+--------------------+---------------------+
+>|         Id         |       Used in       |
+>+====================+=====================+
+>| iter_count         | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| iteration          | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| iterations         | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| n_eval_f           | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| n_eval_g           | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| n_eval_grad_f      | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| n_eval_h           | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| n_eval_jac_g       | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| return_status      | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_callback_fun     | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_callback_prepare | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_eval_f           | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_eval_g           | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_eval_grad_f      | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_eval_h           | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_eval_jac_g       | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>| t_mainloop         | CasADi::SQPInternal |
+>+--------------------+---------------------+
+>
+>Diagrams
+>
+>C++ includes: sqp_method.hpp 
+-}
+newtype SQPMethod = SQPMethod (ForeignPtr SQPMethod')
+-- typeclass decl
+class SQPMethodClass a where
+  castSQPMethod :: a -> SQPMethod
+instance SQPMethodClass SQPMethod where
+  castSQPMethod = id
+
+-- baseclass instances
+instance SharedObjectClass SQPMethod where
+  castSharedObject (SQPMethod x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SQPMethod where
+  castPrintableObject (SQPMethod x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SQPMethod where
+  castOptionsFunctionality (SQPMethod x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SQPMethod where
+  castFunction (SQPMethod x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SQPMethod where
+  castIOInterfaceFunction (SQPMethod x) = IOInterfaceFunction (castForeignPtr x)
+
+instance NLPSolverClass SQPMethod where
+  castNLPSolver (SQPMethod x) = NLPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SQPMethod (Ptr SQPMethod') where
+  marshal (SQPMethod x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SQPMethod x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SQPMethod" 
+  c_delete_CasADi__SQPMethod :: FunPtr (Ptr SQPMethod' -> IO ())
+instance WrapReturn (Ptr SQPMethod') SQPMethod where
+  wrapReturn = (fmap SQPMethod) . (newForeignPtr c_delete_CasADi__SQPMethod)
+
+
+-- raw decl
+data SharedObject'
+-- data decl
+{-|
+>[INTERNAL]   SharedObject
+>implements a reference counting framework simular for effient and easily-
+>maintained memory management.
+>
+>To use the class, both the SharedObject class (the public class), and the
+>SharedObjectNode class (the internal class) must be inherited from. It can
+>be done in two different files and together with memory management, this
+>approach provides a clear destinction of which methods of the class are to
+>be considered "public", i.e. methods for public use that can be considered
+>to remain over time with small changes, and the internal memory.
+>
+>When interfacing a software, which typically includes including some header
+>file, this is best done only in the file where the internal class is
+>defined, to avoid polluting the global namespace and other side effects.
+>
+>The default constructor always means creating a null pointer to an internal
+>class only. To allocate an internal class (this works only when the internal
+>class isn't abstract), use the constructor with arguments.
+>
+>The copy constructor and the assignment operator perform shallow copies
+>only, to make a deep copy you must use the clone method explictly. This will
+>give a shared pointer instance.
+>
+>In an inheritance hierarchy, you can cast down automatically, e.g. (
+>SXFunction is a child class of Function): SXFunction derived(...); Function
+>base = derived;
+>
+>To cast up, use the shared_cast template function, which works analogously
+>to dynamic_cast, static_cast, const_cast etc, e.g.: SXFunction derived(...);
+>Function base = derived; SXFunction derived_from_base =
+>shared_cast<SXFunction>(base);
+>
+>A failed shared_cast will result in a null pointer (cf. dynamic_cast)
+>
+>Joel Andersson
+>
+>C++ includes: shared_object.hpp 
+-}
+newtype SharedObject = SharedObject (ForeignPtr SharedObject')
+-- typeclass decl
+class SharedObjectClass a where
+  castSharedObject :: a -> SharedObject
+instance SharedObjectClass SharedObject where
+  castSharedObject = id
+
+-- baseclass instances
+instance PrintableObjectClass SharedObject where
+  castPrintableObject (SharedObject x) = PrintableObject (castForeignPtr x)
+
+
+-- 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 MXFunction'
+-- data decl
+{-|
+>[INTERNAL]  General function
+>mapping from/to MX.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: mx_function.hpp 
+-}
+newtype MXFunction = MXFunction (ForeignPtr MXFunction')
+-- typeclass decl
+class MXFunctionClass a where
+  castMXFunction :: a -> MXFunction
+instance MXFunctionClass MXFunction where
+  castMXFunction = id
+
+-- baseclass instances
+instance SharedObjectClass MXFunction where
+  castSharedObject (MXFunction x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass MXFunction where
+  castPrintableObject (MXFunction x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass MXFunction where
+  castOptionsFunctionality (MXFunction x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass MXFunction where
+  castFunction (MXFunction x) = Function (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 HomotopyNLPSolver'
+-- data decl
+{-|
+>[INTERNAL]  Base class for
+>Homotopy NLP Solvers.
+>
+>Solves the following parametric nonlinear program (NLP):min
+>F(x,p,tau)  x  subject to             LBX <=   x    <= UBX             LBG
+><= G(x,p) <= UBG                        p  == P nx: number of decision
+>variables     ng: number of constraints     np: number of parameters
+>
+>In a homotopy from tau = 0 to tau = 1.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::Homo |
+>|              |              |              | NLP function | topyNLPInter |
+>|              |              |              | in terms of  | nal          |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: homotopy_nlp_solver.hpp 
+-}
+newtype HomotopyNLPSolver = HomotopyNLPSolver (ForeignPtr HomotopyNLPSolver')
+-- typeclass decl
+class HomotopyNLPSolverClass a where
+  castHomotopyNLPSolver :: a -> HomotopyNLPSolver
+instance HomotopyNLPSolverClass HomotopyNLPSolver where
+  castHomotopyNLPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass HomotopyNLPSolver where
+  castSharedObject (HomotopyNLPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass HomotopyNLPSolver where
+  castPrintableObject (HomotopyNLPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass HomotopyNLPSolver where
+  castOptionsFunctionality (HomotopyNLPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass HomotopyNLPSolver where
+  castFunction (HomotopyNLPSolver x) = Function (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 StabilizedQPSolver'
+-- data decl
+{-|
+>[INTERNAL]
+>StabilizedQPSolver.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with :       H sparse (n x n) positive
+>definite       g dense  (n x 1) n: number of decision variables (x)     nc:
+>number of constraints (A)
+>
+>If H is not positive-definite, the solver should throw an error.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::StabilizedQPSolverInput (STABILIZED_QP_SOLVER_NUM_IN = 13) [stabilizedQpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| STABILIZED_QP_SOLVER_H | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_G | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_A | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_L | lba                    | dense, (nc x 1)        |
+>| BA                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_U | uba                    | dense, (nc x 1)        |
+>| BA                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_L | lbx                    | dense, (n x 1)         |
+>| BX                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_U | ubx                    | dense, (n x 1)         |
+>| BX                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_X | x0                     | dense, (n x 1)         |
+>| 0                      |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_L | lam_x0                 | dense                  |
+>| AM_X0                  |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_M | muR                    | dense (1 x 1)          |
+>| UR                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_M | muE                    | dense (nc x 1)         |
+>| UE                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_M | mu                     | dense (nc x 1)         |
+>| U                      |                        |                        |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QPSolverOutput (QP_SOLVER_NUM_OUT = 5) [qpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: stabilized_qp_solver.hpp 
+-}
+newtype StabilizedQPSolver = StabilizedQPSolver (ForeignPtr StabilizedQPSolver')
+-- typeclass decl
+class StabilizedQPSolverClass a where
+  castStabilizedQPSolver :: a -> StabilizedQPSolver
+instance StabilizedQPSolverClass StabilizedQPSolver where
+  castStabilizedQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass StabilizedQPSolver where
+  castSharedObject (StabilizedQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass StabilizedQPSolver where
+  castPrintableObject (StabilizedQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass StabilizedQPSolver where
+  castOptionsFunctionality (StabilizedQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass StabilizedQPSolver where
+  castFunction (StabilizedQPSolver x) = Function (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
+{-|
+>[INTERNAL]  A symbolic NLP
+>representation.
+>
+>Joel Andersson
+>
+>C++ includes: symbolic_nlp.hpp 
+-}
+newtype SymbolicNLP = SymbolicNLP (ForeignPtr SymbolicNLP')
+-- typeclass decl
+class SymbolicNLPClass a where
+  castSymbolicNLP :: a -> SymbolicNLP
+instance SymbolicNLPClass SymbolicNLP where
+  castSymbolicNLP = id
+
+-- baseclass instances
+instance PrintableObjectClass SymbolicNLP where
+  castPrintableObject (SymbolicNLP x) = PrintableObject (castForeignPtr x)
+
+
+-- 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 CSparse'
+-- data decl
+{-|
+>[INTERNAL]   LinearSolver with
+>CSparse Interface.
+>
+>Solves the linear system A*X = B or A^T*X = B for X with A square and non-
+>singular
+>
+>If A is structurally singular, an error will be thrown during init. If A is
+>numerically singular, the prepare step will fail.
+>
+>CSparse is an CasADi::Function mapping from 2 inputs [ A (matrix),b
+>(vector)] to one output [x (vector)].
+>
+>The usual procedure to use CSparse is:  init()
+>
+>set the first input (A)
+>
+>prepare()
+>
+>set the second input (b)
+>
+>solve()
+>
+>Repeat steps 4 and 5 to work with other b vectors.
+>
+>The method evaluate() combines the prepare() and solve() step and is
+>therefore more expensive if A is invariant.
+>
+>>Input scheme: CasADi::LinsolInput (LINSOL_NUM_IN = 3) [linsolIn]
+>+-----------+-------+------------------------------------------------+
+>| Full name | Short |                  Description                   |
+>+===========+=======+================================================+
+>| LINSOL_A  | A     | The square matrix A: sparse, (n x n). .        |
+>+-----------+-------+------------------------------------------------+
+>| LINSOL_B  | B     | The right-hand-side matrix b: dense, (n x m) . |
+>+-----------+-------+------------------------------------------------+
+>
+>>Output scheme: CasADi::LinsolOutput (LINSOL_NUM_OUT = 2) [linsolOut]
+>+-----------+-------+----------------------------------------------+
+>| Full name | Short |                 Description                  |
+>+===========+=======+==============================================+
+>| LINSOL_X  | X     | Solution to the linear system of equations . |
+>+-----------+-------+----------------------------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: csparse.hpp 
+-}
+newtype CSparse = CSparse (ForeignPtr CSparse')
+-- typeclass decl
+class CSparseClass a where
+  castCSparse :: a -> CSparse
+instance CSparseClass CSparse where
+  castCSparse = id
+
+-- baseclass instances
+instance SharedObjectClass CSparse where
+  castSharedObject (CSparse x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass CSparse where
+  castPrintableObject (CSparse x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass CSparse where
+  castOptionsFunctionality (CSparse x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass CSparse where
+  castFunction (CSparse x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass CSparse where
+  castIOInterfaceFunction (CSparse x) = IOInterfaceFunction (castForeignPtr x)
+
+instance LinearSolverClass CSparse where
+  castLinearSolver (CSparse x) = LinearSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal CSparse (Ptr CSparse') where
+  marshal (CSparse x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (CSparse x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__CSparse" 
+  c_delete_CasADi__CSparse :: FunPtr (Ptr CSparse' -> IO ())
+instance WrapReturn (Ptr CSparse') CSparse where
+  wrapReturn = (fmap CSparse) . (newForeignPtr c_delete_CasADi__CSparse)
+
+
+-- raw decl
+data PrintableObject'
+-- data decl
+{-|
+>[INTERNAL]  Base class for
+>objects that have a natural string representation.
+>
+>Joel Andersson
+>
+>C++ includes: printable_object.hpp 
+-}
+newtype PrintableObject = PrintableObject (ForeignPtr PrintableObject')
+-- typeclass decl
+class PrintableObjectClass a where
+  castPrintableObject :: a -> PrintableObject
+instance PrintableObjectClass PrintableObject where
+  castPrintableObject = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal PrintableObject (Ptr PrintableObject') where
+  marshal (PrintableObject x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (PrintableObject x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__PrintableObject" 
+  c_delete_CasADi__PrintableObject :: FunPtr (Ptr PrintableObject' -> IO ())
+instance WrapReturn (Ptr PrintableObject') PrintableObject where
+  wrapReturn = (fmap PrintableObject) . (newForeignPtr c_delete_CasADi__PrintableObject)
+
+
+-- raw decl
+data ExpDMatrix'
+-- data decl
+{-|
+>[INTERNAL]  Expression
+>interface.
+>
+>This is a common base class for SX, MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom. Joel Andersson
+>
+>C++ includes: generic_expression.hpp 
+-}
+newtype ExpDMatrix = ExpDMatrix (ForeignPtr ExpDMatrix')
+-- typeclass decl
+class ExpDMatrixClass a where
+  castExpDMatrix :: a -> ExpDMatrix
+instance ExpDMatrixClass ExpDMatrix where
+  castExpDMatrix = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal ExpDMatrix (Ptr ExpDMatrix') where
+  marshal (ExpDMatrix x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (ExpDMatrix x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericExpression_CasADi__Matrix_double__" 
+  c_delete_CasADi__GenericExpression_CasADi__Matrix_double__ :: FunPtr (Ptr ExpDMatrix' -> IO ())
+instance WrapReturn (Ptr ExpDMatrix') ExpDMatrix where
+  wrapReturn = (fmap ExpDMatrix) . (newForeignPtr c_delete_CasADi__GenericExpression_CasADi__Matrix_double__)
+
+
+-- raw decl
+data QCQPSolver'
+-- data decl
+{-|
+>[INTERNAL]   QCQPSolver.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             1/2 x' Pi x +
+>qi' x + ri  <= 0   for i=0..nq-1                          LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with : H, Pi sparse (n x n) positive
+>definite       g, qi dense  (n x 1) ri scalar                  n: number of
+>decision variables (x)     nc: number of linear constraints (A)     nq:
+>number of quadratic constraints
+>
+>If H, Pi is not positive-definite, the solver should throw an error.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::QCQPSolverInput (QCQP_SOLVER_NUM_IN = 13) [qcqpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QCQP_SOLVER_H          | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_G          | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_P          | p                      | The horizontal stack   |
+>|                        |                        | of all Pi. Each Pi is  |
+>|                        |                        | sparse (n x n). Only   |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_Q          | q                      | The vertical stack of  |
+>|                        |                        | all qi: dense, (nq n x |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_R          | r                      | The vertical stack of  |
+>|                        |                        | all scalars ri (nq x   |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_A          | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LBA        | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_UBA        | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LBX        | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_UBX        | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_X0         | x0                     | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LAM_X0     | lam_x0                 | dense                  |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QCQPSolverOutput (QCQP_SOLVER_NUM_OUT = 5) [qcqpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QCQP_SOLVER_X          | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_COST       | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LAM_A      | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LAM_X      | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: qcqp_solver.hpp 
+-}
+newtype QCQPSolver = QCQPSolver (ForeignPtr QCQPSolver')
+-- typeclass decl
+class QCQPSolverClass a where
+  castQCQPSolver :: a -> QCQPSolver
+instance QCQPSolverClass QCQPSolver where
+  castQCQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass QCQPSolver where
+  castSharedObject (QCQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass QCQPSolver where
+  castPrintableObject (QCQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass QCQPSolver where
+  castOptionsFunctionality (QCQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass QCQPSolver where
+  castFunction (QCQPSolver x) = Function (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 NLPSolver'
+-- data decl
+{-|
+>[INTERNAL]   NLPSolver.
+>
+>Solves the following parametric nonlinear program (NLP):min          F(x,p)
+>x  subject to             LBX <=   x    <= UBX LBG <= G(x,p) <= UBG
+>p  == P nx: number of decision variables     ng: number of constraints
+>np: number of parameters
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
+>|              |              |              | NLP function | olverInterna |
+>|              |              |              | in terms of  | l            |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | objective    | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | constraint   | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option. Use  | olverInterna |
+>|              |              |              | Gauss Newton | l            |
+>|              |              |              | Hessian appr |              |
+>|              |              |              | oximation    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| dient        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate a   | l            |
+>|              |              |              | function for |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| sian         |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Hessian of   |              |
+>|              |              |              | the          |              |
+>|              |              |              | Lagrangian   |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| obian        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Jacobian of  |              |
+>|              |              |              | the          |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| _vec         |              |              | true, the    | olverInterna |
+>|              |              |              | input shape  | l            |
+>|              |              |              | of F will    |              |
+>|              |              |              | not be       |              |
+>|              |              |              | checked.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
+>| llback       |              | )            | that will be | olverInterna |
+>|              |              |              | called at    | l            |
+>|              |              |              | each         |              |
+>|              |              |              | iteration    |              |
+>|              |              |              | with the     |              |
+>|              |              |              | solver as    |              |
+>|              |              |              | input. Check |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n of         |              |
+>|              |              |              | Callback .   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| llback_ignor |              |              | true, errors | olverInterna |
+>| e_errors     |              |              | thrown by it | l            |
+>|              |              |              | eration_call |              |
+>|              |              |              | back will be |              |
+>|              |              |              | ignored.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
+>| llback_step  |              |              | the callback | olverInterna |
+>|              |              |              | function     | l            |
+>|              |              |              | every few    |              |
+>|              |              |              | iterations.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option.      | olverInterna |
+>|              |              |              | Expect F, G, | l            |
+>|              |              |              | H, J to have |              |
+>|              |              |              | an           |              |
+>|              |              |              | additional   |              |
+>|              |              |              | input        |              |
+>|              |              |              | argument     |              |
+>|              |              |              | appended at  |              |
+>|              |              |              | the end,     |              |
+>|              |              |              | denoting     |              |
+>|              |              |              | fixed        |              |
+>|              |              |              | parameters.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
+>| _bounds      |              |              | initial      | olverInterna |
+>|              |              |              | guess does   | l            |
+>|              |              |              | not satisfy  |              |
+>|              |              |              | LBX and UBX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: nlp_solver.hpp 
+-}
+newtype NLPSolver = NLPSolver (ForeignPtr NLPSolver')
+-- typeclass decl
+class NLPSolverClass a where
+  castNLPSolver :: a -> NLPSolver
+instance NLPSolverClass NLPSolver where
+  castNLPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass NLPSolver where
+  castSharedObject (NLPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass NLPSolver where
+  castPrintableObject (NLPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass NLPSolver where
+  castOptionsFunctionality (NLPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass NLPSolver where
+  castFunction (NLPSolver x) = Function (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 GenericType'
+-- data decl
+{-|
+>[INTERNAL]  Generic data type.
+>
+>Joel Andersson
+>
+>C++ includes: generic_type.hpp 
+-}
+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)
+
+instance PrintableObjectClass GenericType where
+  castPrintableObject (GenericType x) = PrintableObject (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 NLPQPSolver'
+-- data decl
+{-|
+>[INTERNAL]  IPOPT QP Solver for
+>quadratic programming.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with :       H sparse (n x n) positive
+>definite       g dense  (n x 1) n: number of decision variables (x)     nc:
+>number of constraints (A)
+>
+>If H is not positive-definite, the solver should throw an error.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::QPSolverInput (QP_SOLVER_NUM_IN = 10) [qpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_H            | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_G            | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_A            | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LBA          | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_UBA          | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LBX          | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_UBX          | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_X0           | x0                     | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X0       | lam_x0                 | dense                  |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QPSolverOutput (QP_SOLVER_NUM_OUT = 5) [qpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver   | OT_NLPSOLVER | GenericType( | The          | CasADi::NLPQ |
+>|              |              | )            | NLPSOlver    | PInternal    |
+>|              |              |              | used to      |              |
+>|              |              |              | solve the    |              |
+>|              |              |              | QPs.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::NLPQ |
+>| ptions       | Y            | )            | be passed to | PInternal    |
+>|              |              |              | the          |              |
+>|              |              |              | NLPSOlver    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+------------------+-----------------------+
+>|        Id        |        Used in        |
+>+==================+=======================+
+>| nlp_solver_stats | CasADi::NLPQPInternal |
+>+------------------+-----------------------+
+>
+>Diagrams
+>
+>C++ includes: nlp_qp_solver.hpp 
+-}
+newtype NLPQPSolver = NLPQPSolver (ForeignPtr NLPQPSolver')
+-- typeclass decl
+class NLPQPSolverClass a where
+  castNLPQPSolver :: a -> NLPQPSolver
+instance NLPQPSolverClass NLPQPSolver where
+  castNLPQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass NLPQPSolver where
+  castSharedObject (NLPQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass NLPQPSolver where
+  castPrintableObject (NLPQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass NLPQPSolver where
+  castOptionsFunctionality (NLPQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass NLPQPSolver where
+  castFunction (NLPQPSolver x) = Function (castForeignPtr x)
+
+instance QPSolverClass NLPQPSolver where
+  castQPSolver (NLPQPSolver x) = QPSolver (castForeignPtr x)
+
+instance IOInterfaceFunctionClass NLPQPSolver where
+  castIOInterfaceFunction (NLPQPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal NLPQPSolver (Ptr NLPQPSolver') where
+  marshal (NLPQPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (NLPQPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__NLPQPSolver" 
+  c_delete_CasADi__NLPQPSolver :: FunPtr (Ptr NLPQPSolver' -> IO ())
+instance WrapReturn (Ptr NLPQPSolver') NLPQPSolver where
+  wrapReturn = (fmap NLPQPSolver) . (newForeignPtr c_delete_CasADi__NLPQPSolver)
+
+
+-- raw decl
+data Variable'
+-- data decl
+{-|
+>[INTERNAL]  Holds expressions and
+>meta-data corresponding to a physical quantity evolving in time.
+>
+>Joel Andersson
+>
+>C++ includes: variable.hpp 
+-}
+newtype Variable = Variable (ForeignPtr Variable')
+-- typeclass decl
+class VariableClass a where
+  castVariable :: a -> Variable
+instance VariableClass Variable where
+  castVariable = id
+
+-- baseclass instances
+instance PrintableObjectClass Variable where
+  castPrintableObject (Variable x) = PrintableObject (castForeignPtr x)
+
+
+-- 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 LPStructure'
+-- data decl
+{-|
+>[INTERNAL]  Helper
+>function for 'LPStruct'
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype LPStructure = LPStructure (ForeignPtr LPStructure')
+-- typeclass decl
+class LPStructureClass a where
+  castLPStructure :: a -> LPStructure
+instance LPStructureClass LPStructure where
+  castLPStructure = id
+
+-- baseclass instances
+instance PrintableObjectClass LPStructure where
+  castPrintableObject (LPStructure x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal LPStructure (Ptr LPStructure') where
+  marshal (LPStructure x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (LPStructure x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__LPStructIOSchemeVector_CasADi__Sparsity_" 
+  c_delete_CasADi__LPStructIOSchemeVector_CasADi__Sparsity_ :: FunPtr (Ptr LPStructure' -> IO ())
+instance WrapReturn (Ptr LPStructure') LPStructure where
+  wrapReturn = (fmap LPStructure) . (newForeignPtr c_delete_CasADi__LPStructIOSchemeVector_CasADi__Sparsity_)
+
+
+-- raw decl
+data ImplicitFixedStepIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Base
+>class for implicit fixed step integrators.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_sol | OT_IMPLICITF | GenericType( | An implicit  | CasADi::Impl |
+>| ver          | UNCTION      | )            | function     | icitFixedSte |
+>|              |              |              | solver       | pIntegratorI |
+>|              |              |              |              | nternal      |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_sol | OT_DICTIONAR | GenericType( | Options to   | CasADi::Impl |
+>| ver_options  | Y            | )            | be passed to | icitFixedSte |
+>|              |              |              | the NLP      | pIntegratorI |
+>|              |              |              | Solver       | nternal      |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_fi | OT_INTEGER   | 20           | Number of    | CasADi::Fixe |
+>| nite_element |              |              | finite       | dStepIntegra |
+>| s            |              |              | elements     | torInternal  |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: implicit_fixed_step_integrator.hpp 
+-}
+newtype ImplicitFixedStepIntegrator = ImplicitFixedStepIntegrator (ForeignPtr ImplicitFixedStepIntegrator')
+-- typeclass decl
+class ImplicitFixedStepIntegratorClass a where
+  castImplicitFixedStepIntegrator :: a -> ImplicitFixedStepIntegrator
+instance ImplicitFixedStepIntegratorClass ImplicitFixedStepIntegrator where
+  castImplicitFixedStepIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass ImplicitFixedStepIntegrator where
+  castSharedObject (ImplicitFixedStepIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass ImplicitFixedStepIntegrator where
+  castPrintableObject (ImplicitFixedStepIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance FixedStepIntegratorClass ImplicitFixedStepIntegrator where
+  castFixedStepIntegrator (ImplicitFixedStepIntegrator x) = FixedStepIntegrator (castForeignPtr x)
+
+instance OptionsFunctionalityClass ImplicitFixedStepIntegrator where
+  castOptionsFunctionality (ImplicitFixedStepIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass ImplicitFixedStepIntegrator where
+  castFunction (ImplicitFixedStepIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass ImplicitFixedStepIntegrator where
+  castIntegrator (ImplicitFixedStepIntegrator x) = Integrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass ImplicitFixedStepIntegrator where
+  castIOInterfaceFunction (ImplicitFixedStepIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal ImplicitFixedStepIntegrator (Ptr ImplicitFixedStepIntegrator') where
+  marshal (ImplicitFixedStepIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (ImplicitFixedStepIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__ImplicitFixedStepIntegrator" 
+  c_delete_CasADi__ImplicitFixedStepIntegrator :: FunPtr (Ptr ImplicitFixedStepIntegrator' -> IO ())
+instance WrapReturn (Ptr ImplicitFixedStepIntegrator') ImplicitFixedStepIntegrator where
+  wrapReturn = (fmap ImplicitFixedStepIntegrator) . (newForeignPtr c_delete_CasADi__ImplicitFixedStepIntegrator)
+
+
+-- raw decl
+data CSparseCholesky'
+-- data decl
+{-|
+>[INTERNAL]   LinearSolver
+>with CSparseCholesky Interface.
+>
+>Solves the linear system A*X = B or A^T*X = B for X with A square and non-
+>singular
+>
+>If A is structurally singular, an error will be thrown during init. If A is
+>numerically singular, the prepare step will fail.
+>
+>CSparseCholesky is an CasADi::Function mapping from 2 inputs [ A (matrix),b
+>(vector)] to one output [x (vector)].
+>
+>A = LL' Ax = b LL'x = b L'x = L^-1 b
+>
+>The usual procedure to use CSparseCholesky is:  init()
+>
+>set the first input (A)
+>
+>prepare()
+>
+>set the second input (b)
+>
+>solve()
+>
+>Repeat steps 4 and 5 to work with other b vectors.
+>
+>The method evaluate() combines the prepare() and solve() step and is
+>therefore more expensive if A is invariant.
+>
+>>Input scheme: CasADi::LinsolInput (LINSOL_NUM_IN = 3) [linsolIn]
+>+-----------+-------+------------------------------------------------+
+>| Full name | Short |                  Description                   |
+>+===========+=======+================================================+
+>| LINSOL_A  | A     | The square matrix A: sparse, (n x n). .        |
+>+-----------+-------+------------------------------------------------+
+>| LINSOL_B  | B     | The right-hand-side matrix b: dense, (n x m) . |
+>+-----------+-------+------------------------------------------------+
+>
+>>Output scheme: CasADi::LinsolOutput (LINSOL_NUM_OUT = 2) [linsolOut]
+>+-----------+-------+----------------------------------------------+
+>| Full name | Short |                 Description                  |
+>+===========+=======+==============================================+
+>| LINSOL_X  | X     | Solution to the linear system of equations . |
+>+-----------+-------+----------------------------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: csparse_cholesky.hpp 
+-}
+newtype CSparseCholesky = CSparseCholesky (ForeignPtr CSparseCholesky')
+-- typeclass decl
+class CSparseCholeskyClass a where
+  castCSparseCholesky :: a -> CSparseCholesky
+instance CSparseCholeskyClass CSparseCholesky where
+  castCSparseCholesky = id
+
+-- baseclass instances
+instance SharedObjectClass CSparseCholesky where
+  castSharedObject (CSparseCholesky x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass CSparseCholesky where
+  castPrintableObject (CSparseCholesky x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass CSparseCholesky where
+  castOptionsFunctionality (CSparseCholesky x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass CSparseCholesky where
+  castFunction (CSparseCholesky x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass CSparseCholesky where
+  castIOInterfaceFunction (CSparseCholesky x) = IOInterfaceFunction (castForeignPtr x)
+
+instance LinearSolverClass CSparseCholesky where
+  castLinearSolver (CSparseCholesky x) = LinearSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal CSparseCholesky (Ptr CSparseCholesky') where
+  marshal (CSparseCholesky x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (CSparseCholesky x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__CSparseCholesky" 
+  c_delete_CasADi__CSparseCholesky :: FunPtr (Ptr CSparseCholesky' -> IO ())
+instance WrapReturn (Ptr CSparseCholesky') CSparseCholesky where
+  wrapReturn = (fmap CSparseCholesky) . (newForeignPtr c_delete_CasADi__CSparseCholesky)
+
+
+-- raw decl
+data SDPSOCPSolver'
+-- data decl
+{-|
+>[INTERNAL]  SOCP Solver for
+>quadratic programming.
+>
+>Solves an Second Order Cone Programming (SOCP) problem in standard form.
+>
+>Primal:
+>
+>min          c' x   x  subject to               || Gi' x + hi ||_2 <= ei' x
+>+ fi  i = 1..m              LBA <= A x <= UBA             LBX <= x   <= UBX
+>with x ( n x 1)          c ( n x 1 ) Gi  sparse (n x ni)          hi  dense
+>(ni x 1)          ei  dense (n x 1)          fi  dense (1 x 1)          N =
+>Sum_i^m ni          A sparse (nc x n)          LBA, UBA dense vector (nc x
+>1)          LBX, UBX dense vector (n x 1)
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::SOCPInput (SOCP_SOLVER_NUM_IN = 11) [socpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SOCP_SOLVER_G          | g                      | The horizontal stack   |
+>|                        |                        | of all matrices Gi: (  |
+>|                        |                        | n x N) .               |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_H          | h                      | The vertical stack of  |
+>|                        |                        | all vectors hi: ( N x  |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_E          | e                      | The vertical stack of  |
+>|                        |                        | all vectors ei: ( nm x |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_F          | f                      | The vertical stack of  |
+>|                        |                        | all scalars fi: ( m x  |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_C          | c                      | The vector c: ( n x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_A          | a                      | The matrix A: ( nc x   |
+>|                        |                        | n) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LBA        | lba                    | Lower bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_UBA        | uba                    | Upper bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LBX        | lbx                    | Lower bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_UBX        | ubx                    | Upper bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::SOCPOutput (SOCP_SOLVER_NUM_OUT = 5) [socpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SOCP_SOLVER_X          | x                      | The primal solution (n |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_COST       | cost                   | The primal optimal     |
+>|                        |                        | cost (1 x 1) .         |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LAM_A      | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to the   |
+>|                        |                        | linear constraints (nc |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LAM_X      | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds (n x 1)  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ni           | OT_INTEGERVE | GenericType( | Provide the  | CasADi::SOCP |
+>|              | CTOR         | )            | size of each | SolverIntern |
+>|              |              |              | SOC          | al           |
+>|              |              |              | constraint.  |              |
+>|              |              |              | Must sum up  |              |
+>|              |              |              | to N.        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_proble | OT_BOOLEAN   | false        | Print out    | CasADi::SOCP |
+>| m            |              |              | problem      | SolverIntern |
+>|              |              |              | statement    | al           |
+>|              |              |              | for          |              |
+>|              |              |              | debugging.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sdp_solver   | OT_SDPSOLVER | GenericType( | The          | CasADi::SDPS |
+>|              |              | )            | SDPSolver    | OCPInternal  |
+>|              |              |              | used to      |              |
+>|              |              |              | solve the    |              |
+>|              |              |              | SOCPs.       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sdp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::SDPS |
+>| ptions       | Y            | )            | be passed to | OCPInternal  |
+>|              |              |              | the          |              |
+>|              |              |              | SDPSOlver    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+------------------+-------------------------+
+>|        Id        |         Used in         |
+>+==================+=========================+
+>| sdp_solver_stats | CasADi::SDPSOCPInternal |
+>+------------------+-------------------------+
+>
+>Diagrams
+>
+>C++ includes: sdp_socp_solver.hpp 
+-}
+newtype SDPSOCPSolver = SDPSOCPSolver (ForeignPtr SDPSOCPSolver')
+-- typeclass decl
+class SDPSOCPSolverClass a where
+  castSDPSOCPSolver :: a -> SDPSOCPSolver
+instance SDPSOCPSolverClass SDPSOCPSolver where
+  castSDPSOCPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SDPSOCPSolver where
+  castSharedObject (SDPSOCPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SDPSOCPSolver where
+  castPrintableObject (SDPSOCPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SDPSOCPSolver where
+  castOptionsFunctionality (SDPSOCPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SDPSOCPSolver where
+  castFunction (SDPSOCPSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SDPSOCPSolver where
+  castIOInterfaceFunction (SDPSOCPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+instance SOCPSolverClass SDPSOCPSolver where
+  castSOCPSolver (SDPSOCPSolver x) = SOCPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SDPSOCPSolver (Ptr SDPSOCPSolver') where
+  marshal (SDPSOCPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SDPSOCPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SDPSOCPSolver" 
+  c_delete_CasADi__SDPSOCPSolver :: FunPtr (Ptr SDPSOCPSolver' -> IO ())
+instance WrapReturn (Ptr SDPSOCPSolver') SDPSOCPSolver where
+  wrapReturn = (fmap SDPSOCPSolver) . (newForeignPtr c_delete_CasADi__SDPSOCPSolver)
+
+
+-- raw decl
+data OptionsFunctionality'
+-- data decl
+{-|
+>[INTERNAL]  Provides
+>options setting/getting functionality.
+>
+>Gives a derived class the ability to set and retrieve options in a
+>convenient way. It also contains error checking, making sure that the option
+>exists and that the value type is correct.
+>
+>A derived class should add option names, types and default values to the
+>corresponding vectors.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: options_functionality.hpp 
+-}
+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)
+
+instance PrintableObjectClass OptionsFunctionality where
+  castPrintableObject (OptionsFunctionality x) = PrintableObject (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 OldCollocationIntegrator'
+-- data decl
+{-|
+>[INTERNAL]
+>Collocation integrator ODE/DAE integrator based on collocation.
+>
+>The method is still under development
+>
+>Base class for integrators. Solves an initial value problem (IVP) coupled to
+>a terminal value problem with differential equation given as an implicit ODE
+>coupled to an algebraic equation and a set of quadratures: Initial
+>conditions at t=t0  x(t0)  = x0  q(t0)  = 0   Forward integration from t=t0
+>to t=tf  der(x) = function(x,z,p,t) Forward ODE  0 = fz(x,z,p,t)
+>Forward algebraic equations  der(q) = fq(x,z,p,t)                  Forward
+>quadratures Terminal conditions at t=tf  rx(tf)  = rx0  rq(tf)  = 0
+>Backward integration from t=tf to t=t0  der(rx) = gx(rx,rz,rp,x,z,p,t)
+>Backward ODE  0 = gz(rx,rz,rp,x,z,p,t)        Backward algebraic equations
+>der(rq) = gq(rx,rz,rp,x,z,p,t)        Backward quadratures where we assume
+>that both the forward and backwards integrations are index-1  (i.e. dfz/dz,
+>dgz/drz are invertible) and furthermore that gx, gz and gq have a linear
+>dependency on rx, rz and rp.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| collocation_ | OT_STRING    | "radau"      | Collocation  | CasADi::OldC |
+>| scheme       |              |              | scheme (rada | ollocationIn |
+>|              |              |              | u|legendre)  | tegratorInte |
+>|              |              |              |              | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_f     | OT_BOOLEAN   | false        | Expand the   | CasADi::OldC |
+>|              |              |              | ODE/DAE      | ollocationIn |
+>|              |              |              | residual     | tegratorInte |
+>|              |              |              | function in  | rnal         |
+>|              |              |              | an SX graph  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_q     | OT_BOOLEAN   | false        | Expand the   | CasADi::OldC |
+>|              |              |              | quadrature   | ollocationIn |
+>|              |              |              | function in  | tegratorInte |
+>|              |              |              | an SX graph  | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hotstart     | OT_BOOLEAN   | true         | Initialize   | CasADi::OldC |
+>|              |              |              | the          | ollocationIn |
+>|              |              |              | trajectory   | tegratorInte |
+>|              |              |              | at the       | rnal         |
+>|              |              |              | previous     |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_sol | OT_IMPLICITF | GenericType( | An implicit  | CasADi::OldC |
+>| ver          | UNCTION      | )            | function     | ollocationIn |
+>|              |              |              | solver       | tegratorInte |
+>|              |              |              |              | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_sol | OT_DICTIONAR | GenericType( | Options to   | CasADi::OldC |
+>| ver_options  | Y            | )            | be passed to | ollocationIn |
+>|              |              |              | the implicit | tegratorInte |
+>|              |              |              | solver       | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| interpolatio | OT_INTEGER   | 3            | Order of the | CasADi::OldC |
+>| n_order      |              |              | interpolatin | ollocationIn |
+>|              |              |              | g            | tegratorInte |
+>|              |              |              | polynomials  | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_fi | OT_INTEGER   | 20           | Number of    | CasADi::OldC |
+>| nite_element |              |              | finite       | ollocationIn |
+>| s            |              |              | elements     | tegratorInte |
+>|              |              |              |              | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quadrature_s | OT_LINEARSOL | GenericType( | An linear    | CasADi::OldC |
+>| olver        | VER          | )            | solver to    | ollocationIn |
+>|              |              |              | solver the   | tegratorInte |
+>|              |              |              | quadrature   | rnal         |
+>|              |              |              | equations    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quadrature_s | OT_DICTIONAR | GenericType( | Options to   | CasADi::OldC |
+>| olver_option | Y            | )            | be passed to | ollocationIn |
+>| s            |              |              | the          | tegratorInte |
+>|              |              |              | quadrature   | rnal         |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| startup_inte | OT_INTEGRATO | GenericType( | An ODE/DAE   | CasADi::OldC |
+>| grator       | R            | )            | integrator   | ollocationIn |
+>|              |              |              | that can be  | tegratorInte |
+>|              |              |              | used to      | rnal         |
+>|              |              |              | generate a   |              |
+>|              |              |              | startup      |              |
+>|              |              |              | trajectory   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| startup_inte | OT_DICTIONAR | GenericType( | Options to   | CasADi::OldC |
+>| grator_optio | Y            | )            | be passed to | ollocationIn |
+>| ns           |              |              | the startup  | tegratorInte |
+>|              |              |              | integrator   | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: old_collocation_integrator.hpp 
+-}
+newtype OldCollocationIntegrator = OldCollocationIntegrator (ForeignPtr OldCollocationIntegrator')
+-- typeclass decl
+class OldCollocationIntegratorClass a where
+  castOldCollocationIntegrator :: a -> OldCollocationIntegrator
+instance OldCollocationIntegratorClass OldCollocationIntegrator where
+  castOldCollocationIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass OldCollocationIntegrator where
+  castSharedObject (OldCollocationIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass OldCollocationIntegrator where
+  castPrintableObject (OldCollocationIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass OldCollocationIntegrator where
+  castOptionsFunctionality (OldCollocationIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass OldCollocationIntegrator where
+  castFunction (OldCollocationIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass OldCollocationIntegrator where
+  castIntegrator (OldCollocationIntegrator x) = Integrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass OldCollocationIntegrator where
+  castIOInterfaceFunction (OldCollocationIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal OldCollocationIntegrator (Ptr OldCollocationIntegrator') where
+  marshal (OldCollocationIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (OldCollocationIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__OldCollocationIntegrator" 
+  c_delete_CasADi__OldCollocationIntegrator :: FunPtr (Ptr OldCollocationIntegrator' -> IO ())
+instance WrapReturn (Ptr OldCollocationIntegrator') OldCollocationIntegrator where
+  wrapReturn = (fmap OldCollocationIntegrator) . (newForeignPtr c_delete_CasADi__OldCollocationIntegrator)
+
+
+-- raw decl
+data FixedStepIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Base class
+>for fixed step integrators.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_fi | OT_INTEGER   | 20           | Number of    | CasADi::Fixe |
+>| nite_element |              |              | finite       | dStepIntegra |
+>| s            |              |              | elements     | torInternal  |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: fixed_step_integrator.hpp 
+-}
+newtype FixedStepIntegrator = FixedStepIntegrator (ForeignPtr FixedStepIntegrator')
+-- typeclass decl
+class FixedStepIntegratorClass a where
+  castFixedStepIntegrator :: a -> FixedStepIntegrator
+instance FixedStepIntegratorClass FixedStepIntegrator where
+  castFixedStepIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass FixedStepIntegrator where
+  castSharedObject (FixedStepIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass FixedStepIntegrator where
+  castPrintableObject (FixedStepIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass FixedStepIntegrator where
+  castOptionsFunctionality (FixedStepIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass FixedStepIntegrator where
+  castFunction (FixedStepIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass FixedStepIntegrator where
+  castIntegrator (FixedStepIntegrator x) = Integrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass FixedStepIntegrator where
+  castIOInterfaceFunction (FixedStepIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal FixedStepIntegrator (Ptr FixedStepIntegrator') where
+  marshal (FixedStepIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (FixedStepIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__FixedStepIntegrator" 
+  c_delete_CasADi__FixedStepIntegrator :: FunPtr (Ptr FixedStepIntegrator' -> IO ())
+instance WrapReturn (Ptr FixedStepIntegrator') FixedStepIntegrator where
+  wrapReturn = (fmap FixedStepIntegrator) . (newForeignPtr c_delete_CasADi__FixedStepIntegrator)
+
+
+-- raw decl
+data CollocationIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Fixed-step
+>implicit Runge-Kutta integrator ODE/DAE integrator based on collocation
+>schemes.
+>
+>The method is still under development
+>
+>Base class for integrators. Solves an initial value problem (IVP) coupled to
+>a terminal value problem with differential equation given as an implicit ODE
+>coupled to an algebraic equation and a set of quadratures: Initial
+>conditions at t=t0  x(t0)  = x0  q(t0)  = 0   Forward integration from t=t0
+>to t=tf  der(x) = function(x,z,p,t) Forward ODE  0 = fz(x,z,p,t)
+>Forward algebraic equations  der(q) = fq(x,z,p,t)                  Forward
+>quadratures Terminal conditions at t=tf  rx(tf)  = rx0  rq(tf)  = 0
+>Backward integration from t=tf to t=t0  der(rx) = gx(rx,rz,rp,x,z,p,t)
+>Backward ODE  0 = gz(rx,rz,rp,x,z,p,t)        Backward algebraic equations
+>der(rq) = gq(rx,rz,rp,x,z,p,t)        Backward quadratures where we assume
+>that both the forward and backwards integrations are index-1  (i.e. dfz/dz,
+>dgz/drz are invertible) and furthermore that gx, gz and gq have a linear
+>dependency on rx, rz and rp.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| collocation_ | OT_STRING    | "radau"      | Collocation  | CasADi::Coll |
+>| scheme       |              |              | scheme (rada | ocationInteg |
+>|              |              |              | u|legendre)  | ratorInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_sol | OT_IMPLICITF | GenericType( | An implicit  | CasADi::Impl |
+>| ver          | UNCTION      | )            | function     | icitFixedSte |
+>|              |              |              | solver       | pIntegratorI |
+>|              |              |              |              | nternal      |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_sol | OT_DICTIONAR | GenericType( | Options to   | CasADi::Impl |
+>| ver_options  | Y            | )            | be passed to | icitFixedSte |
+>|              |              |              | the NLP      | pIntegratorI |
+>|              |              |              | Solver       | nternal      |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| interpolatio | OT_INTEGER   | 3            | Order of the | CasADi::Coll |
+>| n_order      |              |              | interpolatin | ocationInteg |
+>|              |              |              | g            | ratorInterna |
+>|              |              |              | polynomials  | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_fi | OT_INTEGER   | 20           | Number of    | CasADi::Fixe |
+>| nite_element |              |              | finite       | dStepIntegra |
+>| s            |              |              | elements     | torInternal  |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: collocation_integrator.hpp 
+-}
+newtype CollocationIntegrator = CollocationIntegrator (ForeignPtr CollocationIntegrator')
+-- typeclass decl
+class CollocationIntegratorClass a where
+  castCollocationIntegrator :: a -> CollocationIntegrator
+instance CollocationIntegratorClass CollocationIntegrator where
+  castCollocationIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass CollocationIntegrator where
+  castSharedObject (CollocationIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass CollocationIntegrator where
+  castPrintableObject (CollocationIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance ImplicitFixedStepIntegratorClass CollocationIntegrator where
+  castImplicitFixedStepIntegrator (CollocationIntegrator x) = ImplicitFixedStepIntegrator (castForeignPtr x)
+
+instance FixedStepIntegratorClass CollocationIntegrator where
+  castFixedStepIntegrator (CollocationIntegrator x) = FixedStepIntegrator (castForeignPtr x)
+
+instance OptionsFunctionalityClass CollocationIntegrator where
+  castOptionsFunctionality (CollocationIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass CollocationIntegrator where
+  castFunction (CollocationIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass CollocationIntegrator where
+  castIntegrator (CollocationIntegrator x) = Integrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass CollocationIntegrator where
+  castIOInterfaceFunction (CollocationIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal CollocationIntegrator (Ptr CollocationIntegrator') where
+  marshal (CollocationIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (CollocationIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__CollocationIntegrator" 
+  c_delete_CasADi__CollocationIntegrator :: FunPtr (Ptr CollocationIntegrator' -> IO ())
+instance WrapReturn (Ptr CollocationIntegrator') CollocationIntegrator where
+  wrapReturn = (fmap CollocationIntegrator) . (newForeignPtr c_delete_CasADi__CollocationIntegrator)
+
+
+-- raw decl
+data GenSX'
+-- data decl
+{-|
+>[INTERNAL]   Matrix base
+>class.
+>
+>This is a common base class for MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom.  The class is designed with the idea that
+>"everything is a matrix", that is, also scalars and vectors. This
+>philosophy makes it easy to use and to interface in particularily with
+>Python and Matlab/Octave.  The syntax tries to stay as close as possible to
+>the ublas syntax when it comes to vector/matrix operations.  Index starts
+>with 0. Index vec happens as follows: (rr,cc) -> k = rr+cc*size1() Vectors
+>are column vectors.  The storage format is Compressed Column Storage (CCS),
+>similar to that used for sparse matrices in Matlab, but unlike this format,
+>we do allow for elements to be structurally non-zero but numerically zero.
+>The sparsity pattern, which is reference counted and cached, can be accessed
+>with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: generic_matrix.hpp 
+-}
+newtype GenSX = GenSX (ForeignPtr GenSX')
+-- typeclass decl
+class GenSXClass a where
+  castGenSX :: a -> GenSX
+instance GenSXClass GenSX where
+  castGenSX = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal GenSX (Ptr GenSX') where
+  marshal (GenSX x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (GenSX x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement__" 
+  c_delete_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement__ :: FunPtr (Ptr GenSX' -> IO ())
+instance WrapReturn (Ptr GenSX') GenSX where
+  wrapReturn = (fmap GenSX) . (newForeignPtr c_delete_CasADi__GenericMatrix_CasADi__Matrix_CasADi__SXElement__)
+
+
+-- raw decl
+data IpoptSolver'
+-- data decl
+{-|
+>[INTERNAL]  interface to IPOPT
+>NLP solver
+>
+>Solves the following parametric nonlinear program (NLP):min          F(x,p)
+>x  subject to             LBX <=   x    <= UBX LBG <= G(x,p) <= UBG
+>p  == P nx: number of decision variables     ng: number of constraints
+>np: number of parameters
+>
+>When in warmstart mode, output NLP_SOLVER_LAM_X may be used as input
+>
+>NOTE: Even when max_iter == 0, it is not guaranteed that
+>input(NLP_SOLVER_X0) == output(NLP_SOLVER_X). Indeed if bounds on X or
+>constraints are unmet, they will differ.
+>
+>For a good tutorial on IPOPT,
+>seehttp://drops.dagstuhl.de/volltexte/2009/2089/pdf/09061.WaechterAndreas.Paper.2089.pdf
+>
+>A good resource about the algorithms in IPOPT is: Wachter and L. T. Biegler,
+>On the Implementation of an Interior-Point Filter Line-Search Algorithm for
+>Large-Scale Nonlinear Programming, Mathematical Programming 106(1), pp.
+>25-57, 2006 (As Research Report RC 23149, IBM T. J. Watson Research Center,
+>Yorktown, USA
+>
+>Caveats: with default options, multipliers for the decision variables are
+>wrong for equality constraints. Change the 'fixed_variable_treatment' to
+>'make_constraint' or 'relax_bounds' to obtain correct results.
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| accept_after | OT_INTEGER   | -1           | Accept a     | CasADi::Ipop |
+>| _max_steps   |              |              | trial point  | tInternal    |
+>|              |              |              | after        |              |
+>|              |              |              | maximal this |              |
+>|              |              |              | number of    |              |
+>|              |              |              | steps. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| accept_every | OT_STRING    | no           | Always       | CasADi::Ipop |
+>| _trial_step  |              |              | accept the   | tInternal    |
+>|              |              |              | first trial  |              |
+>|              |              |              | step. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| acceptable_c | OT_REAL      | 0.010        | "Acceptance" | CasADi::Ipop |
+>| ompl_inf_tol |              |              | threshold    | tInternal    |
+>|              |              |              | for the comp |              |
+>|              |              |              | lementarity  |              |
+>|              |              |              | conditions.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| acceptable_c | OT_REAL      | 0.010        | "Acceptance" | CasADi::Ipop |
+>| onstr_viol_t |              |              | threshold    | tInternal    |
+>| ol           |              |              | for the      |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| acceptable_d | OT_REAL      | 1.000e+10    | "Acceptance" | CasADi::Ipop |
+>| ual_inf_tol  |              |              | threshold    | tInternal    |
+>|              |              |              | for the dual |              |
+>|              |              |              | infeasibilit |              |
+>|              |              |              | y. (see      |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| acceptable_i | OT_INTEGER   | 15           | Number of    | CasADi::Ipop |
+>| ter          |              |              | "acceptable" | tInternal    |
+>|              |              |              | iterates     |              |
+>|              |              |              | before       |              |
+>|              |              |              | triggering   |              |
+>|              |              |              | termination. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| acceptable_o | OT_REAL      | 1.000e+20    | "Acceptance" | CasADi::Ipop |
+>| bj_change_to |              |              | stopping     | tInternal    |
+>| l            |              |              | criterion    |              |
+>|              |              |              | based on     |              |
+>|              |              |              | objective    |              |
+>|              |              |              | function     |              |
+>|              |              |              | change. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| acceptable_t | OT_REAL      | 0.000        | "Acceptable" | CasADi::Ipop |
+>| ol           |              |              | convergence  | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | (relative).  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_STRING    | obj-constr-  | Globalizatio | CasADi::Ipop |
+>| globalizatio |              | filter       | n strategy   | tInternal    |
+>| n            |              |              | for the      |              |
+>|              |              |              | adaptive mu  |              |
+>|              |              |              | selection    |              |
+>|              |              |              | mode. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_STRING    | 2-norm-      | Norm used    | CasADi::Ipop |
+>| kkt_norm_typ |              | squared      | for the KKT  | tInternal    |
+>| e            |              |              | error in the |              |
+>|              |              |              | adaptive mu  |              |
+>|              |              |              | globalizatio |              |
+>|              |              |              | n            |              |
+>|              |              |              | strategies.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_REAL      | 1.000        | Sufficient   | CasADi::Ipop |
+>| kkterror_red |              |              | decrease     | tInternal    |
+>| _fact        |              |              | factor for   |              |
+>|              |              |              | "kkt-error"  |              |
+>|              |              |              | globalizatio |              |
+>|              |              |              | n strategy.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_INTEGER   | 4            | Maximum      | CasADi::Ipop |
+>| kkterror_red |              |              | number of    | tInternal    |
+>| _iters       |              |              | iterations   |              |
+>|              |              |              | requiring    |              |
+>|              |              |              | sufficient   |              |
+>|              |              |              | progress.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_REAL      | 0.800        | Determines   | CasADi::Ipop |
+>| monotone_ini |              |              | the initial  | tInternal    |
+>| t_factor     |              |              | value of the |              |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | when         |              |
+>|              |              |              | switching to |              |
+>|              |              |              | the monotone |              |
+>|              |              |              | mode. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_STRING    | no           | Indicates if | CasADi::Ipop |
+>| restore_prev |              |              | the previous | tInternal    |
+>| ious_iterate |              |              | iterate      |              |
+>|              |              |              | should be    |              |
+>|              |              |              | restored if  |              |
+>|              |              |              | the monotone |              |
+>|              |              |              | mode is      |              |
+>|              |              |              | entered.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| adaptive_mu_ | OT_REAL      | 0            | (see IPOPT d | CasADi::Ipop |
+>| safeguard_fa |              |              | ocumentation | tInternal    |
+>| ctor         |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| alpha_for_y  | OT_STRING    | primal       | Method to    | CasADi::Ipop |
+>|              |              |              | determine    | tInternal    |
+>|              |              |              | the step     |              |
+>|              |              |              | size for     |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | multipliers. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| alpha_for_y_ | OT_REAL      | 10           | Tolerance    | CasADi::Ipop |
+>| tol          |              |              | for          | tInternal    |
+>|              |              |              | switching to |              |
+>|              |              |              | full         |              |
+>|              |              |              | equality     |              |
+>|              |              |              | multiplier   |              |
+>|              |              |              | steps. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| alpha_min_fr | OT_REAL      | 0.050        | Safety       | CasADi::Ipop |
+>| ac           |              |              | factor for   | tInternal    |
+>|              |              |              | the minimal  |              |
+>|              |              |              | step size    |              |
+>|              |              |              | (before      |              |
+>|              |              |              | switching to |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase). (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| alpha_red_fa | OT_REAL      | 0.500        | Fractional   | CasADi::Ipop |
+>| ctor         |              |              | reduction of | tInternal    |
+>|              |              |              | the trial    |              |
+>|              |              |              | step size in |              |
+>|              |              |              | the          |              |
+>|              |              |              | backtracking |              |
+>|              |              |              | line search. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| barrier_tol_ | OT_REAL      | 10           | Factor for   | CasADi::Ipop |
+>| factor       |              |              | mu in        | tInternal    |
+>|              |              |              | barrier stop |              |
+>|              |              |              | test. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| bound_frac   | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
+>|              |              |              | minimum      | tInternal    |
+>|              |              |              | relative     |              |
+>|              |              |              | distance     |              |
+>|              |              |              | from the     |              |
+>|              |              |              | initial      |              |
+>|              |              |              | point to     |              |
+>|              |              |              | bound. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| bound_mult_i | OT_STRING    | constant     | Initializati | CasADi::Ipop |
+>| nit_method   |              |              | on method    | tInternal    |
+>|              |              |              | for bound    |              |
+>|              |              |              | multipliers  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| bound_mult_i | OT_REAL      | 1            | Initial      | CasADi::Ipop |
+>| nit_val      |              |              | value for    | tInternal    |
+>|              |              |              | the bound    |              |
+>|              |              |              | multipliers. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| bound_mult_r | OT_REAL      | 1000         | Threshold    | CasADi::Ipop |
+>| eset_thresho |              |              | for          | tInternal    |
+>| ld           |              |              | resetting    |              |
+>|              |              |              | bound        |              |
+>|              |              |              | multipliers  |              |
+>|              |              |              | after the    |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| bound_push   | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
+>|              |              |              | minimum      | tInternal    |
+>|              |              |              | absolute     |              |
+>|              |              |              | distance     |              |
+>|              |              |              | from the     |              |
+>|              |              |              | initial      |              |
+>|              |              |              | point to     |              |
+>|              |              |              | bound. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| bound_relax_ | OT_REAL      | 0.000        | Factor for   | CasADi::Ipop |
+>| factor       |              |              | initial      | tInternal    |
+>|              |              |              | relaxation   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | bounds. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| check_deriva | OT_STRING    | no           | Indicates    | CasADi::Ipop |
+>| tives_for_na |              |              | whether it   | tInternal    |
+>| ninf         |              |              | is desired   |              |
+>|              |              |              | to check for |              |
+>|              |              |              | Nan/Inf in   |              |
+>|              |              |              | derivative   |              |
+>|              |              |              | matrices     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| chi_cup      | OT_REAL      | 1.500        | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| chi_hat      | OT_REAL      | 2            | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| chi_tilde    | OT_REAL      | 5            | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| compl_inf_to | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
+>| l            |              |              | threshold    | tInternal    |
+>|              |              |              | for the comp |              |
+>|              |              |              | lementarity  |              |
+>|              |              |              | conditions.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| con_integer_ | OT_DICTIONAR | None         | Integer      | CasADi::Ipop |
+>| md           | Y            |              | metadata (a  | tInternal    |
+>|              |              |              | dictionary   |              |
+>|              |              |              | with lists   |              |
+>|              |              |              | of integers) |              |
+>|              |              |              | about        |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | to be passed |              |
+>|              |              |              | to IPOPT     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| con_numeric_ | OT_DICTIONAR | None         | Numeric      | CasADi::Ipop |
+>| md           | Y            |              | metadata (a  | tInternal    |
+>|              |              |              | dictionary   |              |
+>|              |              |              | with lists   |              |
+>|              |              |              | of reals)    |              |
+>|              |              |              | about        |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | to be passed |              |
+>|              |              |              | to IPOPT     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| con_string_m | OT_DICTIONAR | None         | String       | CasADi::Ipop |
+>| d            | Y            |              | metadata (a  | tInternal    |
+>|              |              |              | dictionary   |              |
+>|              |              |              | with lists   |              |
+>|              |              |              | of strings)  |              |
+>|              |              |              | about        |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | to be passed |              |
+>|              |              |              | to IPOPT     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constr_mult_ | OT_REAL      | 1000         | Maximum      | CasADi::Ipop |
+>| init_max     |              |              | allowed      | tInternal    |
+>|              |              |              | least-square |              |
+>|              |              |              | guess of     |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | multipliers. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constr_mult_ | OT_REAL      | 0            | Threshold    | CasADi::Ipop |
+>| reset_thresh |              |              | for          | tInternal    |
+>| old          |              |              | resetting    |              |
+>|              |              |              | equality and |              |
+>|              |              |              | inequality   |              |
+>|              |              |              | multipliers  |              |
+>|              |              |              | after        |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constr_viol_ | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
+>| tol          |              |              | threshold    | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constraint_v | OT_STRING    | 1-norm       | Norm to be   | CasADi::Ipop |
+>| iolation_nor |              |              | used for the | tInternal    |
+>| m_type       |              |              | constraint   |              |
+>|              |              |              | violation in |              |
+>|              |              |              | the line     |              |
+>|              |              |              | search. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| corrector_co | OT_REAL      | 1            | Complementar | CasADi::Ipop |
+>| mpl_avrg_red |              |              | ity          | tInternal    |
+>| _fact        |              |              | tolerance    |              |
+>|              |              |              | factor for   |              |
+>|              |              |              | accepting    |              |
+>|              |              |              | corrector    |              |
+>|              |              |              | step (unsupp |              |
+>|              |              |              | orted!).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| corrector_ty | OT_STRING    | none         | The type of  | CasADi::Ipop |
+>| pe           |              |              | corrector    | tInternal    |
+>|              |              |              | steps that   |              |
+>|              |              |              | should be    |              |
+>|              |              |              | taken (unsup |              |
+>|              |              |              | ported!).    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| delta        | OT_REAL      | 1            | Multiplier   | CasADi::Ipop |
+>|              |              |              | for          | tInternal    |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation in |              |
+>|              |              |              | the          |              |
+>|              |              |              | switching    |              |
+>|              |              |              | rule. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| delta_y_max  | OT_REAL      | 1.000e+12    | a parameter  | CasADi::Ipop |
+>|              |              |              | used to      | tInternal    |
+>|              |              |              | check if the |              |
+>|              |              |              | fast         |              |
+>|              |              |              | direction    |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | asthe line   |              |
+>|              |              |              | search       |              |
+>|              |              |              | direction    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| dependency_d | OT_STRING    | no           | Indicates if | CasADi::Ipop |
+>| etection_wit |              |              | the right    | tInternal    |
+>| h_rhs        |              |              | hand sides   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | should be    |              |
+>|              |              |              | considered   |              |
+>|              |              |              | during       |              |
+>|              |              |              | dependency   |              |
+>|              |              |              | detection    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| dependency_d | OT_STRING    | none         | Indicates    | CasADi::Ipop |
+>| etector      |              |              | which linear | tInternal    |
+>|              |              |              | solver       |              |
+>|              |              |              | should be    |              |
+>|              |              |              | used to      |              |
+>|              |              |              | detect       |              |
+>|              |              |              | linearly     |              |
+>|              |              |              | dependent    |              |
+>|              |              |              | equality     |              |
+>|              |              |              | constraints. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_t | OT_STRING    | none         | Enable       | CasADi::Ipop |
+>| est          |              |              | derivative   | tInternal    |
+>|              |              |              | checker (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_t | OT_INTEGER   | -2           | Index of     | CasADi::Ipop |
+>| est_first_in |              |              | first        | tInternal    |
+>| dex          |              |              | quantity to  |              |
+>|              |              |              | be checked   |              |
+>|              |              |              | by           |              |
+>|              |              |              | derivative   |              |
+>|              |              |              | checker (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_t | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
+>| est_perturba |              |              | finite       | tInternal    |
+>| tion         |              |              | difference   |              |
+>|              |              |              | perturbation |              |
+>|              |              |              | in           |              |
+>|              |              |              | derivative   |              |
+>|              |              |              | test. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_t | OT_STRING    | no           | Indicates    | CasADi::Ipop |
+>| est_print_al |              |              | whether      | tInternal    |
+>| l            |              |              | information  |              |
+>|              |              |              | for all      |              |
+>|              |              |              | estimated    |              |
+>|              |              |              | derivatives  |              |
+>|              |              |              | should be    |              |
+>|              |              |              | printed.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_t | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
+>| est_tol      |              |              | for          | tInternal    |
+>|              |              |              | indicating   |              |
+>|              |              |              | wrong        |              |
+>|              |              |              | derivative.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| diverging_it | OT_REAL      | 1.000e+20    | Threshold    | CasADi::Ipop |
+>| erates_tol   |              |              | for maximal  | tInternal    |
+>|              |              |              | value of     |              |
+>|              |              |              | primal       |              |
+>|              |              |              | iterates.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| dual_inf_tol | OT_REAL      | 1            | Desired      | CasADi::Ipop |
+>|              |              |              | threshold    | tInternal    |
+>|              |              |              | for the dual |              |
+>|              |              |              | infeasibilit |              |
+>|              |              |              | y. (see      |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| epsilon_c    | OT_REAL      | 0.010        | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| eta_min      | OT_REAL      | 10           | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| eta_penalty  | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
+>|              |              |              | factor in    | tInternal    |
+>|              |              |              | the Armijo   |              |
+>|              |              |              | condition    |              |
+>|              |              |              | for the      |              |
+>|              |              |              | penalty      |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| eta_phi      | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
+>|              |              |              | factor in    | tInternal    |
+>|              |              |              | the Armijo   |              |
+>|              |              |              | condition.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| evaluate_ori | OT_STRING    | yes          | Determines   | CasADi::Ipop |
+>| g_obj_at_res |              |              | if the       | tInternal    |
+>| to_trial     |              |              | original     |              |
+>|              |              |              | objective    |              |
+>|              |              |              | function     |              |
+>|              |              |              | should be    |              |
+>|              |              |              | evaluated at |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase trial  |              |
+>|              |              |              | points. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
+>|              |              |              | NLP function | olverInterna |
+>|              |              |              | in terms of  | l            |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | objective    | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | constraint   | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expect_infea | OT_STRING    | no           | Enable       | CasADi::Ipop |
+>| sible_proble |              |              | heuristics   | tInternal    |
+>| m            |              |              | to quickly   |              |
+>|              |              |              | detect an    |              |
+>|              |              |              | infeasible   |              |
+>|              |              |              | problem.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expect_infea | OT_REAL      | 0.001        | Threshold    | CasADi::Ipop |
+>| sible_proble |              |              | for          | tInternal    |
+>| m_ctol       |              |              | disabling "e |              |
+>|              |              |              | xpect_infeas |              |
+>|              |              |              | ible_problem |              |
+>|              |              |              | " option.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expect_infea | OT_REAL      | 100000000    | Multiplier   | CasADi::Ipop |
+>| sible_proble |              |              | threshold    | tInternal    |
+>| m_ytol       |              |              | for          |              |
+>|              |              |              | activating " |              |
+>|              |              |              | expect_infea |              |
+>|              |              |              | sible_proble |              |
+>|              |              |              | m" option.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fast_des_fac | OT_REAL      | 0.100        | a parameter  | CasADi::Ipop |
+>| t            |              |              | used to      | tInternal    |
+>|              |              |              | check if the |              |
+>|              |              |              | fast         |              |
+>|              |              |              | direction    |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | asthe line   |              |
+>|              |              |              | search       |              |
+>|              |              |              | direction    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fast_step_co | OT_STRING    | no           | Indicates if | CasADi::Ipop |
+>| mputation    |              |              | the linear   | tInternal    |
+>|              |              |              | system       |              |
+>|              |              |              | should be    |              |
+>|              |              |              | solved       |              |
+>|              |              |              | quickly.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| file_print_l | OT_INTEGER   | 5            | Verbosity    | CasADi::Ipop |
+>| evel         |              |              | level for    | tInternal    |
+>|              |              |              | output file. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| filter_margi | OT_REAL      | 0.000        | Factor       | CasADi::Ipop |
+>| n_fact       |              |              | determining  | tInternal    |
+>|              |              |              | width of     |              |
+>|              |              |              | margin for   |              |
+>|              |              |              | obj-constr-  |              |
+>|              |              |              | filter       |              |
+>|              |              |              | adaptive glo |              |
+>|              |              |              | balization   |              |
+>|              |              |              | strategy.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| filter_max_m | OT_REAL      | 1            | Maximum      | CasADi::Ipop |
+>| argin        |              |              | width of     | tInternal    |
+>|              |              |              | margin in    |              |
+>|              |              |              | obj-constr-  |              |
+>|              |              |              | filter       |              |
+>|              |              |              | adaptive glo |              |
+>|              |              |              | balization   |              |
+>|              |              |              | strategy.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| filter_reset | OT_INTEGER   | 5            | Number of    | CasADi::Ipop |
+>| _trigger     |              |              | iterations   | tInternal    |
+>|              |              |              | that trigger |              |
+>|              |              |              | the filter   |              |
+>|              |              |              | reset. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| findiff_pert | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
+>| urbation     |              |              | finite       | tInternal    |
+>|              |              |              | difference   |              |
+>|              |              |              | perturbation |              |
+>|              |              |              | for          |              |
+>|              |              |              | derivative a |              |
+>|              |              |              | pproximation |              |
+>|              |              |              | . (see IPOPT |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n)           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| first_hessia | OT_REAL      | 0.000        | Size of      | CasADi::Ipop |
+>| n_perturbati |              |              | first x-s    | tInternal    |
+>| on           |              |              | perturbation |              |
+>|              |              |              | tried. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fixed_mu_ora | OT_STRING    | average_comp | Oracle for   | CasADi::Ipop |
+>| cle          |              | l            | the barrier  | tInternal    |
+>|              |              |              | parameter    |              |
+>|              |              |              | when         |              |
+>|              |              |              | switching to |              |
+>|              |              |              | fixed mode.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fixed_variab | OT_STRING    | make_paramet | Determines   | CasADi::Ipop |
+>| le_treatment |              | er           | how fixed    | tInternal    |
+>|              |              |              | variables    |              |
+>|              |              |              | should be    |              |
+>|              |              |              | handled.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma_hat    | OT_REAL      | 0.040        | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma_phi    | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
+>|              |              |              | factor in    | tInternal    |
+>|              |              |              | the filter   |              |
+>|              |              |              | margin for   |              |
+>|              |              |              | the barrier  |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma_theta  | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
+>|              |              |              | factor in    | tInternal    |
+>|              |              |              | the filter   |              |
+>|              |              |              | margin for   |              |
+>|              |              |              | the          |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma_tilde  | OT_REAL      | 4            | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option. Use  | olverInterna |
+>|              |              |              | Gauss Newton | l            |
+>|              |              |              | Hessian appr |              |
+>|              |              |              | oximation    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| dient        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate a   | l            |
+>|              |              |              | function for |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| sian         |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Hessian of   |              |
+>|              |              |              | the          |              |
+>|              |              |              | Lagrangian   |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| obian        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Jacobian of  |              |
+>|              |              |              | the          |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| grad_f       | OT_Function  | None         | Function for | CasADi::Ipop |
+>|              |              |              | calculating  | tInternal    |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective    |              |
+>|              |              |              | (column, aut |              |
+>|              |              |              | ogenerated   |              |
+>|              |              |              | by default)  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| grad_lag     | OT_Function  | None         | Function for | CasADi::Ipop |
+>|              |              |              | calculating  | tInternal    |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | Lagrangian ( |              |
+>|              |              |              | autogenerate |              |
+>|              |              |              | d by         |              |
+>|              |              |              | default)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hess_lag     | OT_Function  | None         | Function for | CasADi::Ipop |
+>|              |              |              | calculating  | tInternal    |
+>|              |              |              | the Hessian  |              |
+>|              |              |              | of the       |              |
+>|              |              |              | Lagrangian ( |              |
+>|              |              |              | autogenerate |              |
+>|              |              |              | d by         |              |
+>|              |              |              | default)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hessian_appr | OT_STRING    | exact        | Indicates    | CasADi::Ipop |
+>| oximation    |              |              | what Hessian | tInternal    |
+>|              |              |              | information  |              |
+>|              |              |              | is to be     |              |
+>|              |              |              | used. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hessian_appr | OT_STRING    | nonlinear-   | Indicates in | CasADi::Ipop |
+>| oximation_sp |              | variables    | which        | tInternal    |
+>| ace          |              |              | subspace the |              |
+>|              |              |              | Hessian      |              |
+>|              |              |              | information  |              |
+>|              |              |              | is to be app |              |
+>|              |              |              | roximated.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hessian_cons | OT_STRING    | no           | Indicates    | CasADi::Ipop |
+>| tant         |              |              | whether the  | tInternal    |
+>|              |              |              | problem is a |              |
+>|              |              |              | quadratic    |              |
+>|              |              |              | problem (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| honor_origin | OT_STRING    | yes          | Indicates    | CasADi::Ipop |
+>| al_bounds    |              |              | whether      | tInternal    |
+>|              |              |              | final points |              |
+>|              |              |              | should be    |              |
+>|              |              |              | projected    |              |
+>|              |              |              | into         |              |
+>|              |              |              | original     |              |
+>|              |              |              | bounds. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| _vec         |              |              | true, the    | olverInterna |
+>|              |              |              | input shape  | l            |
+>|              |              |              | of F will    |              |
+>|              |              |              | not be       |              |
+>|              |              |              | checked.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inf_pr_outpu | OT_STRING    | original     | Determines   | CasADi::Ipop |
+>| t            |              |              | what value   | tInternal    |
+>|              |              |              | is printed   |              |
+>|              |              |              | in the       |              |
+>|              |              |              | "inf_pr"     |              |
+>|              |              |              | output       |              |
+>|              |              |              | column. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
+>| llback       |              | )            | that will be | olverInterna |
+>|              |              |              | called at    | l            |
+>|              |              |              | each         |              |
+>|              |              |              | iteration    |              |
+>|              |              |              | with the     |              |
+>|              |              |              | solver as    |              |
+>|              |              |              | input. Check |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n of         |              |
+>|              |              |              | Callback .   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| llback_ignor |              |              | true, errors | olverInterna |
+>| e_errors     |              |              | thrown by it | l            |
+>|              |              |              | eration_call |              |
+>|              |              |              | back will be |              |
+>|              |              |              | ignored.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
+>| llback_step  |              |              | the callback | olverInterna |
+>|              |              |              | function     | l            |
+>|              |              |              | every few    |              |
+>|              |              |              | iterations.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jac_c_consta | OT_STRING    | no           | Indicates    | CasADi::Ipop |
+>| nt           |              |              | whether all  | tInternal    |
+>|              |              |              | equality     |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | are linear   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jac_d_consta | OT_STRING    | no           | Indicates    | CasADi::Ipop |
+>| nt           |              |              | whether all  | tInternal    |
+>|              |              |              | inequality   |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | are linear   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jac_f        | OT_Function  | None         | Function for | CasADi::Ipop |
+>|              |              |              | calculating  | tInternal    |
+>|              |              |              | the jacobian |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective    |              |
+>|              |              |              | (sparse row, |              |
+>|              |              |              | autogenerate |              |
+>|              |              |              | d by         |              |
+>|              |              |              | default)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jac_g        | OT_Function  | None         | Function for | CasADi::Ipop |
+>|              |              |              | calculating  | tInternal    |
+>|              |              |              | the Jacobian |              |
+>|              |              |              | of the       |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | (autogenerat |              |
+>|              |              |              | ed by        |              |
+>|              |              |              | default)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jacobian_app | OT_STRING    | exact        | Specifies    | CasADi::Ipop |
+>| roximation   |              |              | technique to | tInternal    |
+>|              |              |              | compute      |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | Jacobian     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jacobian_reg | OT_REAL      | 0.250        | Exponent for | CasADi::Ipop |
+>| ularization_ |              |              | mu in the re | tInternal    |
+>| exponent     |              |              | gularization |              |
+>|              |              |              | for rank-    |              |
+>|              |              |              | deficient    |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| jacobian_reg | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
+>| ularization_ |              |              | regularizati | tInternal    |
+>| value        |              |              | on for rank- |              |
+>|              |              |              | deficient    |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| kappa_d      | OT_REAL      | 0.000        | Weight for   | CasADi::Ipop |
+>|              |              |              | linear       | tInternal    |
+>|              |              |              | damping term |              |
+>|              |              |              | (to handle   |              |
+>|              |              |              | one-sided    |              |
+>|              |              |              | bounds).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| kappa_sigma  | OT_REAL      | 1.000e+10    | Factor       | CasADi::Ipop |
+>|              |              |              | limiting the | tInternal    |
+>|              |              |              | deviation of |              |
+>|              |              |              | dual         |              |
+>|              |              |              | variables    |              |
+>|              |              |              | from primal  |              |
+>|              |              |              | estimates.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| kappa_soc    | OT_REAL      | 0.990        | Factor in    | CasADi::Ipop |
+>|              |              |              | the          | tInternal    |
+>|              |              |              | sufficient   |              |
+>|              |              |              | reduction    |              |
+>|              |              |              | rule for     |              |
+>|              |              |              | second order |              |
+>|              |              |              | correction.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| kappa_x_dis  | OT_REAL      | 100          | a parameter  | CasADi::Ipop |
+>|              |              |              | used to      | tInternal    |
+>|              |              |              | check if the |              |
+>|              |              |              | fast         |              |
+>|              |              |              | direction    |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | asthe line   |              |
+>|              |              |              | search       |              |
+>|              |              |              | direction    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| kappa_y_dis  | OT_REAL      | 10000        | a parameter  | CasADi::Ipop |
+>|              |              |              | used to      | tInternal    |
+>|              |              |              | check if the |              |
+>|              |              |              | fast         |              |
+>|              |              |              | direction    |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | asthe line   |              |
+>|              |              |              | search       |              |
+>|              |              |              | direction    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| least_square | OT_STRING    | no           | Least square | CasADi::Ipop |
+>| _init_duals  |              |              | initializati | tInternal    |
+>|              |              |              | on of all    |              |
+>|              |              |              | dual         |              |
+>|              |              |              | variables    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| least_square | OT_STRING    | no           | Least square | CasADi::Ipop |
+>| _init_primal |              |              | initializati | tInternal    |
+>|              |              |              | on of the    |              |
+>|              |              |              | primal       |              |
+>|              |              |              | variables    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_STRING    | sherman-     | Strategy for | CasADi::Ipop |
+>| ry_aug_solve |              | morrison     | solving the  | tInternal    |
+>| r            |              |              | augmented    |              |
+>|              |              |              | system for   |              |
+>|              |              |              | low-rank     |              |
+>|              |              |              | Hessian.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_REAL      | 1            | Value for B0 | CasADi::Ipop |
+>| ry_init_val  |              |              | in low-rank  | tInternal    |
+>|              |              |              | update. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_REAL      | 100000000    | Upper bound  | CasADi::Ipop |
+>| ry_init_val_ |              |              | on value for | tInternal    |
+>| max          |              |              | B0 in low-   |              |
+>|              |              |              | rank update. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_REAL      | 0.000        | Lower bound  | CasADi::Ipop |
+>| ry_init_val_ |              |              | on value for | tInternal    |
+>| min          |              |              | B0 in low-   |              |
+>|              |              |              | rank update. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_STRING    | scalar1      | Initializati | CasADi::Ipop |
+>| ry_initializ |              |              | on strategy  | tInternal    |
+>| ation        |              |              | for the      |              |
+>|              |              |              | limited      |              |
+>|              |              |              | memory       |              |
+>|              |              |              | quasi-Newton |              |
+>|              |              |              | approximatio |              |
+>|              |              |              | n. (see      |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_INTEGER   | 6            | Maximum size | CasADi::Ipop |
+>| ry_max_histo |              |              | of the       | tInternal    |
+>| ry           |              |              | history for  |              |
+>|              |              |              | the limited  |              |
+>|              |              |              | quasi-Newton |              |
+>|              |              |              | Hessian appr |              |
+>|              |              |              | oximation.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_INTEGER   | 2            | Threshold    | CasADi::Ipop |
+>| ry_max_skipp |              |              | for          | tInternal    |
+>| ing          |              |              | successive   |              |
+>|              |              |              | iterations   |              |
+>|              |              |              | where update |              |
+>|              |              |              | is skipped.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_STRING    | no           | Determines   | CasADi::Ipop |
+>| ry_special_f |              |              | if the       | tInternal    |
+>| or_resto     |              |              | quasi-Newton |              |
+>|              |              |              | updates      |              |
+>|              |              |              | should be    |              |
+>|              |              |              | special      |              |
+>|              |              |              | during the   |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| limited_memo | OT_STRING    | bfgs         | Quasi-Newton | CasADi::Ipop |
+>| ry_update_ty |              |              | update       | tInternal    |
+>| pe           |              |              | formula for  |              |
+>|              |              |              | the limited  |              |
+>|              |              |              | memory appro |              |
+>|              |              |              | ximation.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| line_search_ | OT_STRING    | filter       | Globalizatio | CasADi::Ipop |
+>| method       |              |              | n method     | tInternal    |
+>|              |              |              | used in      |              |
+>|              |              |              | backtracking |              |
+>|              |              |              | line search  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_scali | OT_STRING    | yes          | Flag         | CasADi::Ipop |
+>| ng_on_demand |              |              | indicating   | tInternal    |
+>|              |              |              | that linear  |              |
+>|              |              |              | scaling is   |              |
+>|              |              |              | only done if |              |
+>|              |              |              | it seems     |              |
+>|              |              |              | required.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | ma27         | Linear       | CasADi::Ipop |
+>| r            |              |              | solver used  | tInternal    |
+>|              |              |              | for step com |              |
+>|              |              |              | putations.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_syste | OT_STRING    | mc19         | Method for   | CasADi::Ipop |
+>| m_scaling    |              |              | scaling the  | tInternal    |
+>|              |              |              | linear       |              |
+>|              |              |              | system. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_ignore_ | OT_STRING    | no           | Enables      | CasADi::Ipop |
+>| singularity  |              |              | MA27's       | tInternal    |
+>|              |              |              | ability to   |              |
+>|              |              |              | solve a      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | system even  |              |
+>|              |              |              | if the       |              |
+>|              |              |              | matrix is    |              |
+>|              |              |              | singular.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_la_init | OT_REAL      | 5            | Real         | CasADi::Ipop |
+>| _factor      |              |              | workspace    | tInternal    |
+>|              |              |              | memory for   |              |
+>|              |              |              | MA27. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_liw_ini | OT_REAL      | 5            | Integer      | CasADi::Ipop |
+>| t_factor     |              |              | workspace    | tInternal    |
+>|              |              |              | memory for   |              |
+>|              |              |              | MA27. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_meminc_ | OT_REAL      | 10           | Increment    | CasADi::Ipop |
+>| factor       |              |              | factor for   | tInternal    |
+>|              |              |              | workspace    |              |
+>|              |              |              | size for     |              |
+>|              |              |              | MA27. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
+>|              |              |              | tolerance    | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver MA27. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_pivtolm | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
+>| ax           |              |              | pivot        | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver MA27. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma27_skip_in | OT_STRING    | no           | Always       | CasADi::Ipop |
+>| ertia_check  |              |              | pretend      | tInternal    |
+>|              |              |              | inertia is   |              |
+>|              |              |              | correct.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma28_pivtol  | OT_REAL      | 0.010        | Pivot        | CasADi::Ipop |
+>|              |              |              | tolerance    | tInternal    |
+>|              |              |              | for linear   |              |
+>|              |              |              | solver MA28. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_automat | OT_STRING    | yes          | Controls     | CasADi::Ipop |
+>| ic_scaling   |              |              | MA57         | tInternal    |
+>|              |              |              | automatic    |              |
+>|              |              |              | scaling (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_block_s | OT_INTEGER   | 16           | Controls     | CasADi::Ipop |
+>| ize          |              |              | block size   | tInternal    |
+>|              |              |              | used by      |              |
+>|              |              |              | Level 3 BLAS |              |
+>|              |              |              | in MA57BD    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_node_am | OT_INTEGER   | 16           | Node         | CasADi::Ipop |
+>| algamation   |              |              | amalgamation | tInternal    |
+>|              |              |              | parameter    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_pivot_o | OT_INTEGER   | 5            | Controls     | CasADi::Ipop |
+>| rder         |              |              | pivot order  | tInternal    |
+>|              |              |              | in MA57 (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
+>|              |              |              | tolerance    | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver MA57. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_pivtolm | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
+>| ax           |              |              | pivot        | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver MA57. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_pre_all | OT_REAL      | 1.050        | Safety       | CasADi::Ipop |
+>| oc           |              |              | factor for   | tInternal    |
+>|              |              |              | work space   |              |
+>|              |              |              | memory       |              |
+>|              |              |              | allocation   |              |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver MA57. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma57_small_p | OT_INTEGER   | 0            | If set to 1, | CasADi::Ipop |
+>| ivot_flag    |              |              | then when    | tInternal    |
+>|              |              |              | small        |              |
+>|              |              |              | entries      |              |
+>|              |              |              | defined by   |              |
+>|              |              |              | CNTL(2) are  |              |
+>|              |              |              | detected     |              |
+>|              |              |              | they are     |              |
+>|              |              |              | removed and  |              |
+>|              |              |              | the correspo |              |
+>|              |              |              | nding pivots |              |
+>|              |              |              | placed at    |              |
+>|              |              |              | the end of   |              |
+>|              |              |              | the factoriz |              |
+>|              |              |              | ation. This  |              |
+>|              |              |              | can be       |              |
+>|              |              |              | particularly |              |
+>|              |              |              | efficient if |              |
+>|              |              |              | the matrix   |              |
+>|              |              |              | is highly    |              |
+>|              |              |              | rank         |              |
+>|              |              |              | deficient.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma86_nemin   | OT_INTEGER   | 32           | Node         | CasADi::Ipop |
+>|              |              |              | Amalgamation | tInternal    |
+>|              |              |              | parameter    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma86_print_l | OT_INTEGER   | 0            | Debug        | CasADi::Ipop |
+>| evel         |              |              | printing     | tInternal    |
+>|              |              |              | level for    |              |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver MA86  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma86_small   | OT_REAL      | 0.000        | Zero Pivot   | CasADi::Ipop |
+>|              |              |              | Threshold    | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma86_static  | OT_REAL      | 0            | Static       | CasADi::Ipop |
+>|              |              |              | Pivoting     | tInternal    |
+>|              |              |              | Threshold    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma86_u       | OT_REAL      | 0.000        | Pivoting     | CasADi::Ipop |
+>|              |              |              | Threshold    | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ma86_umax    | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
+>|              |              |              | Pivoting     | tInternal    |
+>|              |              |              | Threshold    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| magic_steps  | OT_STRING    | no           | Enables      | CasADi::Ipop |
+>|              |              |              | magic steps. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_cpu_time | OT_REAL      | 1000000      | Maximum      | CasADi::Ipop |
+>|              |              |              | number of    | tInternal    |
+>|              |              |              | CPU seconds. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_filter_r | OT_INTEGER   | 5            | Maximal      | CasADi::Ipop |
+>| esets        |              |              | allowed      | tInternal    |
+>|              |              |              | number of    |              |
+>|              |              |              | filter       |              |
+>|              |              |              | resets (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_hessian_ | OT_REAL      | 1.000e+20    | Maximum      | CasADi::Ipop |
+>| perturbation |              |              | value of reg | tInternal    |
+>|              |              |              | ularization  |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | for handling |              |
+>|              |              |              | negative     |              |
+>|              |              |              | curvature.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter     | OT_INTEGER   | 3000         | Maximum      | CasADi::Ipop |
+>|              |              |              | number of    | tInternal    |
+>|              |              |              | iterations.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_refineme | OT_INTEGER   | 10           | Maximum      | CasADi::Ipop |
+>| nt_steps     |              |              | number of    | tInternal    |
+>|              |              |              | iterative    |              |
+>|              |              |              | refinement   |              |
+>|              |              |              | steps per    |              |
+>|              |              |              | linear       |              |
+>|              |              |              | system       |              |
+>|              |              |              | solve. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_resto_it | OT_INTEGER   | 3000000      | Maximum      | CasADi::Ipop |
+>| er           |              |              | number of    | tInternal    |
+>|              |              |              | successive   |              |
+>|              |              |              | iterations   |              |
+>|              |              |              | in           |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_soc      | OT_INTEGER   | 4            | Maximum      | CasADi::Ipop |
+>|              |              |              | number of    | tInternal    |
+>|              |              |              | second order |              |
+>|              |              |              | correction   |              |
+>|              |              |              | trial steps  |              |
+>|              |              |              | at each      |              |
+>|              |              |              | iteration.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_soft_res | OT_INTEGER   | 10           | Maximum      | CasADi::Ipop |
+>| to_iters     |              |              | number of    | tInternal    |
+>|              |              |              | iterations   |              |
+>|              |              |              | performed    |              |
+>|              |              |              | successively |              |
+>|              |              |              | in soft      |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mehrotra_alg | OT_STRING    | no           | Indicates if | CasADi::Ipop |
+>| orithm       |              |              | we want to   | tInternal    |
+>|              |              |              | do           |              |
+>|              |              |              | Mehrotra's   |              |
+>|              |              |              | algorithm.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| min_alpha_pr | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
+>| imal         |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| min_hessian_ | OT_REAL      | 0.000        | Smallest     | CasADi::Ipop |
+>| perturbation |              |              | perturbation | tInternal    |
+>|              |              |              | of the       |              |
+>|              |              |              | Hessian      |              |
+>|              |              |              | block. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| min_refineme | OT_INTEGER   | 1            | Minimum      | CasADi::Ipop |
+>| nt_steps     |              |              | number of    | tInternal    |
+>|              |              |              | iterative    |              |
+>|              |              |              | refinement   |              |
+>|              |              |              | steps per    |              |
+>|              |              |              | linear       |              |
+>|              |              |              | system       |              |
+>|              |              |              | solve. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::Ipop |
+>|              |              |              | uts)  (eval_ | tInternal    |
+>|              |              |              | f|eval_g|eva |              |
+>|              |              |              | l_jac_g|eval |              |
+>|              |              |              | _grad_f|eval |              |
+>|              |              |              | _h)          |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_allow_fas | OT_STRING    | yes          | Allow        | CasADi::Ipop |
+>| t_monotone_d |              |              | skipping of  | tInternal    |
+>| ecrease      |              |              | barrier      |              |
+>|              |              |              | problem if   |              |
+>|              |              |              | barrier test |              |
+>|              |              |              | is already   |              |
+>|              |              |              | met. (see    |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_init      | OT_REAL      | 0.100        | Initial      | CasADi::Ipop |
+>|              |              |              | value for    | tInternal    |
+>|              |              |              | the barrier  |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_linear_de | OT_REAL      | 0.200        | Determines   | CasADi::Ipop |
+>| crease_facto |              |              | linear       | tInternal    |
+>| r            |              |              | decrease     |              |
+>|              |              |              | rate of      |              |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_max       | OT_REAL      | 100000       | Maximum      | CasADi::Ipop |
+>|              |              |              | value for    | tInternal    |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_max_fact  | OT_REAL      | 1000         | Factor for i | CasADi::Ipop |
+>|              |              |              | nitializatio | tInternal    |
+>|              |              |              | n of maximum |              |
+>|              |              |              | value for    |              |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_min       | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
+>|              |              |              | value for    | tInternal    |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_oracle    | OT_STRING    | quality-     | Oracle for a | CasADi::Ipop |
+>|              |              | function     | new barrier  | tInternal    |
+>|              |              |              | parameter in |              |
+>|              |              |              | the adaptive |              |
+>|              |              |              | strategy.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_strategy  | OT_STRING    | monotone     | Update       | CasADi::Ipop |
+>|              |              |              | strategy for | tInternal    |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_superline | OT_REAL      | 1.500        | Determines   | CasADi::Ipop |
+>| ar_decrease_ |              |              | superlinear  | tInternal    |
+>| power        |              |              | decrease     |              |
+>|              |              |              | rate of      |              |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mu_target    | OT_REAL      | 0            | Desired      | CasADi::Ipop |
+>|              |              |              | value of com | tInternal    |
+>|              |              |              | plementarity |              |
+>|              |              |              | . (see IPOPT |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n)           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mult_diverg_ | OT_REAL      | 0.000        | tolerance    | CasADi::Ipop |
+>| feasibility_ |              |              | for deciding | tInternal    |
+>| tol          |              |              | if the       |              |
+>|              |              |              | multipliers  |              |
+>|              |              |              | are          |              |
+>|              |              |              | diverging    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mult_diverg_ | OT_REAL      | 100000000    | tolerance    | CasADi::Ipop |
+>| y_tol        |              |              | for deciding | tInternal    |
+>|              |              |              | if the       |              |
+>|              |              |              | multipliers  |              |
+>|              |              |              | are          |              |
+>|              |              |              | diverging    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_dep_to | OT_REAL      | -1           | Pivot        | CasADi::Ipop |
+>| l            |              |              | threshold    | tInternal    |
+>|              |              |              | for          |              |
+>|              |              |              | detection of |              |
+>|              |              |              | linearly     |              |
+>|              |              |              | dependent    |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | in MUMPS.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_mem_pe | OT_INTEGER   | 1000         | Percentage   | CasADi::Ipop |
+>| rcent        |              |              | increase in  | tInternal    |
+>|              |              |              | the          |              |
+>|              |              |              | estimated    |              |
+>|              |              |              | working      |              |
+>|              |              |              | space for    |              |
+>|              |              |              | MUMPS. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_permut | OT_INTEGER   | 7            | Controls     | CasADi::Ipop |
+>| ing_scaling  |              |              | permuting    | tInternal    |
+>|              |              |              | and scaling  |              |
+>|              |              |              | in MUMPS     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_pivot_ | OT_INTEGER   | 7            | Controls     | CasADi::Ipop |
+>| order        |              |              | pivot order  | tInternal    |
+>|              |              |              | in MUMPS     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_pivtol | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
+>|              |              |              | tolerance    | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver       |              |
+>|              |              |              | MUMPS. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_pivtol | OT_REAL      | 0.100        | Maximum      | CasADi::Ipop |
+>| max          |              |              | pivot        | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver       |              |
+>|              |              |              | MUMPS. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| mumps_scalin | OT_INTEGER   | 77           | Controls     | CasADi::Ipop |
+>| g            |              |              | scaling in   | tInternal    |
+>|              |              |              | MUMPS (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| neg_curv_tes | OT_REAL      | 0            | Tolerance    | CasADi::Ipop |
+>| t_tol        |              |              | for          | tInternal    |
+>|              |              |              | heuristic to |              |
+>|              |              |              | ignore wrong |              |
+>|              |              |              | inertia.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| never_use_fa | OT_STRING    | no           | Toggle to    | CasADi::Ipop |
+>| ct_cgpen_dir |              |              | switch off   | tInternal    |
+>| ection       |              |              | the fast     |              |
+>|              |              |              | Chen-        |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | direction    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| never_use_pi | OT_STRING    | no           | Toggle to    | CasADi::Ipop |
+>| ecewise_pena |              |              | switch off   | tInternal    |
+>| lty_ls       |              |              | the          |              |
+>|              |              |              | piecewise    |              |
+>|              |              |              | penalty      |              |
+>|              |              |              | method (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_lower_bo | OT_REAL      | -1.000e+19   | any bound    | CasADi::Ipop |
+>| und_inf      |              |              | less or      | tInternal    |
+>|              |              |              | equal this   |              |
+>|              |              |              | value will   |              |
+>|              |              |              | be           |              |
+>|              |              |              | considered   |              |
+>|              |              |              | -inf (i.e.   |              |
+>|              |              |              | not lower    |              |
+>|              |              |              | bounded).    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_scaling_ | OT_REAL      | 0            | Target value | CasADi::Ipop |
+>| constr_targe |              |              | for          | tInternal    |
+>| t_gradient   |              |              | constraint   |              |
+>|              |              |              | function     |              |
+>|              |              |              | gradient     |              |
+>|              |              |              | size. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_scaling_ | OT_REAL      | 100          | Maximum      | CasADi::Ipop |
+>| max_gradient |              |              | gradient     | tInternal    |
+>|              |              |              | after NLP    |              |
+>|              |              |              | scaling.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_scaling_ | OT_STRING    | gradient-    | Select the   | CasADi::Ipop |
+>| method       |              | based        | technique    | tInternal    |
+>|              |              |              | used for     |              |
+>|              |              |              | scaling the  |              |
+>|              |              |              | NLP. (see    |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_scaling_ | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
+>| min_value    |              |              | value of     | tInternal    |
+>|              |              |              | gradient-    |              |
+>|              |              |              | based        |              |
+>|              |              |              | scaling      |              |
+>|              |              |              | values. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_scaling_ | OT_REAL      | 0            | Target value | CasADi::Ipop |
+>| obj_target_g |              |              | for          | tInternal    |
+>| radient      |              |              | objective    |              |
+>|              |              |              | function     |              |
+>|              |              |              | gradient     |              |
+>|              |              |              | size. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_upper_bo | OT_REAL      | 1.000e+19    | any bound    | CasADi::Ipop |
+>| und_inf      |              |              | greater or   | tInternal    |
+>|              |              |              | this value   |              |
+>|              |              |              | will be      |              |
+>|              |              |              | considered   |              |
+>|              |              |              | +inf (i.e.   |              |
+>|              |              |              | not upper    |              |
+>|              |              |              | bounded).    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nu_inc       | OT_REAL      | 0.000        | Increment of | CasADi::Ipop |
+>|              |              |              | the penalty  | tInternal    |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nu_init      | OT_REAL      | 0.000        | Initial      | CasADi::Ipop |
+>|              |              |              | value of the | tInternal    |
+>|              |              |              | penalty      |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| num_linear_v | OT_INTEGER   | 0            | Number of    | CasADi::Ipop |
+>| ariables     |              |              | linear       | tInternal    |
+>|              |              |              | variables    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| obj_max_inc  | OT_REAL      | 5            | Determines   | CasADi::Ipop |
+>|              |              |              | the upper    | tInternal    |
+>|              |              |              | bound on the |              |
+>|              |              |              | acceptable   |              |
+>|              |              |              | increase of  |              |
+>|              |              |              | barrier      |              |
+>|              |              |              | objective    |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| obj_scaling_ | OT_REAL      | 1            | Scaling      | CasADi::Ipop |
+>| factor       |              |              | factor for   | tInternal    |
+>|              |              |              | the          |              |
+>|              |              |              | objective    |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| option_file_ | OT_STRING    |              | File name of | CasADi::Ipop |
+>| name         |              |              | options file | tInternal    |
+>|              |              |              | (to          |              |
+>|              |              |              | overwrite    |              |
+>|              |              |              | default).    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| output_file  | OT_STRING    |              | File name of | CasADi::Ipop |
+>|              |              |              | desired      | tInternal    |
+>|              |              |              | output file  |              |
+>|              |              |              | (leave unset |              |
+>|              |              |              | for no file  |              |
+>|              |              |              | output).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option.      | olverInterna |
+>|              |              |              | Expect F, G, | l            |
+>|              |              |              | H, J to have |              |
+>|              |              |              | an           |              |
+>|              |              |              | additional   |              |
+>|              |              |              | input        |              |
+>|              |              |              | argument     |              |
+>|              |              |              | appended at  |              |
+>|              |              |              | the end,     |              |
+>|              |              |              | denoting     |              |
+>|              |              |              | fixed        |              |
+>|              |              |              | parameters.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_INTEGER   | 5000         | Maximum Size | CasADi::Ipop |
+>| _coarse_size |              |              | of Coarse    | tInternal    |
+>|              |              |              | Grid Matrix  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_REAL      | 0.500        | dropping     | CasADi::Ipop |
+>| _dropping_fa |              |              | value for    | tInternal    |
+>| ctor         |              |              | incomplete   |              |
+>|              |              |              | factor (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_REAL      | 0.100        | dropping     | CasADi::Ipop |
+>| _dropping_sc |              |              | value for    | tInternal    |
+>| hur          |              |              | sparsify     |              |
+>|              |              |              | schur        |              |
+>|              |              |              | complement   |              |
+>|              |              |              | factor (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_REAL      | 5000000      | (see IPOPT d | CasADi::Ipop |
+>| _inverse_nor |              |              | ocumentation | tInternal    |
+>| m_factor     |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_INTEGER   | 10           | Maximum Size | CasADi::Ipop |
+>| _max_levels  |              |              | of Grid      | tInternal    |
+>|              |              |              | Levels (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_INTEGER   | 10000000     | max fill for | CasADi::Ipop |
+>| _max_row_fil |              |              | each row     | tInternal    |
+>| l            |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_REAL      | 0.000        | Relative     | CasADi::Ipop |
+>| _relative_to |              |              | Residual     | tInternal    |
+>| l            |              |              | Convergence  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_iter | OT_STRING    | no           | Switch on    | CasADi::Ipop |
+>| ative        |              |              | iterative    | tInternal    |
+>|              |              |              | solver in    |              |
+>|              |              |              | Pardiso      |              |
+>|              |              |              | library (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_matc | OT_STRING    | complete+2x2 | Matching     | CasADi::Ipop |
+>| hing_strateg |              |              | strategy to  | tInternal    |
+>| y            |              |              | be used by   |              |
+>|              |              |              | Pardiso (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_max_ | OT_INTEGER   | 4            | Maximal      | CasADi::Ipop |
+>| droptol_corr |              |              | number of    | tInternal    |
+>| ections      |              |              | decreases of |              |
+>|              |              |              | drop         |              |
+>|              |              |              | tolerance    |              |
+>|              |              |              | during one   |              |
+>|              |              |              | solve. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_max_ | OT_INTEGER   | 500          | Maximum      | CasADi::Ipop |
+>| iter         |              |              | number of    | tInternal    |
+>|              |              |              | Krylov-      |              |
+>|              |              |              | Subspace     |              |
+>|              |              |              | Iteration    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_msgl | OT_INTEGER   | 0            | Pardiso      | CasADi::Ipop |
+>| vl           |              |              | message      | tInternal    |
+>|              |              |              | level (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_out_ | OT_INTEGER   | 0            | Enables out- | CasADi::Ipop |
+>| of_core_powe |              |              | of-core      | tInternal    |
+>| r            |              |              | variant of   |              |
+>|              |              |              | Pardiso (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_redo | OT_STRING    | no           | Toggle for   | CasADi::Ipop |
+>| _symbolic_fa |              |              | handling     | tInternal    |
+>| ct_only_if_i |              |              | case when    |              |
+>| nertia_wrong |              |              | elements     |              |
+>|              |              |              | were         |              |
+>|              |              |              | perturbed by |              |
+>|              |              |              | Pardiso.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_repe | OT_STRING    | no           | Interpretati | CasADi::Ipop |
+>| ated_perturb |              |              | on of        | tInternal    |
+>| ation_means_ |              |              | perturbed    |              |
+>| singular     |              |              | elements.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pardiso_skip | OT_STRING    | no           | Always       | CasADi::Ipop |
+>| _inertia_che |              |              | pretend      | tInternal    |
+>| ck           |              |              | inertia is   |              |
+>|              |              |              | correct.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pass_nonline | OT_BOOLEAN   | False        | n/a          | CasADi::Ipop |
+>| ar_variables |              |              |              | tInternal    |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pen_des_fact | OT_REAL      | 0.200        | a parameter  | CasADi::Ipop |
+>|              |              |              | used in      | tInternal    |
+>|              |              |              | penalty      |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | computation  |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pen_init_fac | OT_REAL      | 50           | a parameter  | CasADi::Ipop |
+>|              |              |              | used to      | tInternal    |
+>|              |              |              | choose       |              |
+>|              |              |              | initial      |              |
+>|              |              |              | penalty para |              |
+>|              |              |              | meterswhen   |              |
+>|              |              |              | the          |              |
+>|              |              |              | regularized  |              |
+>|              |              |              | Newton       |              |
+>|              |              |              | method is    |              |
+>|              |              |              | used. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pen_theta_ma | OT_REAL      | 10000        | Determines   | CasADi::Ipop |
+>| x_fact       |              |              | upper bound  | tInternal    |
+>|              |              |              | for          |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation in |              |
+>|              |              |              | the filter.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| penalty_init | OT_REAL      | 100000       | Maximal      | CasADi::Ipop |
+>| _max         |              |              | value for    | tInternal    |
+>|              |              |              | the intial   |              |
+>|              |              |              | penalty      |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| penalty_init | OT_REAL      | 1            | Minimal      | CasADi::Ipop |
+>| _min         |              |              | value for    | tInternal    |
+>|              |              |              | the intial   |              |
+>|              |              |              | penalty      |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | for line     |              |
+>|              |              |              | search(for   |              |
+>|              |              |              | Chen-        |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| penalty_max  | OT_REAL      | 1.000e+30    | Maximal      | CasADi::Ipop |
+>|              |              |              | value for    | tInternal    |
+>|              |              |              | the penalty  |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| penalty_upda | OT_REAL      | 10           | LIFENG       | CasADi::Ipop |
+>| te_compl_tol |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| penalty_upda | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
+>| te_infeasibi |              |              | for infeasib | tInternal    |
+>| lity_tol     |              |              | ility in     |              |
+>|              |              |              | penalty      |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | update test. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| perturb_alwa | OT_STRING    | no           | Active       | CasADi::Ipop |
+>| ys_cd        |              |              | permanent    | tInternal    |
+>|              |              |              | perturbation |              |
+>|              |              |              | of           |              |
+>|              |              |              | constraint l |              |
+>|              |              |              | inearization |              |
+>|              |              |              | . (see IPOPT |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n)           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| perturb_dec_ | OT_REAL      | 0.333        | Decrease     | CasADi::Ipop |
+>| fact         |              |              | factor for   | tInternal    |
+>|              |              |              | x-s perturba |              |
+>|              |              |              | tion. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| perturb_inc_ | OT_REAL      | 8            | Increase     | CasADi::Ipop |
+>| fact         |              |              | factor for   | tInternal    |
+>|              |              |              | x-s perturba |              |
+>|              |              |              | tion. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| perturb_inc_ | OT_REAL      | 100          | Increase     | CasADi::Ipop |
+>| fact_first   |              |              | factor for   | tInternal    |
+>|              |              |              | x-s          |              |
+>|              |              |              | perturbation |              |
+>|              |              |              | for very     |              |
+>|              |              |              | first pertur |              |
+>|              |              |              | bation. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| piecewisepen | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
+>| alty_gamma_i |              |              | WRITES THIS. | tInternal    |
+>| nfeasi       |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| piecewisepen | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
+>| alty_gamma_o |              |              | WRITES THIS. | tInternal    |
+>| bj           |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| point_pertur | OT_REAL      | 10           | Maximal      | CasADi::Ipop |
+>| bation_radiu |              |              | perturbation | tInternal    |
+>| s            |              |              | of an        |              |
+>|              |              |              | evaluation   |              |
+>|              |              |              | point. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_info_s | OT_STRING    | no           | Enables      | CasADi::Ipop |
+>| tring        |              |              | printing of  | tInternal    |
+>|              |              |              | additional   |              |
+>|              |              |              | info string  |              |
+>|              |              |              | at end of    |              |
+>|              |              |              | iteration    |              |
+>|              |              |              | output. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_level  | OT_INTEGER   | 5            | Output       | CasADi::Ipop |
+>|              |              |              | verbosity    | tInternal    |
+>|              |              |              | level. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_option | OT_STRING    | no           | Switch to    | CasADi::Ipop |
+>| s_documentat |              |              | print all    | tInternal    |
+>| ion          |              |              | algorithmic  |              |
+>|              |              |              | options.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_option | OT_STRING    | no           | Undocumented | CasADi::Ipop |
+>| s_latex_mode |              |              | (see IPOPT d | tInternal    |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_time   | OT_BOOLEAN   | True         | print        | CasADi::Ipop |
+>|              |              |              | information  | tInternal    |
+>|              |              |              | about        |              |
+>|              |              |              | execution    |              |
+>|              |              |              | time         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_timing | OT_STRING    | no           | Switch to    | CasADi::Ipop |
+>| _statistics  |              |              | print timing | tInternal    |
+>|              |              |              | statistics.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_user_o | OT_STRING    | no           | Print all    | CasADi::Ipop |
+>| ptions       |              |              | options set  | tInternal    |
+>|              |              |              | by the user. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quality_func | OT_STRING    | none         | The          | CasADi::Ipop |
+>| tion_balanci |              |              | balancing    | tInternal    |
+>| ng_term      |              |              | term         |              |
+>|              |              |              | included in  |              |
+>|              |              |              | the quality  |              |
+>|              |              |              | function for |              |
+>|              |              |              | centrality.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quality_func | OT_STRING    | none         | The penalty  | CasADi::Ipop |
+>| tion_central |              |              | term for     | tInternal    |
+>| ity          |              |              | centrality   |              |
+>|              |              |              | that is      |              |
+>|              |              |              | included in  |              |
+>|              |              |              | quality      |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quality_func | OT_INTEGER   | 8            | Maximum      | CasADi::Ipop |
+>| tion_max_sec |              |              | number of    | tInternal    |
+>| tion_steps   |              |              | search steps |              |
+>|              |              |              | during       |              |
+>|              |              |              | direct       |              |
+>|              |              |              | search       |              |
+>|              |              |              | procedure    |              |
+>|              |              |              | determining  |              |
+>|              |              |              | the optimal  |              |
+>|              |              |              | centering    |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quality_func | OT_STRING    | 2-norm-      | Norm used    | CasADi::Ipop |
+>| tion_norm_ty |              | squared      | for          | tInternal    |
+>| pe           |              |              | components   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | quality      |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quality_func | OT_REAL      | 0            | Tolerance    | CasADi::Ipop |
+>| tion_section |              |              | for the      | tInternal    |
+>| _qf_tol      |              |              | golden       |              |
+>|              |              |              | section      |              |
+>|              |              |              | search       |              |
+>|              |              |              | procedure    |              |
+>|              |              |              | determining  |              |
+>|              |              |              | the optimal  |              |
+>|              |              |              | centering    |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | (in the      |              |
+>|              |              |              | function     |              |
+>|              |              |              | value        |              |
+>|              |              |              | space). (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quality_func | OT_REAL      | 0.010        | Tolerance    | CasADi::Ipop |
+>| tion_section |              |              | for the      | tInternal    |
+>| _sigma_tol   |              |              | section      |              |
+>|              |              |              | search       |              |
+>|              |              |              | procedure    |              |
+>|              |              |              | determining  |              |
+>|              |              |              | the optimal  |              |
+>|              |              |              | centering    |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | (in sigma    |              |
+>|              |              |              | space). (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| recalc_y     | OT_STRING    | no           | Tells the    | CasADi::Ipop |
+>|              |              |              | algorithm to | tInternal    |
+>|              |              |              | recalculate  |              |
+>|              |              |              | the equality |              |
+>|              |              |              | and          |              |
+>|              |              |              | inequality   |              |
+>|              |              |              | multipliers  |              |
+>|              |              |              | as least     |              |
+>|              |              |              | square       |              |
+>|              |              |              | estimates.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| recalc_y_fea | OT_REAL      | 0.000        | Feasibility  | CasADi::Ipop |
+>| s_tol        |              |              | threshold    | tInternal    |
+>|              |              |              | for recomput |              |
+>|              |              |              | ation of     |              |
+>|              |              |              | multipliers. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| replace_boun | OT_STRING    | no           | Indicates if | CasADi::Ipop |
+>| ds           |              |              | all variable | tInternal    |
+>|              |              |              | bounds       |              |
+>|              |              |              | should be    |              |
+>|              |              |              | replaced by  |              |
+>|              |              |              | inequality   |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| required_inf | OT_REAL      | 0.900        | Required     | CasADi::Ipop |
+>| easibility_r |              |              | reduction of | tInternal    |
+>| eduction     |              |              | infeasibilit |              |
+>|              |              |              | y before     |              |
+>|              |              |              | leaving      |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| residual_imp | OT_REAL      | 1.000        | Minimal      | CasADi::Ipop |
+>| rovement_fac |              |              | required     | tInternal    |
+>| tor          |              |              | reduction of |              |
+>|              |              |              | residual     |              |
+>|              |              |              | test ratio   |              |
+>|              |              |              | in iterative |              |
+>|              |              |              | refinement.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| residual_rat | OT_REAL      | 0.000        | Iterative    | CasADi::Ipop |
+>| io_max       |              |              | refinement   | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| residual_rat | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
+>| io_singular  |              |              | for          | tInternal    |
+>|              |              |              | declaring    |              |
+>|              |              |              | linear       |              |
+>|              |              |              | system       |              |
+>|              |              |              | singular     |              |
+>|              |              |              | after failed |              |
+>|              |              |              | iterative    |              |
+>|              |              |              | refinement.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| resto_failur | OT_REAL      | 0            | Threshold    | CasADi::Ipop |
+>| e_feasibilit |              |              | for primal i | tInternal    |
+>| y_threshold  |              |              | nfeasibility |              |
+>|              |              |              | to declare   |              |
+>|              |              |              | failure of   |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| resto_penalt | OT_REAL      | 1000         | Penalty      | CasADi::Ipop |
+>| y_parameter  |              |              | parameter in | tInternal    |
+>|              |              |              | the          |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase        |              |
+>|              |              |              | objective    |              |
+>|              |              |              | function.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| resto_proxim | OT_REAL      | 1            | Weighting    | CasADi::Ipop |
+>| ity_weight   |              |              | factor for   | tInternal    |
+>|              |              |              | the          |              |
+>|              |              |              | proximity    |              |
+>|              |              |              | term in      |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase        |              |
+>|              |              |              | objective.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| rho          | OT_REAL      | 0.100        | Value in     | CasADi::Ipop |
+>|              |              |              | penalty      | tInternal    |
+>|              |              |              | parameter    |              |
+>|              |              |              | update       |              |
+>|              |              |              | formula.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| s_max        | OT_REAL      | 100          | Scaling      | CasADi::Ipop |
+>|              |              |              | threshold    | tInternal    |
+>|              |              |              | for the NLP  |              |
+>|              |              |              | error. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| s_phi        | OT_REAL      | 2.300        | Exponent for | CasADi::Ipop |
+>|              |              |              | linear       | tInternal    |
+>|              |              |              | barrier      |              |
+>|              |              |              | function     |              |
+>|              |              |              | model in the |              |
+>|              |              |              | switching    |              |
+>|              |              |              | rule. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| s_theta      | OT_REAL      | 1.100        | Exponent for | CasADi::Ipop |
+>|              |              |              | current      | tInternal    |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation in |              |
+>|              |              |              | the          |              |
+>|              |              |              | switching    |              |
+>|              |              |              | rule. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sb           | OT_STRING    | no           | (see IPOPT d | CasADi::Ipop |
+>|              |              |              | ocumentation | tInternal    |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sigma_max    | OT_REAL      | 100          | Maximum      | CasADi::Ipop |
+>|              |              |              | value of the | tInternal    |
+>|              |              |              | centering    |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sigma_min    | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
+>|              |              |              | value of the | tInternal    |
+>|              |              |              | centering    |              |
+>|              |              |              | parameter.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| skip_corr_if | OT_STRING    | yes          | Skip the     | CasADi::Ipop |
+>| _neg_curv    |              |              | corrector    | tInternal    |
+>|              |              |              | step in      |              |
+>|              |              |              | negative     |              |
+>|              |              |              | curvature    |              |
+>|              |              |              | iteration (u |              |
+>|              |              |              | nsupported!) |              |
+>|              |              |              | . (see IPOPT |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n)           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| skip_corr_in | OT_STRING    | yes          | Skip the     | CasADi::Ipop |
+>| _monotone_mo |              |              | corrector    | tInternal    |
+>| de           |              |              | step during  |              |
+>|              |              |              | monotone     |              |
+>|              |              |              | barrier      |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | mode (unsupp |              |
+>|              |              |              | orted!).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| skip_finaliz | OT_STRING    | no           | Indicates if | CasADi::Ipop |
+>| e_solution_c |              |              | call to NLP: | tInternal    |
+>| all          |              |              | :FinalizeSol |              |
+>|              |              |              | ution after  |              |
+>|              |              |              | optimization |              |
+>|              |              |              | should be    |              |
+>|              |              |              | suppressed   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| slack_bound_ | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
+>| frac         |              |              | minimum      | tInternal    |
+>|              |              |              | relative     |              |
+>|              |              |              | distance     |              |
+>|              |              |              | from the     |              |
+>|              |              |              | initial      |              |
+>|              |              |              | slack to     |              |
+>|              |              |              | bound. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| slack_bound_ | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
+>| push         |              |              | minimum      | tInternal    |
+>|              |              |              | absolute     |              |
+>|              |              |              | distance     |              |
+>|              |              |              | from the     |              |
+>|              |              |              | initial      |              |
+>|              |              |              | slack to     |              |
+>|              |              |              | bound. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| slack_move   | OT_REAL      | 0.000        | Correction   | CasADi::Ipop |
+>|              |              |              | size for     | tInternal    |
+>|              |              |              | very small   |              |
+>|              |              |              | slacks. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| soft_resto_p | OT_REAL      | 1.000        | Required     | CasADi::Ipop |
+>| derror_reduc |              |              | reduction in | tInternal    |
+>| tion_factor  |              |              | primal-dual  |              |
+>|              |              |              | error in the |              |
+>|              |              |              | soft         |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| start_with_r | OT_STRING    | no           | Tells        | CasADi::Ipop |
+>| esto         |              |              | algorithm to | tInternal    |
+>|              |              |              | switch to    |              |
+>|              |              |              | restoration  |              |
+>|              |              |              | phase in     |              |
+>|              |              |              | first        |              |
+>|              |              |              | iteration.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| suppress_all | OT_STRING    | no           | Undocumented | CasADi::Ipop |
+>| _output      |              |              | (see IPOPT d | tInternal    |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tau_min      | OT_REAL      | 0.990        | Lower bound  | CasADi::Ipop |
+>|              |              |              | on fraction- | tInternal    |
+>|              |              |              | to-the-      |              |
+>|              |              |              | boundary     |              |
+>|              |              |              | parameter    |              |
+>|              |              |              | tau. (see    |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| theta_max_fa | OT_REAL      | 10000        | Determines   | CasADi::Ipop |
+>| ct           |              |              | upper bound  | tInternal    |
+>|              |              |              | for          |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | violation in |              |
+>|              |              |              | the filter.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| theta_min    | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
+>|              |              |              | WRITES THIS. | tInternal    |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| theta_min_fa | OT_REAL      | 0.000        | Determines   | CasADi::Ipop |
+>| ct           |              |              | constraint   | tInternal    |
+>|              |              |              | violation    |              |
+>|              |              |              | threshold in |              |
+>|              |              |              | the          |              |
+>|              |              |              | switching    |              |
+>|              |              |              | rule. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tiny_step_to | OT_REAL      | 0.000        | Tolerance    | CasADi::Ipop |
+>| l            |              |              | for          | tInternal    |
+>|              |              |              | detecting    |              |
+>|              |              |              | numerically  |              |
+>|              |              |              | insignifican |              |
+>|              |              |              | t steps.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tiny_step_y_ | OT_REAL      | 0.010        | Tolerance    | CasADi::Ipop |
+>| tol          |              |              | for quitting | tInternal    |
+>|              |              |              | because of   |              |
+>|              |              |              | numerically  |              |
+>|              |              |              | insignifican |              |
+>|              |              |              | t steps.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol          | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
+>|              |              |              | convergence  | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | (relative).  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| var_integer_ | OT_DICTIONAR | None         | Integer      | CasADi::Ipop |
+>| md           | Y            |              | metadata (a  | tInternal    |
+>|              |              |              | dictionary   |              |
+>|              |              |              | with lists   |              |
+>|              |              |              | of integers) |              |
+>|              |              |              | about        |              |
+>|              |              |              | variables to |              |
+>|              |              |              | be passed to |              |
+>|              |              |              | IPOPT        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| var_numeric_ | OT_DICTIONAR | None         | Numeric      | CasADi::Ipop |
+>| md           | Y            |              | metadata (a  | tInternal    |
+>|              |              |              | dictionary   |              |
+>|              |              |              | with lists   |              |
+>|              |              |              | of reals)    |              |
+>|              |              |              | about        |              |
+>|              |              |              | variables to |              |
+>|              |              |              | be passed to |              |
+>|              |              |              | IPOPT        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| var_string_m | OT_DICTIONAR | None         | String       | CasADi::Ipop |
+>| d            | Y            |              | metadata (a  | tInternal    |
+>|              |              |              | dictionary   |              |
+>|              |              |              | with lists   |              |
+>|              |              |              | of strings)  |              |
+>|              |              |              | about        |              |
+>|              |              |              | variables to |              |
+>|              |              |              | be passed to |              |
+>|              |              |              | IPOPT        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| vartheta     | OT_REAL      | 0.500        | a parameter  | CasADi::Ipop |
+>|              |              |              | used to      | tInternal    |
+>|              |              |              | check if the |              |
+>|              |              |              | fast         |              |
+>|              |              |              | direction    |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | asthe line   |              |
+>|              |              |              | search       |              |
+>|              |              |              | direction    |              |
+>|              |              |              | (for Chen-   |              |
+>|              |              |              | Goldfarb     |              |
+>|              |              |              | line         |              |
+>|              |              |              | search).     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_b | OT_REAL      | 0.001        | same as      | CasADi::Ipop |
+>| ound_frac    |              |              | bound_frac   | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | regular      |              |
+>|              |              |              | initializer. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_b | OT_REAL      | 0.001        | same as      | CasADi::Ipop |
+>| ound_push    |              |              | bound_push   | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | regular      |              |
+>|              |              |              | initializer. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_e | OT_STRING    | no           | Tells        | CasADi::Ipop |
+>| ntire_iterat |              |              | algorithm    | tInternal    |
+>| e            |              |              | whether to   |              |
+>|              |              |              | use the GetW |              |
+>|              |              |              | armStartIter |              |
+>|              |              |              | ate method   |              |
+>|              |              |              | in the NLP.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_i | OT_STRING    | no           | Warm-start   | CasADi::Ipop |
+>| nit_point    |              |              | for initial  | tInternal    |
+>|              |              |              | point (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_m | OT_REAL      | 0.001        | same as mult | CasADi::Ipop |
+>| ult_bound_pu |              |              | _bound_push  | tInternal    |
+>| sh           |              |              | for the      |              |
+>|              |              |              | regular      |              |
+>|              |              |              | initializer. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_m | OT_REAL      | 1000000      | Maximum      | CasADi::Ipop |
+>| ult_init_max |              |              | initial      | tInternal    |
+>|              |              |              | value for    |              |
+>|              |              |              | the equality |              |
+>|              |              |              | multipliers. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_s | OT_STRING    | no           | Indicates    | CasADi::Ipop |
+>| ame_structur |              |              | whether a    | tInternal    |
+>| e            |              |              | problem with |              |
+>|              |              |              | a structure  |              |
+>|              |              |              | identical to |              |
+>|              |              |              | the previous |              |
+>|              |              |              | one is to be |              |
+>|              |              |              | solved. (see |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_s | OT_REAL      | 0.001        | same as slac | CasADi::Ipop |
+>| lack_bound_f |              |              | k_bound_frac | tInternal    |
+>| rac          |              |              | for the      |              |
+>|              |              |              | regular      |              |
+>|              |              |              | initializer. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_s | OT_REAL      | 0.001        | same as slac | CasADi::Ipop |
+>| lack_bound_p |              |              | k_bound_push | tInternal    |
+>| ush          |              |              | for the      |              |
+>|              |              |              | regular      |              |
+>|              |              |              | initializer. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warm_start_t | OT_REAL      | 0            | Unsupported! | CasADi::Ipop |
+>| arget_mu     |              |              | (see IPOPT d | tInternal    |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
+>| _bounds      |              |              | initial      | olverInterna |
+>|              |              |              | guess does   | l            |
+>|              |              |              | not satisfy  |              |
+>|              |              |              | LBX and UBX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| watchdog_sho | OT_INTEGER   | 10           | Number of    | CasADi::Ipop |
+>| rtened_iter_ |              |              | shortened    | tInternal    |
+>| trigger      |              |              | iterations   |              |
+>|              |              |              | that trigger |              |
+>|              |              |              | the          |              |
+>|              |              |              | watchdog.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| watchdog_tri | OT_INTEGER   | 3            | Maximum      | CasADi::Ipop |
+>| al_iter_max  |              |              | number of    | tInternal    |
+>|              |              |              | watchdog     |              |
+>|              |              |              | iterations.  |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_inexact | OT_REAL      | 0            | Drop         | CasADi::Ipop |
+>| _droptol     |              |              | tolerance    | tInternal    |
+>|              |              |              | for inexact  |              |
+>|              |              |              | factorizatio |              |
+>|              |              |              | n preconditi |              |
+>|              |              |              | oner in      |              |
+>|              |              |              | WISMP. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_inexact | OT_REAL      | 0            | Fill-in      | CasADi::Ipop |
+>| _fillin_limi |              |              | limit for    | tInternal    |
+>| t            |              |              | inexact fact |              |
+>|              |              |              | orization pr |              |
+>|              |              |              | econditioner |              |
+>|              |              |              | in WISMP.    |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_iterati | OT_STRING    | no           | Switches to  | CasADi::Ipop |
+>| ve           |              |              | iterative    | tInternal    |
+>|              |              |              | solver in    |              |
+>|              |              |              | WSMP. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_max_ite | OT_INTEGER   | 1000         | Maximal      | CasADi::Ipop |
+>| r            |              |              | number of    | tInternal    |
+>|              |              |              | iterations   |              |
+>|              |              |              | in iterative |              |
+>|              |              |              | WISMP (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_no_pivo | OT_STRING    | no           | Use the      | CasADi::Ipop |
+>| ting         |              |              | static       | tInternal    |
+>|              |              |              | pivoting     |              |
+>|              |              |              | option of    |              |
+>|              |              |              | WSMP. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_num_thr | OT_INTEGER   | 1            | Number of    | CasADi::Ipop |
+>| eads         |              |              | threads to   | tInternal    |
+>|              |              |              | be used in   |              |
+>|              |              |              | WSMP (see    |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_orderin | OT_INTEGER   | 1            | Determines   | CasADi::Ipop |
+>| g_option     |              |              | how ordering | tInternal    |
+>|              |              |              | is done in   |              |
+>|              |              |              | WSMP         |              |
+>|              |              |              | (IPARM(16)   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_orderin | OT_INTEGER   | 1            | Determines   | CasADi::Ipop |
+>| g_option2    |              |              | how ordering | tInternal    |
+>|              |              |              | is done in   |              |
+>|              |              |              | WSMP         |              |
+>|              |              |              | (IPARM(20)   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
+>|              |              |              | tolerance    | tInternal    |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver WSMP. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_pivtolm | OT_REAL      | 0.100        | Maximum      | CasADi::Ipop |
+>| ax           |              |              | pivot        | tInternal    |
+>|              |              |              | tolerance    |              |
+>|              |              |              | for the      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver WSMP. |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_scaling | OT_INTEGER   | 0            | Determines   | CasADi::Ipop |
+>|              |              |              | how the      | tInternal    |
+>|              |              |              | matrix is    |              |
+>|              |              |              | scaled by    |              |
+>|              |              |              | WSMP. (see   |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_singula | OT_REAL      | 0.000        | WSMP's       | CasADi::Ipop |
+>| rity_thresho |              |              | singularity  | tInternal    |
+>| ld           |              |              | threshold.   |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_skip_in | OT_STRING    | no           | Always       | CasADi::Ipop |
+>| ertia_check  |              |              | pretent      | tInternal    |
+>|              |              |              | inertia is   |              |
+>|              |              |              | correct.     |              |
+>|              |              |              | (see IPOPT d |              |
+>|              |              |              | ocumentation |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| wsmp_write_m | OT_INTEGER   | -1           | Iteration in | CasADi::Ipop |
+>| atrix_iterat |              |              | which the    | tInternal    |
+>| ion          |              |              | matrices are |              |
+>|              |              |              | written to   |              |
+>|              |              |              | files. (see  |              |
+>|              |              |              | IPOPT docume |              |
+>|              |              |              | ntation)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+-------------+--------------------------+
+>|     Id      |         Used in          |
+>+=============+==========================+
+>| eval_f      | CasADi::IpoptInternal    |
+>+-------------+--------------------------+
+>| eval_g      | CasADi::IpoptInternal    |
+>+-------------+--------------------------+
+>| eval_grad_f | CasADi::IpoptInternal    |
+>+-------------+--------------------------+
+>| eval_h      | CasADi::IpoptInternal    |
+>+-------------+--------------------------+
+>| eval_jac_g  | CasADi::IpoptInternal    |
+>+-------------+--------------------------+
+>| inputs      | CasADi::FunctionInternal |
+>+-------------+--------------------------+
+>| outputs     | CasADi::FunctionInternal |
+>+-------------+--------------------------+
+>
+>>List of available stats
+>+--------------------+-----------------------+
+>|         Id         |        Used in        |
+>+====================+=======================+
+>| con_integer_md     | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| con_numeric_md     | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| con_string_md      | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| iter_count         | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| iteration          | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| iterations         | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| n_eval_f           | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| n_eval_g           | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| n_eval_grad_f      | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| n_eval_h           | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| n_eval_jac_g       | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| return_status      | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_callback_fun     | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_callback_prepare | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_eval_f           | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_eval_g           | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_eval_grad_f      | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_eval_h           | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_eval_jac_g       | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| t_mainloop         | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| var_integer_md     | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| var_numeric_md     | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>| var_string_md      | CasADi::IpoptInternal |
+>+--------------------+-----------------------+
+>
+>Diagrams
+>
+>C++ includes: ipopt_solver.hpp 
+-}
+newtype IpoptSolver = IpoptSolver (ForeignPtr IpoptSolver')
+-- typeclass decl
+class IpoptSolverClass a where
+  castIpoptSolver :: a -> IpoptSolver
+instance IpoptSolverClass IpoptSolver where
+  castIpoptSolver = id
+
+-- baseclass instances
+instance SharedObjectClass IpoptSolver where
+  castSharedObject (IpoptSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass IpoptSolver where
+  castPrintableObject (IpoptSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass IpoptSolver where
+  castOptionsFunctionality (IpoptSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass IpoptSolver where
+  castFunction (IpoptSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass IpoptSolver where
+  castIOInterfaceFunction (IpoptSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+instance NLPSolverClass IpoptSolver where
+  castNLPSolver (IpoptSolver x) = NLPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal IpoptSolver (Ptr IpoptSolver') where
+  marshal (IpoptSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (IpoptSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__IpoptSolver" 
+  c_delete_CasADi__IpoptSolver :: FunPtr (Ptr IpoptSolver' -> IO ())
+instance WrapReturn (Ptr IpoptSolver') IpoptSolver where
+  wrapReturn = (fmap IpoptSolver) . (newForeignPtr c_delete_CasADi__IpoptSolver)
+
+
+-- raw decl
+data DMatrix'
+-- data decl
+{-|
+>[INTERNAL]  Sparse matrix class. SX
+>and DMatrix are specializations.
+>
+>General sparse matrix class that is designed with the idea that "everything
+>is a matrix", that is, also scalars and vectors. This philosophy makes it
+>easy to use and to interface in particularily with Python and Matlab/Octave.
+>Index starts with 0. Index vec happens as follows: (rr,cc) -> k =
+>rr+cc*size1() Vectors are column vectors.  The storage format is Compressed
+>Column Storage (CCS), similar to that used for sparse matrices in Matlab,
+>but unlike this format, we do allow for elements to be structurally non-zero
+>but numerically zero. Matrix<DataType> is polymorphic with a
+>std::vector<DataType> that contain all non- identical-zero elements. The
+>sparsity can be accessed with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype DMatrix = DMatrix (ForeignPtr DMatrix')
+-- typeclass decl
+class DMatrixClass a where
+  castDMatrix :: a -> DMatrix
+instance DMatrixClass DMatrix where
+  castDMatrix = id
+
+-- baseclass instances
+instance PrintableObjectClass DMatrix where
+  castPrintableObject (DMatrix x) = PrintableObject (castForeignPtr x)
+
+instance ExpDMatrixClass DMatrix where
+  castExpDMatrix (DMatrix x) = ExpDMatrix (castForeignPtr x)
+
+instance GenDMatrixClass DMatrix where
+  castGenDMatrix (DMatrix x) = GenDMatrix (castForeignPtr x)
+
+
+-- 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__Matrix_double_" 
+  c_delete_CasADi__Matrix_double_ :: FunPtr (Ptr DMatrix' -> IO ())
+instance WrapReturn (Ptr DMatrix') DMatrix where
+  wrapReturn = (fmap DMatrix) . (newForeignPtr c_delete_CasADi__Matrix_double_)
+
+
+
+-- raw decl
+data Sparsity'
+-- data decl
+{-|
+>[INTERNAL]  General sparsity class.
+>
+>The storage format is a compressed column storage (CCS) format.  In this
+>format, the structural non-zero elements are stored in column-major order,
+>starting from the upper left corner of the matrix and ending in the lower
+>right corner.
+>
+>In addition to the dimension ( size1(), size2()), (i.e. the number of rows
+>and the number of columns respectively), there are also two vectors of
+>integers:
+>
+>"colind" [length size2()+1], which contains the index to the first non-
+>zero element on or after the corresponding column. All the non-zero elements
+>of a particular i are thus the elements with index el that fulfils:
+>colind[i] <= el < colind[i+1].
+>
+>"row" [same length as the number of non-zero elements, size()] The rows
+>for each of the structural non-zeros.
+>
+>Note that with this format, it is cheap to loop over all the non-zero
+>elements of a particular column, at constant time per element, but expensive
+>to jump to access a location (i,j).
+>
+>If the matrix is dense, i.e. length(row) == size1()*size2(), the format
+>reduces to standard dense column major format, which allows access to an
+>arbitrary element in constant time.
+>
+>Since the object is reference counted (it inherits from SharedObject),
+>several matrices are allowed to share the same sparsity pattern.
+>
+>The implementations of some methods of this class has been taken from the
+>CSparse package and modified to use C++ standard library and CasADi data
+>structures.
+>
+>See:   Matrix
+>
+>Joel Andersson
+>
+>C++ includes: sparsity.hpp 
+-}
+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)
+
+instance PrintableObjectClass Sparsity where
+  castPrintableObject (Sparsity x) = PrintableObject (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 ExpMX'
+-- data decl
+{-|
+>[INTERNAL]  Expression
+>interface.
+>
+>This is a common base class for SX, MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom. Joel Andersson
+>
+>C++ includes: generic_expression.hpp 
+-}
+newtype ExpMX = ExpMX (ForeignPtr ExpMX')
+-- typeclass decl
+class ExpMXClass a where
+  castExpMX :: a -> ExpMX
+instance ExpMXClass ExpMX where
+  castExpMX = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal ExpMX (Ptr ExpMX') where
+  marshal (ExpMX x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (ExpMX x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericExpression_CasADi__MX_" 
+  c_delete_CasADi__GenericExpression_CasADi__MX_ :: FunPtr (Ptr ExpMX' -> IO ())
+instance WrapReturn (Ptr ExpMX') ExpMX where
+  wrapReturn = (fmap ExpMX) . (newForeignPtr c_delete_CasADi__GenericExpression_CasADi__MX_)
+
+
+-- raw decl
+data MX'
+-- data decl
+{-|
+>[INTERNAL]   MX - Matrix expression.
+>
+>The MX class is used to build up trees made up from MXNodes. It is a more
+>general graph representation than the scalar expression, SX, and much less
+>efficient for small objects. On the other hand, the class allows much more
+>general operations than does SX, in particular matrix valued operations and
+>calls to arbitrary differentiable functions.
+>
+>The MX class is designed to have identical syntax with the Matrix<> template
+>class, and uses Matrix<double> as its internal representation of the values
+>at a node. By keeping the syntaxes identical, it is possible to switch from
+>one class to the other, as well as inlining MX functions to SXElement
+>functions.
+>
+>Note that an operation is always "lazy", making a matrix multiplication
+>will create a matrix multiplication node, not perform the actual
+>multiplication.
+>
+>Joel Andersson
+>
+>C++ includes: mx.hpp 
+-}
+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)
+
+instance PrintableObjectClass MX where
+  castPrintableObject (MX x) = PrintableObject (castForeignPtr x)
+
+instance ExpMXClass MX where
+  castExpMX (MX x) = ExpMX (castForeignPtr x)
+
+instance GenMXClass MX where
+  castGenMX (MX x) = GenMX (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 QCQPStructure'
+-- data decl
+{-|
+>[INTERNAL]  Helper
+>function for 'QCQPStruct'
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype QCQPStructure = QCQPStructure (ForeignPtr QCQPStructure')
+-- typeclass decl
+class QCQPStructureClass a where
+  castQCQPStructure :: a -> QCQPStructure
+instance QCQPStructureClass QCQPStructure where
+  castQCQPStructure = id
+
+-- baseclass instances
+instance PrintableObjectClass QCQPStructure where
+  castPrintableObject (QCQPStructure x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal QCQPStructure (Ptr QCQPStructure') where
+  marshal (QCQPStructure x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (QCQPStructure x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__QCQPStructIOSchemeVector_CasADi__Sparsity_" 
+  c_delete_CasADi__QCQPStructIOSchemeVector_CasADi__Sparsity_ :: FunPtr (Ptr QCQPStructure' -> IO ())
+instance WrapReturn (Ptr QCQPStructure') QCQPStructure where
+  wrapReturn = (fmap QCQPStructure) . (newForeignPtr c_delete_CasADi__QCQPStructIOSchemeVector_CasADi__Sparsity_)
+
+
+-- raw decl
+data DpleSolver'
+-- data decl
+{-|
+>[INTERNAL]  Base class for
+>Discrete Periodic Lyapunov Equation Solvers.
+>
+>Given matrices A_k and symmetric V_k, k = 0..K-1
+>
+>A_k in R^(n x n) V_k in R^n
+>
+>provides all of P_k that satisfy:
+>
+>P_0 = A_(K-1)*P_(K-1)*A_(K-1)' + V_k P_k+1 = A_k*P_k*A_k' + V_k for k =
+>1..K-1 Joris gillis
+>
+>>Input scheme: CasADi::DPLEInput (DPLE_NUM_IN = 3) [dpleIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| DPLE_A                 | a                      | A matrices (horzcat    |
+>|                        |                        | when const_dim,        |
+>|                        |                        | blkdiag otherwise) .   |
+>+------------------------+------------------------+------------------------+
+>| DPLE_V                 | v                      | V matrices (horzcat    |
+>|                        |                        | when const_dim,        |
+>|                        |                        | blkdiag otherwise) .   |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::DPLEOutput (DPLE_NUM_OUT = 2) [dpleOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| DPLE_P                 | p                      | Lyapunov matrix        |
+>|                        |                        | (horzcat when          |
+>|                        |                        | const_dim, blkdiag     |
+>|                        |                        | otherwise) (cholesky   |
+>|                        |                        | of P if pos_def) .     |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| const_dim    | OT_BOOLEAN   | true         | Assume       | CasADi::Dple |
+>|              |              |              | constant     | Internal     |
+>|              |              |              | dimension of |              |
+>|              |              |              | P            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| eps_unstable | OT_REAL      | 0.000        | A margin for | CasADi::Dple |
+>|              |              |              | unstability  | Internal     |
+>|              |              |              | detection    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| error_unstab | OT_BOOLEAN   | false        | Throw an     | CasADi::Dple |
+>| le           |              |              | exception    | Internal     |
+>|              |              |              | when it is   |              |
+>|              |              |              | detected     |              |
+>|              |              |              | that Product |              |
+>|              |              |              | (A_i,i=N..1) |              |
+>|              |              |              | has          |              |
+>|              |              |              | eigenvalues  |              |
+>|              |              |              | greater than |              |
+>|              |              |              | 1-eps_unstab |              |
+>|              |              |              | le           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pos_def      | OT_BOOLEAN   | false        | Assume P     | CasADi::Dple |
+>|              |              |              | positive     | Internal     |
+>|              |              |              | definite     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: dple_solver.hpp 
+-}
+newtype DpleSolver = DpleSolver (ForeignPtr DpleSolver')
+-- typeclass decl
+class DpleSolverClass a where
+  castDpleSolver :: a -> DpleSolver
+instance DpleSolverClass DpleSolver where
+  castDpleSolver = id
+
+-- baseclass instances
+instance SharedObjectClass DpleSolver where
+  castSharedObject (DpleSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass DpleSolver where
+  castPrintableObject (DpleSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass DpleSolver where
+  castOptionsFunctionality (DpleSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass DpleSolver where
+  castFunction (DpleSolver x) = Function (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 SDQPSolver'
+-- data decl
+{-|
+>[INTERNAL]   SDQPSolver.
+>
+>Same as an SDPSolver, but with a quadratic objective 1/2 x' H x
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::SDQPInput (SDQP_SOLVER_NUM_IN = 10) [sdqpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SDQP_SOLVER_H          | h                      | The matrix H: sparse ( |
+>|                        |                        | n x n) .               |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_C          | c                      | The vector c: ( n x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_F          | f                      | The horizontal stack   |
+>|                        |                        | of all matrices F_i: ( |
+>|                        |                        | m x nm) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_G          | g                      | The matrix G: ( m x m) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_A          | a                      | The matrix A: ( nc x   |
+>|                        |                        | n) .                   |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LBA        | lba                    | Lower bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_UBA        | uba                    | Upper bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LBX        | lbx                    | Lower bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_UBX        | ubx                    | Upper bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::SDQPOutput (SDQP_SOLVER_NUM_OUT = 8) [sdqpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SDQP_SOLVER_X          | x                      | The primal solution (n |
+>|                        |                        | x 1) - may be used as  |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_P          | p                      | The solution P (m x m) |
+>|                        |                        | - may be used as       |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_DUAL       | dual                   | The dual solution (m x |
+>|                        |                        | m) - may be used as    |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_COST       | cost                   | The primal optimal     |
+>|                        |                        | cost (1 x 1) .         |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_DUAL_COST  | dual_cost              | The dual optimal cost  |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LAM_A      | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to the   |
+>|                        |                        | linear constraints (nc |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LAM_X      | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds (n x 1)  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sdp_solver   | OT_SDPSOLVER | GenericType( | The          | CasADi::SDQP |
+>|              |              | )            | SDQPSolver   | SolverIntern |
+>|              |              |              | used to      | al           |
+>|              |              |              | solve the    |              |
+>|              |              |              | SDPs.        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sdp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::SDQP |
+>| ptions       | Y            | )            | be passed to | SolverIntern |
+>|              |              |              | the          | al           |
+>|              |              |              | SDPSOlver    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: sdqp_solver.hpp 
+-}
+newtype SDQPSolver = SDQPSolver (ForeignPtr SDQPSolver')
+-- typeclass decl
+class SDQPSolverClass a where
+  castSDQPSolver :: a -> SDQPSolver
+instance SDQPSolverClass SDQPSolver where
+  castSDQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SDQPSolver where
+  castSharedObject (SDQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SDQPSolver where
+  castPrintableObject (SDQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SDQPSolver where
+  castOptionsFunctionality (SDQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SDQPSolver where
+  castFunction (SDQPSolver x) = Function (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 QPLPSolver'
+-- data decl
+{-|
+>[INTERNAL]  IPOPT QP Solver for
+>quadratic programming.
+>
+>Solves the following linear problem:
+>
+>min          c' x   x  subject to             LBA <= A x <= UBA LBX <= x
+><= UBX                  with x ( n x 1)          c ( n x 1 )          A
+>sparse matrix ( nc x n)          LBA, UBA dense vector (nc x 1)
+>LBX, UBX dense vector (n x 1)                  n: number of decision
+>variables (x)     nc: number of constraints (A)
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::LPSolverInput (LP_SOLVER_NUM_IN = 7) [lpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| LP_SOLVER_C            | c                      | The vector c: dense (n |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_A            | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LBA          | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_UBA          | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LBX          | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_UBX          | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::LPSolverOutput (LP_SOLVER_NUM_OUT = 5) [lpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| LP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver    | OT_QPSOLVER  | GenericType( | The QPSOlver | CasADi::QPLP |
+>|              |              | )            | used to      | Internal     |
+>|              |              |              | solve the    |              |
+>|              |              |              | LPs.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::QPLP |
+>| tions        | Y            | )            | be passed to | Internal     |
+>|              |              |              | the QPSOlver |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+-----------------+----------------------+
+>|       Id        |       Used in        |
+>+=================+======================+
+>| qp_solver_stats | CasADi::QPLPInternal |
+>+-----------------+----------------------+
+>
+>Diagrams
+>
+>C++ includes: qp_lp_solver.hpp 
+-}
+newtype QPLPSolver = QPLPSolver (ForeignPtr QPLPSolver')
+-- typeclass decl
+class QPLPSolverClass a where
+  castQPLPSolver :: a -> QPLPSolver
+instance QPLPSolverClass QPLPSolver where
+  castQPLPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass QPLPSolver where
+  castSharedObject (QPLPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass QPLPSolver where
+  castPrintableObject (QPLPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass QPLPSolver where
+  castOptionsFunctionality (QPLPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass QPLPSolver where
+  castFunction (QPLPSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass QPLPSolver where
+  castIOInterfaceFunction (QPLPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+instance LPSolverClass QPLPSolver where
+  castLPSolver (QPLPSolver x) = LPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal QPLPSolver (Ptr QPLPSolver') where
+  marshal (QPLPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (QPLPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__QPLPSolver" 
+  c_delete_CasADi__QPLPSolver :: FunPtr (Ptr QPLPSolver' -> IO ())
+instance WrapReturn (Ptr QPLPSolver') QPLPSolver where
+  wrapReturn = (fmap QPLPSolver) . (newForeignPtr c_delete_CasADi__QPLPSolver)
+
+
+-- raw decl
+data SDPSDQPSolver'
+-- data decl
+{-|
+>[INTERNAL]  SDP SDQP Solver
+>for quadratic programming.
+>
+>Note: this implementation relies on Cholesky decomposition: Chol(H) = L -> H
+>= LL' with L lower triangular This requires Pi, H to be positive definite.
+>Positive semi-definite is not sufficient. Notably, H==0 will not work.
+>
+>A better implementation would rely on matrix square root, but we need
+>singular value decomposition to implement that.
+>
+>Same as an SDPSolver, but with a quadratic objective 1/2 x' H x
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::SDQPInput (SDQP_SOLVER_NUM_IN = 10) [sdqpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SDQP_SOLVER_H          | h                      | The matrix H: sparse ( |
+>|                        |                        | n x n) .               |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_C          | c                      | The vector c: ( n x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_F          | f                      | The horizontal stack   |
+>|                        |                        | of all matrices F_i: ( |
+>|                        |                        | m x nm) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_G          | g                      | The matrix G: ( m x m) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_A          | a                      | The matrix A: ( nc x   |
+>|                        |                        | n) .                   |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LBA        | lba                    | Lower bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_UBA        | uba                    | Upper bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LBX        | lbx                    | Lower bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_UBX        | ubx                    | Upper bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::SDQPOutput (SDQP_SOLVER_NUM_OUT = 8) [sdqpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SDQP_SOLVER_X          | x                      | The primal solution (n |
+>|                        |                        | x 1) - may be used as  |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_P          | p                      | The solution P (m x m) |
+>|                        |                        | - may be used as       |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_DUAL       | dual                   | The dual solution (m x |
+>|                        |                        | m) - may be used as    |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_COST       | cost                   | The primal optimal     |
+>|                        |                        | cost (1 x 1) .         |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_DUAL_COST  | dual_cost              | The dual optimal cost  |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LAM_A      | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to the   |
+>|                        |                        | linear constraints (nc |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SDQP_SOLVER_LAM_X      | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds (n x 1)  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sdp_solver   | OT_SDPSOLVER | GenericType( | The          | CasADi::SDPS |
+>|              |              | )            | SDPSolver    | DQPInternal  |
+>|              |              |              | used to      |              |
+>|              |              |              | solve the    |              |
+>|              |              |              | SDQPs.       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sdp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::SDPS |
+>| ptions       | Y            | )            | be passed to | DQPInternal  |
+>|              |              |              | the          |              |
+>|              |              |              | SDPSOlver    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+------------------+-------------------------+
+>|        Id        |         Used in         |
+>+==================+=========================+
+>| sdp_solver_stats | CasADi::SDPSDQPInternal |
+>+------------------+-------------------------+
+>
+>Diagrams
+>
+>C++ includes: sdp_sdqp_solver.hpp 
+-}
+newtype SDPSDQPSolver = SDPSDQPSolver (ForeignPtr SDPSDQPSolver')
+-- typeclass decl
+class SDPSDQPSolverClass a where
+  castSDPSDQPSolver :: a -> SDPSDQPSolver
+instance SDPSDQPSolverClass SDPSDQPSolver where
+  castSDPSDQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SDPSDQPSolver where
+  castSharedObject (SDPSDQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SDPSDQPSolver where
+  castPrintableObject (SDPSDQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SDPSDQPSolver where
+  castOptionsFunctionality (SDPSDQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SDPSDQPSolver where
+  castFunction (SDPSDQPSolver x) = Function (castForeignPtr x)
+
+instance SDQPSolverClass SDPSDQPSolver where
+  castSDQPSolver (SDPSDQPSolver x) = SDQPSolver (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SDPSDQPSolver where
+  castIOInterfaceFunction (SDPSDQPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SDPSDQPSolver (Ptr SDPSDQPSolver') where
+  marshal (SDPSDQPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SDPSDQPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SDPSDQPSolver" 
+  c_delete_CasADi__SDPSDQPSolver :: FunPtr (Ptr SDPSDQPSolver' -> IO ())
+instance WrapReturn (Ptr SDPSDQPSolver') SDPSDQPSolver where
+  wrapReturn = (fmap SDPSDQPSolver) . (newForeignPtr c_delete_CasADi__SDPSDQPSolver)
+
+
+-- raw decl
+data SDPSolver'
+-- data decl
+{-|
+>[INTERNAL]   SDPSolver.
+>
+>Solves an SDP problem in standard form.
+>Seehttp://sdpa.indsys.chuo-u.ac.jp/sdpa/files/sdpa-c.6.2.0.manual.pdf
+>
+>Primal:
+>
+>min          c' x   x  subject to               P = Sum_i^m F_i x_i - G
+>P negative semidefinite LBA <= A x <= UBA             LBX <= x   <= UBX
+>with x ( n x 1)          c ( n x 1 )          G, F_i  sparse symmetric (m x
+>m)          X dense symmetric ( m x m )          A sparse matrix ( nc x n)
+>LBA, UBA dense vector (nc x 1)          LBX, UBX dense vector (n x 1)
+>
+>This formulation is chosen as primal, because it does not call for a large
+>decision variable space.
+>
+>Dual:
+>
+>max          trace(G Y)  Y   subject to             trace(F_i Y) = c_i Y
+>positive semidefinite                  with Y dense symmetric ( m x m)
+>
+>On generality: you might have formulation with block partitioning:
+>
+>Primal:
+>
+>min          c' x   x  subject to               Pj = Sum_i^m F_ij x_i - gj
+>for all j               Pj negative semidefinite   for all j with x ( n x 1)
+>c ( n x 1 )          G, F_i  sparse symmetric (m x m)          X dense
+>symmetric ( m x m )
+>
+>Dual:max          Sum_j trace(Gj Yj)  Yj   subject to             Sum_j
+>trace(F_ij Yj) = c_i   for all j             Yj positive semidefinite for
+>all j                  with Y dense symmetric ( m x m)
+>
+>You can cast this into the standard form with: G = blkdiag(Gj for all j) Fi
+>= blkdiag(F_ij for all j)
+>
+>Implementations of SDPSolver are encouraged to exploit this block structure.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::SDPInput (SDP_SOLVER_NUM_IN = 9) [sdpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SDP_SOLVER_F           | f                      | The horizontal stack   |
+>|                        |                        | of all matrices F_i: ( |
+>|                        |                        | m x nm) .              |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_C           | c                      | The vector c: ( n x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_G           | g                      | The matrix G: ( m x m) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_A           | a                      | The matrix A: ( nc x   |
+>|                        |                        | n) .                   |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_LBA         | lba                    | Lower bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_UBA         | uba                    | Upper bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_LBX         | lbx                    | Lower bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_UBX         | ubx                    | Upper bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::SDPOutput (SDP_SOLVER_NUM_OUT = 8) [sdpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SDP_SOLVER_X           | x                      | The primal solution (n |
+>|                        |                        | x 1) - may be used as  |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_P           | p                      | The solution P (m x m) |
+>|                        |                        | - may be used as       |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_DUAL        | dual                   | The dual solution (m x |
+>|                        |                        | m) - may be used as    |
+>|                        |                        | initial guess .        |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_COST        | cost                   | The primal optimal     |
+>|                        |                        | cost (1 x 1) .         |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_DUAL_COST   | dual_cost              | The dual optimal cost  |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_LAM_A       | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to the   |
+>|                        |                        | linear constraints (nc |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SDP_SOLVER_LAM_X       | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds (n x 1)  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| calc_dual    | OT_BOOLEAN   | true         | Indicate if  | CasADi::SDPS |
+>|              |              |              | dual should  | olverInterna |
+>|              |              |              | be allocated | l            |
+>|              |              |              | and          |              |
+>|              |              |              | calculated.  |              |
+>|              |              |              | You may want |              |
+>|              |              |              | to avoid     |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | this         |              |
+>|              |              |              | variable for |              |
+>|              |              |              | problems     |              |
+>|              |              |              | with n       |              |
+>|              |              |              | large, as is |              |
+>|              |              |              | always dense |              |
+>|              |              |              | (m x m).     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| calc_p       | OT_BOOLEAN   | true         | Indicate if  | CasADi::SDPS |
+>|              |              |              | the P-part   | olverInterna |
+>|              |              |              | of primal    | l            |
+>|              |              |              | solution     |              |
+>|              |              |              | should be    |              |
+>|              |              |              | allocated    |              |
+>|              |              |              | and          |              |
+>|              |              |              | calculated.  |              |
+>|              |              |              | You may want |              |
+>|              |              |              | to avoid     |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | this         |              |
+>|              |              |              | variable for |              |
+>|              |              |              | problems     |              |
+>|              |              |              | with n       |              |
+>|              |              |              | large, as is |              |
+>|              |              |              | always dense |              |
+>|              |              |              | (m x m).     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_proble | OT_BOOLEAN   | false        | Print out    | CasADi::SDPS |
+>| m            |              |              | problem      | olverInterna |
+>|              |              |              | statement    | l            |
+>|              |              |              | for          |              |
+>|              |              |              | debugging.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: sdp_solver.hpp 
+-}
+newtype SDPSolver = SDPSolver (ForeignPtr SDPSolver')
+-- typeclass decl
+class SDPSolverClass a where
+  castSDPSolver :: a -> SDPSolver
+instance SDPSolverClass SDPSolver where
+  castSDPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SDPSolver where
+  castSharedObject (SDPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SDPSolver where
+  castPrintableObject (SDPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SDPSolver where
+  castOptionsFunctionality (SDPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SDPSolver where
+  castFunction (SDPSolver x) = Function (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 CasadiOptions'
+-- data decl
+{-|
+>[INTERNAL]  Collects global
+>CasADi options.
+>
+>Note to developers: use sparingly. Global options are - in general - a
+>rather bad idea
+>
+>this class must never be instantiated. Access its static members directly
+>
+>Joris Gillis
+>
+>C++ includes: casadi_options.hpp 
+-}
+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 Slice'
+-- data decl
+{-|
+>[INTERNAL]  Class representing a
+>Slice.
+>
+>Note that Python or Octave do not need to use this class. They can just use
+>slicing utility from the host language ( M[0:6] in Python, M(1:7) )
+>
+>C++ includes: slice.hpp 
+-}
+newtype Slice = Slice (ForeignPtr Slice')
+-- typeclass decl
+class SliceClass a where
+  castSlice :: a -> Slice
+instance SliceClass Slice where
+  castSlice = id
+
+-- baseclass instances
+instance PrintableObjectClass Slice where
+  castPrintableObject (Slice x) = PrintableObject (castForeignPtr x)
+
+
+-- 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 CustomEvaluate'
+-- data decl
+{-|
+>[INTERNAL]   CustomEvaluate.
+>
+>In C++, supply a CustomEvaluateCPtr function pointer
+>
+>In python, supply a callable, annotated with pyevaluate decorator
+>
+>C++ includes: functor.hpp 
+-}
+newtype CustomEvaluate = CustomEvaluate (ForeignPtr CustomEvaluate')
+-- typeclass decl
+class CustomEvaluateClass a where
+  castCustomEvaluate :: a -> CustomEvaluate
+instance CustomEvaluateClass CustomEvaluate where
+  castCustomEvaluate = id
+
+-- baseclass instances
+instance SharedObjectClass CustomEvaluate where
+  castSharedObject (CustomEvaluate x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass CustomEvaluate where
+  castPrintableObject (CustomEvaluate x) = PrintableObject (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 GenMX'
+-- data decl
+{-|
+>[INTERNAL]   Matrix base
+>class.
+>
+>This is a common base class for MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom.  The class is designed with the idea that
+>"everything is a matrix", that is, also scalars and vectors. This
+>philosophy makes it easy to use and to interface in particularily with
+>Python and Matlab/Octave.  The syntax tries to stay as close as possible to
+>the ublas syntax when it comes to vector/matrix operations.  Index starts
+>with 0. Index vec happens as follows: (rr,cc) -> k = rr+cc*size1() Vectors
+>are column vectors.  The storage format is Compressed Column Storage (CCS),
+>similar to that used for sparse matrices in Matlab, but unlike this format,
+>we do allow for elements to be structurally non-zero but numerically zero.
+>The sparsity pattern, which is reference counted and cached, can be accessed
+>with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: generic_matrix.hpp 
+-}
+newtype GenMX = GenMX (ForeignPtr GenMX')
+-- typeclass decl
+class GenMXClass a where
+  castGenMX :: a -> GenMX
+instance GenMXClass GenMX where
+  castGenMX = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal GenMX (Ptr GenMX') where
+  marshal (GenMX x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (GenMX x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericMatrix_CasADi__MX_" 
+  c_delete_CasADi__GenericMatrix_CasADi__MX_ :: FunPtr (Ptr GenMX' -> IO ())
+instance WrapReturn (Ptr GenMX') GenMX where
+  wrapReturn = (fmap GenMX) . (newForeignPtr c_delete_CasADi__GenericMatrix_CasADi__MX_)
+
+
+-- raw decl
+data ControlSimulator'
+-- data decl
+{-|
+>[INTERNAL]  Piecewise
+>Simulation class.
+>
+>A ControlSimulator can be seen as a chain of Simulators whereby some
+>parameters change from one Simulator to the next.
+>
+>These changing parameters can typically be interpreted as "controls" in
+>the context of dynamic optimization.
+>
+>We discriminate between the following time steps: Major time-steps. These
+>are the time steps provided by the supplied grid. Controls are constant
+>inbetween major time-steps  Minor time-steps. These are time steps linearly
+>interpolated from one major time-step to the next. The option 'nf' regulates
+>how many minor time-steps are taken.  Integration time-steps. Time steps
+>that the supplied integrator might choose to integrate the continous
+>dynamics. They are not important what ControlSimulator is concerned.  np
+>Number of parameters nu Number of controls ns The number of major grid
+>points, as supplied in the constructor nf The number of minor grid points
+>per major interval
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::ControlSimulatorInput (CONTROLSIMULATOR_NUM_IN = 4) [controlsimulatorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| CONTROLSIMULATOR_X0    | x0                     | Differential or        |
+>|                        |                        | algebraic state at t0  |
+>|                        |                        | (dimension nx-by-1) .  |
+>+------------------------+------------------------+------------------------+
+>| CONTROLSIMULATOR_P     | p                      | Parameters that are    |
+>|                        |                        | fixed over the entire  |
+>|                        |                        | horizon (dimension np- |
+>|                        |                        | by-1) .                |
+>+------------------------+------------------------+------------------------+
+>| CONTROLSIMULATOR_U     | u                      | Parameters that change |
+>|                        |                        | over the integration   |
+>|                        |                        | intervals (dimension   |
+>|                        |                        | nu-by-(ns-1)) .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| control_endp | OT_BOOLEAN   | false        | Include a    | CasADi::Cont |
+>| oint         |              |              | control      | rolSimulator |
+>|              |              |              | value at the | Internal     |
+>|              |              |              | end of the   |              |
+>|              |              |              | simulation   |              |
+>|              |              |              | domain. Used |              |
+>|              |              |              | for interpol |              |
+>|              |              |              | ation.       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| control_inte | OT_STRING    | "none"       | none|nearest | CasADi::Cont |
+>| rpolation    |              |              | |linear      | rolSimulator |
+>|              |              |              |              | Internal     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| integrator   | OT_INTEGRATO | GenericType( | An           | CasADi::Cont |
+>|              | R            | )            | integrator   | rolSimulator |
+>|              |              |              | creator      | Internal     |
+>|              |              |              | function     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| integrator_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Cont |
+>| ptions       | Y            | )            | be passed to | rolSimulator |
+>|              |              |              | the          | Internal     |
+>|              |              |              | integrator   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| minor_grid   | OT_INTEGERVE | GenericType( | The local    | CasADi::Cont |
+>|              | CTOR         | )            | grid used on | rolSimulator |
+>|              |              |              | each major   | Internal     |
+>|              |              |              | interval,    |              |
+>|              |              |              | with time    |              |
+>|              |              |              | normalized   |              |
+>|              |              |              | to 1. By     |              |
+>|              |              |              | default,     |              |
+>|              |              |              | option 'nf'  |              |
+>|              |              |              | is used to   |              |
+>|              |              |              | construct a  |              |
+>|              |              |              | linearly     |              |
+>|              |              |              | spaced grid. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nf           | OT_INTEGER   | 1            | Number of    | CasADi::Cont |
+>|              |              |              | minor        | rolSimulator |
+>|              |              |              | grained      | Internal     |
+>|              |              |              | integration  |              |
+>|              |              |              | steps per    |              |
+>|              |              |              | major        |              |
+>|              |              |              | interval.    |              |
+>|              |              |              | nf>0 must    |              |
+>|              |              |              | hold. This   |              |
+>|              |              |              | option is    |              |
+>|              |              |              | not used     |              |
+>|              |              |              | when         |              |
+>|              |              |              | 'minor_grid' |              |
+>|              |              |              | is provided. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| simulator_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Cont |
+>| tions        | Y            | )            | be passed to | rolSimulator |
+>|              |              |              | the          | Internal     |
+>|              |              |              | simulator    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: control_simulator.hpp 
+-}
+newtype ControlSimulator = ControlSimulator (ForeignPtr ControlSimulator')
+-- typeclass decl
+class ControlSimulatorClass a where
+  castControlSimulator :: a -> ControlSimulator
+instance ControlSimulatorClass ControlSimulator where
+  castControlSimulator = id
+
+-- baseclass instances
+instance SharedObjectClass ControlSimulator where
+  castSharedObject (ControlSimulator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass ControlSimulator where
+  castPrintableObject (ControlSimulator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass ControlSimulator where
+  castOptionsFunctionality (ControlSimulator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass ControlSimulator where
+  castFunction (ControlSimulator x) = Function (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 IMatrix'
+-- data decl
+{-|
+>[INTERNAL]  Sparse matrix class. SX
+>and DMatrix are specializations.
+>
+>General sparse matrix class that is designed with the idea that "everything
+>is a matrix", that is, also scalars and vectors. This philosophy makes it
+>easy to use and to interface in particularily with Python and Matlab/Octave.
+>Index starts with 0. Index vec happens as follows: (rr,cc) -> k =
+>rr+cc*size1() Vectors are column vectors.  The storage format is Compressed
+>Column Storage (CCS), similar to that used for sparse matrices in Matlab,
+>but unlike this format, we do allow for elements to be structurally non-zero
+>but numerically zero. Matrix<DataType> is polymorphic with a
+>std::vector<DataType> that contain all non- identical-zero elements. The
+>sparsity can be accessed with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype IMatrix = IMatrix (ForeignPtr IMatrix')
+-- typeclass decl
+class IMatrixClass a where
+  castIMatrix :: a -> IMatrix
+instance IMatrixClass IMatrix where
+  castIMatrix = id
+
+-- baseclass instances
+instance PrintableObjectClass IMatrix where
+  castPrintableObject (IMatrix x) = PrintableObject (castForeignPtr x)
+
+instance GenIMatrixClass IMatrix where
+  castGenIMatrix (IMatrix x) = GenIMatrix (castForeignPtr x)
+
+instance ExpIMatrixClass IMatrix where
+  castExpIMatrix (IMatrix x) = ExpIMatrix (castForeignPtr x)
+
+
+-- 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__Matrix_int_" 
+  c_delete_CasADi__Matrix_int_ :: FunPtr (Ptr IMatrix' -> IO ())
+instance WrapReturn (Ptr IMatrix') IMatrix where
+  wrapReturn = (fmap IMatrix) . (newForeignPtr c_delete_CasADi__Matrix_int_)
+
+
+-- raw decl
+data SXElement'
+-- data decl
+{-|
+>[INTERNAL]  The basic scalar
+>symbolic class of CasADi.
+>
+>Joel Andersson
+>
+>C++ includes: sx_element.hpp 
+-}
+newtype SXElement = SXElement (ForeignPtr SXElement')
+-- typeclass decl
+class SXElementClass a where
+  castSXElement :: a -> SXElement
+instance SXElementClass SXElement where
+  castSXElement = id
+
+-- baseclass instances
+instance ExpSXElementClass SXElement where
+  castExpSXElement (SXElement x) = ExpSXElement (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SXElement (Ptr SXElement') where
+  marshal (SXElement x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SXElement x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SXElement" 
+  c_delete_CasADi__SXElement :: FunPtr (Ptr SXElement' -> IO ())
+instance WrapReturn (Ptr SXElement') SXElement where
+  wrapReturn = (fmap SXElement) . (newForeignPtr c_delete_CasADi__SXElement)
+
+
+-- raw decl
+data SCPgen'
+-- data decl
+{-|
+>[INTERNAL]  A structure-exploiting
+>sequential quadratic programming (to be come sequential convex programming)
+>method for nonlinear programming.
+>
+>Joel Andersson, Attila Kozma and Joris Gillis
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| beta         | OT_REAL      | 0.800        | Line-search  | CasADi::SCPg |
+>|              |              |              | parameter,   | enInternal   |
+>|              |              |              | restoration  |              |
+>|              |              |              | factor of    |              |
+>|              |              |              | stepsize     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| c1           | OT_REAL      | 0.000        | Armijo       | CasADi::SCPg |
+>|              |              |              | condition,   | enInternal   |
+>|              |              |              | coefficient  |              |
+>|              |              |              | of decrease  |              |
+>|              |              |              | in merit     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| codegen      | OT_BOOLEAN   | false        | C-code       | CasADi::SCPg |
+>|              |              |              | generation   | enInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| compiler     | OT_STRING    | "gcc -fPIC   | Compiler     | CasADi::SCPg |
+>|              |              | -O2"         | command to   | enInternal   |
+>|              |              |              | be used for  |              |
+>|              |              |              | compiling    |              |
+>|              |              |              | generated    |              |
+>|              |              |              | code         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
+>|              |              |              | NLP function | olverInterna |
+>|              |              |              | in terms of  | l            |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | objective    | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | constraint   | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option. Use  | olverInterna |
+>|              |              |              | Gauss Newton | l            |
+>|              |              |              | Hessian appr |              |
+>|              |              |              | oximation    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| dient        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate a   | l            |
+>|              |              |              | function for |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| sian         |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Hessian of   |              |
+>|              |              |              | the          |              |
+>|              |              |              | Lagrangian   |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| obian        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Jacobian of  |              |
+>|              |              |              | the          |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hessian_appr | OT_STRING    | "exact"      | gauss-       | CasADi::SCPg |
+>| oximation    |              |              | newton|exact | enInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| _vec         |              |              | true, the    | olverInterna |
+>|              |              |              | input shape  | l            |
+>|              |              |              | of F will    |              |
+>|              |              |              | not be       |              |
+>|              |              |              | checked.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
+>| llback       |              | )            | that will be | olverInterna |
+>|              |              |              | called at    | l            |
+>|              |              |              | each         |              |
+>|              |              |              | iteration    |              |
+>|              |              |              | with the     |              |
+>|              |              |              | solver as    |              |
+>|              |              |              | input. Check |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n of         |              |
+>|              |              |              | Callback .   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| llback_ignor |              |              | true, errors | olverInterna |
+>| e_errors     |              |              | thrown by it | l            |
+>|              |              |              | eration_call |              |
+>|              |              |              | back will be |              |
+>|              |              |              | ignored.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
+>| llback_step  |              |              | the callback | olverInterna |
+>|              |              |              | function     | l            |
+>|              |              |              | every few    |              |
+>|              |              |              | iterations.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lbfgs_memory | OT_INTEGER   | 10           | Size of      | CasADi::SCPg |
+>|              |              |              | L-BFGS       | enInternal   |
+>|              |              |              | memory.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter     | OT_INTEGER   | 50           | Maximum      | CasADi::SCPg |
+>|              |              |              | number of    | enInternal   |
+>|              |              |              | SQP          |              |
+>|              |              |              | iterations   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter_ls  | OT_INTEGER   | 1            | Maximum      | CasADi::SCPg |
+>|              |              |              | number of    | enInternal   |
+>|              |              |              | linesearch   |              |
+>|              |              |              | iterations   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| merit_memsiz | OT_INTEGER   | 4            | Size of      | CasADi::SCPg |
+>| e            |              |              | memory to    | enInternal   |
+>|              |              |              | store        |              |
+>|              |              |              | history of   |              |
+>|              |              |              | merit        |              |
+>|              |              |              | function     |              |
+>|              |              |              | values       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| merit_start  | OT_REAL      | 0.000        | Lower bound  | CasADi::SCPg |
+>|              |              |              | for the      | enInternal   |
+>|              |              |              | merit        |              |
+>|              |              |              | function     |              |
+>|              |              |              | parameter    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::SCPg |
+>|              |              |              | uts)  (eval_ | enInternal   |
+>|              |              |              | f|eval_g|eva |              |
+>|              |              |              | l_jac_g|eval |              |
+>|              |              |              | _grad_f|eval |              |
+>|              |              |              | _h|qp|dx)    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name_x       | OT_STRINGVEC | GenericType( | Names of the | CasADi::SCPg |
+>|              | TOR          | )            | variables.   | enInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option.      | olverInterna |
+>|              |              |              | Expect F, G, | l            |
+>|              |              |              | H, J to have |              |
+>|              |              |              | an           |              |
+>|              |              |              | additional   |              |
+>|              |              |              | input        |              |
+>|              |              |              | argument     |              |
+>|              |              |              | appended at  |              |
+>|              |              |              | the end,     |              |
+>|              |              |              | denoting     |              |
+>|              |              |              | fixed        |              |
+>|              |              |              | parameters.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_header | OT_BOOLEAN   | true         | Print the    | CasADi::SCPg |
+>|              |              |              | header with  | enInternal   |
+>|              |              |              | problem      |              |
+>|              |              |              | statistics   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_time   | OT_BOOLEAN   | true         | Print        | CasADi::SCPg |
+>|              |              |              | information  | enInternal   |
+>|              |              |              | about        |              |
+>|              |              |              | execution    |              |
+>|              |              |              | time         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_x      | OT_INTEGERVE | GenericType( | Which        | CasADi::SCPg |
+>|              | CTOR         | )            | variables to | enInternal   |
+>|              |              |              | print.       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver    | OT_QPSOLVER  | GenericType( | The QP       | CasADi::SCPg |
+>|              |              | )            | solver to be | enInternal   |
+>|              |              |              | used by the  |              |
+>|              |              |              | SQP method   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::SCPg |
+>| tions        | Y            | )            | be passed to | enInternal   |
+>|              |              |              | the QP       |              |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reg_threshol | OT_REAL      | 0.000        | Threshold    | CasADi::SCPg |
+>| d            |              |              | for the regu | enInternal   |
+>|              |              |              | larization.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularize   | OT_BOOLEAN   | false        | Automatic re | CasADi::SCPg |
+>|              |              |              | gularization | enInternal   |
+>|              |              |              | of Lagrange  |              |
+>|              |              |              | Hessian.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_du       | OT_REAL      | 0.000        | Stopping     | CasADi::SCPg |
+>|              |              |              | criterion    | enInternal   |
+>|              |              |              | for dual inf |              |
+>|              |              |              | easability   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_pr       | OT_REAL      | 0.000        | Stopping     | CasADi::SCPg |
+>|              |              |              | criterion    | enInternal   |
+>|              |              |              | for primal i |              |
+>|              |              |              | nfeasibility |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_pr_step  | OT_REAL      | 0.000        | Stopping     | CasADi::SCPg |
+>|              |              |              | criterion    | enInternal   |
+>|              |              |              | for the step |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_reg      | OT_REAL      | 0.000        | Stopping     | CasADi::SCPg |
+>|              |              |              | criterion    | enInternal   |
+>|              |              |              | for regulari |              |
+>|              |              |              | zation       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
+>| _bounds      |              |              | initial      | olverInterna |
+>|              |              |              | guess does   | l            |
+>|              |              |              | not satisfy  |              |
+>|              |              |              | LBX and UBX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+-------------+--------------------------+
+>|     Id      |         Used in          |
+>+=============+==========================+
+>| dx          | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>| eval_f      | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>| eval_g      | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>| eval_grad_f | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>| eval_h      | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>| eval_jac_g  | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>| inputs      | CasADi::FunctionInternal |
+>+-------------+--------------------------+
+>| outputs     | CasADi::FunctionInternal |
+>+-------------+--------------------------+
+>| qp          | CasADi::SCPgenInternal   |
+>+-------------+--------------------------+
+>
+>>List of available stats
+>+------------+------------------------+
+>|     Id     |        Used in         |
+>+============+========================+
+>| iter_count | CasADi::SCPgenInternal |
+>+------------+------------------------+
+>
+>Diagrams
+>
+>C++ includes: scpgen.hpp 
+-}
+newtype SCPgen = SCPgen (ForeignPtr SCPgen')
+-- typeclass decl
+class SCPgenClass a where
+  castSCPgen :: a -> SCPgen
+instance SCPgenClass SCPgen where
+  castSCPgen = id
+
+-- baseclass instances
+instance SharedObjectClass SCPgen where
+  castSharedObject (SCPgen x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SCPgen where
+  castPrintableObject (SCPgen x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SCPgen where
+  castOptionsFunctionality (SCPgen x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SCPgen where
+  castFunction (SCPgen x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SCPgen where
+  castIOInterfaceFunction (SCPgen x) = IOInterfaceFunction (castForeignPtr x)
+
+instance NLPSolverClass SCPgen where
+  castNLPSolver (SCPgen x) = NLPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SCPgen (Ptr SCPgen') where
+  marshal (SCPgen x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SCPgen x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SCPgen" 
+  c_delete_CasADi__SCPgen :: FunPtr (Ptr SCPgen' -> IO ())
+instance WrapReturn (Ptr SCPgen') SCPgen where
+  wrapReturn = (fmap SCPgen) . (newForeignPtr c_delete_CasADi__SCPgen)
+
+
+-- raw decl
+data NLPImplicitSolver'
+-- data decl
+{-|
+>[INTERNAL]  Use an
+>NLPSolver as ImplicitFunction solver.
+>
+>The equation:
+>
+>F(z, x1, x2, ..., xn) == 0
+>
+>where d_F/dz is invertable, implicitly defines the equation:
+>
+>z := G(x1, x2, ..., xn)
+>
+>F should be an Function mapping from (n+1) inputs to m outputs. The first
+>output is the residual that should be zero.
+>
+>ImplicitFunction (G) is an Function mapping from n inputs to m outputs. n
+>may be zero. The first output is the solved for z.
+>
+>You can provide an initial guess for z by setting output(0) of
+>ImplicitFunction.
+>
+>Joris Gillis
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constraints  | OT_INTEGERVE | GenericType( | Constrain    | CasADi::Impl |
+>|              | CTOR         | )            | the          | icitFunction |
+>|              |              |              | unknowns. 0  | Internal     |
+>|              |              |              | (default):   |              |
+>|              |              |              | no           |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | on ui, 1: ui |              |
+>|              |              |              | >= 0.0, -1:  |              |
+>|              |              |              | ui <= 0.0,   |              |
+>|              |              |              | 2: ui > 0.0, |              |
+>|              |              |              | -2: ui <     |              |
+>|              |              |              | 0.0.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_inp | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| ut           |              |              | input that   | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_out | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| put          |              |              | output that  | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | User-defined | CasADi::Impl |
+>| r            | VER          | )            | linear       | icitFunction |
+>|              |              |              | solver       | Internal     |
+>|              |              |              | class.       |              |
+>|              |              |              | Needed for s |              |
+>|              |              |              | ensitivities |              |
+>|              |              |              | .            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Impl |
+>| r_options    | Y            | )            | be passed to | icitFunction |
+>|              |              |              | the linear   | Internal     |
+>|              |              |              | solver.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver   | OT_NLPSOLVER | GenericType( | The          | CasADi::NLPI |
+>|              |              | )            | NLPSolver    | mplicitInter |
+>|              |              |              | used to      | nal          |
+>|              |              |              | solve the    |              |
+>|              |              |              | implicit     |              |
+>|              |              |              | system.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::NLPI |
+>| ptions       | Y            | )            | be passed to | mplicitInter |
+>|              |              |              | the          | nal          |
+>|              |              |              | NLPSolver    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+------------------+-----------------------------+
+>|        Id        |           Used in           |
+>+==================+=============================+
+>| nlp_solver_stats | CasADi::NLPImplicitInternal |
+>+------------------+-----------------------------+
+>
+>Diagrams
+>
+>C++ includes: nlp_implicit_solver.hpp 
+-}
+newtype NLPImplicitSolver = NLPImplicitSolver (ForeignPtr NLPImplicitSolver')
+-- typeclass decl
+class NLPImplicitSolverClass a where
+  castNLPImplicitSolver :: a -> NLPImplicitSolver
+instance NLPImplicitSolverClass NLPImplicitSolver where
+  castNLPImplicitSolver = id
+
+-- baseclass instances
+instance SharedObjectClass NLPImplicitSolver where
+  castSharedObject (NLPImplicitSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass NLPImplicitSolver where
+  castPrintableObject (NLPImplicitSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass NLPImplicitSolver where
+  castOptionsFunctionality (NLPImplicitSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass NLPImplicitSolver where
+  castFunction (NLPImplicitSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass NLPImplicitSolver where
+  castIOInterfaceFunction (NLPImplicitSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+instance ImplicitFunctionClass NLPImplicitSolver where
+  castImplicitFunction (NLPImplicitSolver x) = ImplicitFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal NLPImplicitSolver (Ptr NLPImplicitSolver') where
+  marshal (NLPImplicitSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (NLPImplicitSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__NLPImplicitSolver" 
+  c_delete_CasADi__NLPImplicitSolver :: FunPtr (Ptr NLPImplicitSolver' -> IO ())
+instance WrapReturn (Ptr NLPImplicitSolver') NLPImplicitSolver where
+  wrapReturn = (fmap NLPImplicitSolver) . (newForeignPtr c_delete_CasADi__NLPImplicitSolver)
+
+
+-- raw decl
+data ExternalFunction'
+-- data decl
+{-|
+>[INTERNAL]  Interface for a
+>function that is not implemented by CasADi symbolics.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: external_function.hpp 
+-}
+newtype ExternalFunction = ExternalFunction (ForeignPtr ExternalFunction')
+-- typeclass decl
+class ExternalFunctionClass a where
+  castExternalFunction :: a -> ExternalFunction
+instance ExternalFunctionClass ExternalFunction where
+  castExternalFunction = id
+
+-- baseclass instances
+instance SharedObjectClass ExternalFunction where
+  castSharedObject (ExternalFunction x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass ExternalFunction where
+  castPrintableObject (ExternalFunction x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass ExternalFunction where
+  castOptionsFunctionality (ExternalFunction x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass ExternalFunction where
+  castFunction (ExternalFunction x) = Function (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 SimpleIndefDpleSolver'
+-- data decl
+{-|
+>[INTERNAL]  Solving
+>the Discrete Periodic Lyapunov Equations with regular Linear Solvers.
+>
+>Given matrices A_k and symmetric V_k, k = 0..K-1
+>
+>A_k in R^(n x n) V_k in R^n
+>
+>provides all of P_k that satisfy:
+>
+>P_0 = A_(K-1)*P_(K-1)*A_(K-1)' + V_k P_k+1 = A_k*P_k*A_k' + V_k for k =
+>1..K-1
+>
+>Uses Periodic Schur Decomposition (simple) and does not assume positive
+>definiteness. Based on Periodic Lyapunov equations: some applications and
+>new algorithms. Int. J. Control, vol. 67, pp. 69-87, 1997.
+>
+>Joris gillis
+>
+>>Input scheme: CasADi::DPLEInput (DPLE_NUM_IN = 3) [dpleIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| DPLE_A                 | a                      | A matrices (horzcat    |
+>|                        |                        | when const_dim,        |
+>|                        |                        | blkdiag otherwise) .   |
+>+------------------------+------------------------+------------------------+
+>| DPLE_V                 | v                      | V matrices (horzcat    |
+>|                        |                        | when const_dim,        |
+>|                        |                        | blkdiag otherwise) .   |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::DPLEOutput (DPLE_NUM_OUT = 2) [dpleOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| DPLE_P                 | p                      | Lyapunov matrix        |
+>|                        |                        | (horzcat when          |
+>|                        |                        | const_dim, blkdiag     |
+>|                        |                        | otherwise) (cholesky   |
+>|                        |                        | of P if pos_def) .     |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| const_dim    | OT_BOOLEAN   | true         | Assume       | CasADi::Dple |
+>|              |              |              | constant     | Internal     |
+>|              |              |              | dimension of |              |
+>|              |              |              | P            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| eps_unstable | OT_REAL      | 0.000        | A margin for | CasADi::Dple |
+>|              |              |              | unstability  | Internal     |
+>|              |              |              | detection    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| error_unstab | OT_BOOLEAN   | false        | Throw an     | CasADi::Dple |
+>| le           |              |              | exception    | Internal     |
+>|              |              |              | when it is   |              |
+>|              |              |              | detected     |              |
+>|              |              |              | that Product |              |
+>|              |              |              | (A_i,i=N..1) |              |
+>|              |              |              | has          |              |
+>|              |              |              | eigenvalues  |              |
+>|              |              |              | greater than |              |
+>|              |              |              | 1-eps_unstab |              |
+>|              |              |              | le           |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | User-defined | CasADi::Simp |
+>| r            | VER          | )            | linear       | leIndefDpleI |
+>|              |              |              | solver       | nternal      |
+>|              |              |              | class.       |              |
+>|              |              |              | Needed for s |              |
+>|              |              |              | ensitivities |              |
+>|              |              |              | .            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Simp |
+>| r_options    | Y            | )            | be passed to | leIndefDpleI |
+>|              |              |              | the linear   | nternal      |
+>|              |              |              | solver.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pos_def      | OT_BOOLEAN   | false        | Assume P     | CasADi::Dple |
+>|              |              |              | positive     | Internal     |
+>|              |              |              | definite     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: simple_indef_dple_solver.hpp 
+-}
+newtype SimpleIndefDpleSolver = SimpleIndefDpleSolver (ForeignPtr SimpleIndefDpleSolver')
+-- typeclass decl
+class SimpleIndefDpleSolverClass a where
+  castSimpleIndefDpleSolver :: a -> SimpleIndefDpleSolver
+instance SimpleIndefDpleSolverClass SimpleIndefDpleSolver where
+  castSimpleIndefDpleSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SimpleIndefDpleSolver where
+  castSharedObject (SimpleIndefDpleSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SimpleIndefDpleSolver where
+  castPrintableObject (SimpleIndefDpleSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SimpleIndefDpleSolver where
+  castOptionsFunctionality (SimpleIndefDpleSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SimpleIndefDpleSolver where
+  castFunction (SimpleIndefDpleSolver x) = Function (castForeignPtr x)
+
+instance DpleSolverClass SimpleIndefDpleSolver where
+  castDpleSolver (SimpleIndefDpleSolver x) = DpleSolver (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SimpleIndefDpleSolver where
+  castIOInterfaceFunction (SimpleIndefDpleSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SimpleIndefDpleSolver (Ptr SimpleIndefDpleSolver') where
+  marshal (SimpleIndefDpleSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SimpleIndefDpleSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SimpleIndefDpleSolver" 
+  c_delete_CasADi__SimpleIndefDpleSolver :: FunPtr (Ptr SimpleIndefDpleSolver' -> IO ())
+instance WrapReturn (Ptr SimpleIndefDpleSolver') SimpleIndefDpleSolver where
+  wrapReturn = (fmap SimpleIndefDpleSolver) . (newForeignPtr c_delete_CasADi__SimpleIndefDpleSolver)
+
+
+-- raw decl
+data DirectCollocation'
+-- data decl
+{-|
+>[INTERNAL]  Direct
+>collocation.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::OCPInput (OCP_NUM_IN = 14) [ocpIn]
+>+------------+--------+----------------------------------------------+
+>| Full name  | Short  |                 Description                  |
+>+============+========+==============================================+
+>| OCP_LBX    | lbx    | States lower bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBX    | ubx    | States upper bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_X_INIT | x_init | States initial guess (nx x (ns+1)) .         |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBU    | lbu    | Controls lower bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBU    | ubu    | Controls upper bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_U_INIT | u_init | Controls initial guess (nu x ns) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBP    | lbp    | Parameters lower bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBP    | ubp    | Parameters upper bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_P_INIT | p_init | Parameters initial guess (np x 1) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBH    | lbh    | Point constraint lower bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBH    | ubh    | Point constraint upper bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBG    | lbg    | Lower bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBG    | ubg    | Upper bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>
+>>Output scheme: CasADi::OCPOutput (OCP_NUM_OUT = 5) [ocpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| OCP_X_OPT              | x_opt                  | Optimal state          |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_U_OPT              | u_opt                  | Optimal control        |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_P_OPT              | p_opt                  | Optimal parameters .   |
+>+------------------------+------------------------+------------------------+
+>| OCP_COST               | cost                   | Objective/cost         |
+>|                        |                        | function for optimal   |
+>|                        |                        | solution (1 x 1) .     |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| collocation_ | OT_STRING    | "radau"      | Collocation  | CasADi::Dire |
+>| scheme       |              |              | scheme (rada | ctCollocatio |
+>|              |              |              | u|legendre)  | nInternal    |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| final_time   | OT_REAL      | 1            |              | CasADi::OCPS |
+>|              |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| interpolatio | OT_INTEGER   | 3            | Order of the | CasADi::Dire |
+>| n_order      |              |              | interpolatin | ctCollocatio |
+>|              |              |              | g            | nInternal    |
+>|              |              |              | polynomials  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver   | OT_NLPSOLVER | GenericType( | An NLPSolver | CasADi::Dire |
+>|              |              | )            | creator      | ctCollocatio |
+>|              |              |              | function     | nInternal    |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Dire |
+>| ptions       | Y            | )            | be passed to | ctCollocatio |
+>|              |              |              | the NLP      | nInternal    |
+>|              |              |              | Solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_gr | OT_INTEGER   | 20           |              | CasADi::OCPS |
+>| id_points    |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_pa | OT_INTEGER   | 0            |              | CasADi::OCPS |
+>| rameters     |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: direct_collocation.hpp 
+-}
+newtype DirectCollocation = DirectCollocation (ForeignPtr DirectCollocation')
+-- typeclass decl
+class DirectCollocationClass a where
+  castDirectCollocation :: a -> DirectCollocation
+instance DirectCollocationClass DirectCollocation where
+  castDirectCollocation = id
+
+-- baseclass instances
+instance SharedObjectClass DirectCollocation where
+  castSharedObject (DirectCollocation x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass DirectCollocation where
+  castPrintableObject (DirectCollocation x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass DirectCollocation where
+  castOptionsFunctionality (DirectCollocation x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass DirectCollocation where
+  castFunction (DirectCollocation x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass DirectCollocation where
+  castIOInterfaceFunction (DirectCollocation x) = IOInterfaceFunction (castForeignPtr x)
+
+instance OCPSolverClass DirectCollocation where
+  castOCPSolver (DirectCollocation x) = OCPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal DirectCollocation (Ptr DirectCollocation') where
+  marshal (DirectCollocation x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (DirectCollocation x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__DirectCollocation" 
+  c_delete_CasADi__DirectCollocation :: FunPtr (Ptr DirectCollocation' -> IO ())
+instance WrapReturn (Ptr DirectCollocation') DirectCollocation where
+  wrapReturn = (fmap DirectCollocation) . (newForeignPtr c_delete_CasADi__DirectCollocation)
+
+
+-- raw decl
+data QPStabilizer'
+-- data decl
+{-|
+>[INTERNAL]  IPOPT QP Solver for
+>quadratic programming.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with :       H sparse (n x n) positive
+>definite       g dense  (n x 1) n: number of decision variables (x)     nc:
+>number of constraints (A)
+>
+>If H is not positive-definite, the solver should throw an error.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::StabilizedQPSolverInput (STABILIZED_QP_SOLVER_NUM_IN = 13) [stabilizedQpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| STABILIZED_QP_SOLVER_H | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_G | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_A | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_L | lba                    | dense, (nc x 1)        |
+>| BA                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_U | uba                    | dense, (nc x 1)        |
+>| BA                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_L | lbx                    | dense, (n x 1)         |
+>| BX                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_U | ubx                    | dense, (n x 1)         |
+>| BX                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_X | x0                     | dense, (n x 1)         |
+>| 0                      |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_L | lam_x0                 | dense                  |
+>| AM_X0                  |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_M | muR                    | dense (1 x 1)          |
+>| UR                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_M | muE                    | dense (nc x 1)         |
+>| UE                     |                        |                        |
+>+------------------------+------------------------+------------------------+
+>| STABILIZED_QP_SOLVER_M | mu                     | dense (nc x 1)         |
+>| U                      |                        |                        |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QPSolverOutput (QP_SOLVER_NUM_OUT = 5) [qpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver    | OT_QPSOLVER  | GenericType( | The QP       | CasADi::QPSt |
+>|              |              | )            | solver used  | abilizerInte |
+>|              |              |              | to solve the | rnal         |
+>|              |              |              | stabilized   |              |
+>|              |              |              | QPs.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qp_solver_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::QPSt |
+>| tions        | Y            | )            | be passed to | abilizerInte |
+>|              |              |              | the QP       | rnal         |
+>|              |              |              | solver       |              |
+>|              |              |              | instance     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+-----------------+------------------------------+
+>|       Id        |           Used in            |
+>+=================+==============================+
+>| qp_solver_stats | CasADi::QPStabilizerInternal |
+>+-----------------+------------------------------+
+>
+>Diagrams
+>
+>C++ includes: qp_stabilizer.hpp 
+-}
+newtype QPStabilizer = QPStabilizer (ForeignPtr QPStabilizer')
+-- typeclass decl
+class QPStabilizerClass a where
+  castQPStabilizer :: a -> QPStabilizer
+instance QPStabilizerClass QPStabilizer where
+  castQPStabilizer = id
+
+-- baseclass instances
+instance SharedObjectClass QPStabilizer where
+  castSharedObject (QPStabilizer x) = SharedObject (castForeignPtr x)
+
+instance StabilizedQPSolverClass QPStabilizer where
+  castStabilizedQPSolver (QPStabilizer x) = StabilizedQPSolver (castForeignPtr x)
+
+instance PrintableObjectClass QPStabilizer where
+  castPrintableObject (QPStabilizer x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass QPStabilizer where
+  castOptionsFunctionality (QPStabilizer x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass QPStabilizer where
+  castFunction (QPStabilizer x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass QPStabilizer where
+  castIOInterfaceFunction (QPStabilizer x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal QPStabilizer (Ptr QPStabilizer') where
+  marshal (QPStabilizer x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (QPStabilizer x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__QPStabilizer" 
+  c_delete_CasADi__QPStabilizer :: FunPtr (Ptr QPStabilizer' -> IO ())
+instance WrapReturn (Ptr QPStabilizer') QPStabilizer where
+  wrapReturn = (fmap QPStabilizer) . (newForeignPtr c_delete_CasADi__QPStabilizer)
+
+
+-- raw decl
+data GenIMatrix'
+-- data decl
+{-|
+>[INTERNAL]   Matrix base
+>class.
+>
+>This is a common base class for MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom.  The class is designed with the idea that
+>"everything is a matrix", that is, also scalars and vectors. This
+>philosophy makes it easy to use and to interface in particularily with
+>Python and Matlab/Octave.  The syntax tries to stay as close as possible to
+>the ublas syntax when it comes to vector/matrix operations.  Index starts
+>with 0. Index vec happens as follows: (rr,cc) -> k = rr+cc*size1() Vectors
+>are column vectors.  The storage format is Compressed Column Storage (CCS),
+>similar to that used for sparse matrices in Matlab, but unlike this format,
+>we do allow for elements to be structurally non-zero but numerically zero.
+>The sparsity pattern, which is reference counted and cached, can be accessed
+>with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: generic_matrix.hpp 
+-}
+newtype GenIMatrix = GenIMatrix (ForeignPtr GenIMatrix')
+-- typeclass decl
+class GenIMatrixClass a where
+  castGenIMatrix :: a -> GenIMatrix
+instance GenIMatrixClass GenIMatrix where
+  castGenIMatrix = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal GenIMatrix (Ptr GenIMatrix') where
+  marshal (GenIMatrix x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (GenIMatrix x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericMatrix_CasADi__Matrix_int__" 
+  c_delete_CasADi__GenericMatrix_CasADi__Matrix_int__ :: FunPtr (Ptr GenIMatrix' -> IO ())
+instance WrapReturn (Ptr GenIMatrix') GenIMatrix where
+  wrapReturn = (fmap GenIMatrix) . (newForeignPtr c_delete_CasADi__GenericMatrix_CasADi__Matrix_int__)
+
+
+-- raw decl
+data Callback'
+-- data decl
+{-|
+>[INTERNAL]   Callback.
+>
+>In C++, supply a CallbackCPtr function pointer When the callback function
+>returns a non-zero integer, the host is signalled of a problem. E.g. an
+>NLPSolver may halt iterations if the Callback is something else than 0
+>
+>In python, supply a callable, annotated with pycallback decorator
+>
+>C++ includes: functor.hpp 
+-}
+newtype Callback = Callback (ForeignPtr Callback')
+-- typeclass decl
+class CallbackClass a where
+  castCallback :: a -> Callback
+instance CallbackClass Callback where
+  castCallback = id
+
+-- baseclass instances
+instance SharedObjectClass Callback where
+  castSharedObject (Callback x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass Callback where
+  castPrintableObject (Callback x) = PrintableObject (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 SOCPQCQPSolver'
+-- data decl
+{-|
+>[INTERNAL]  SOCP QCQP Solver
+>for quadratic programming.
+>
+>Note: this implementation relies on Cholesky decomposition: Chol(H) = L -> H
+>= LL' with L lower triangular This requires Pi, H to be positive definite.
+>Positive semi-definite is not sufficient. Notably, H==0 will not work.
+>
+>A better implementation would rely on matrix square root, but we need
+>singular value decomposition to implement that.
+>
+>This implementation makes use of the epigraph reformulation: min f(x) x
+>
+>min t x,t f(x) <= t
+>
+>This implementation makes use of the following identity:
+>
+>|| Gx+h||_2 <= e'x + f
+>
+>x'(G'G - ee')x + (2 h'G - 2 f e') x + h'h - f <= 0
+>
+>where we put e = [0 0 ... 1] for the qadratic constraint arising from the
+>epigraph reformulation and e==0 for all other qc.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             1/2 x' Pi x +
+>qi' x + ri  <= 0   for i=0..nq-1                          LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with : H, Pi sparse (n x n) positive
+>definite       g, qi dense  (n x 1) ri scalar                  n: number of
+>decision variables (x)     nc: number of linear constraints (A)     nq:
+>number of quadratic constraints
+>
+>If H, Pi is not positive-definite, the solver should throw an error.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::QCQPSolverInput (QCQP_SOLVER_NUM_IN = 13) [qcqpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QCQP_SOLVER_H          | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_G          | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_P          | p                      | The horizontal stack   |
+>|                        |                        | of all Pi. Each Pi is  |
+>|                        |                        | sparse (n x n). Only   |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_Q          | q                      | The vertical stack of  |
+>|                        |                        | all qi: dense, (nq n x |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_R          | r                      | The vertical stack of  |
+>|                        |                        | all scalars ri (nq x   |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_A          | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LBA        | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_UBA        | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LBX        | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_UBX        | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_X0         | x0                     | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LAM_X0     | lam_x0                 | dense                  |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QCQPSolverOutput (QCQP_SOLVER_NUM_OUT = 5) [qcqpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QCQP_SOLVER_X          | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_COST       | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LAM_A      | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QCQP_SOLVER_LAM_X      | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| socp_solver  | OT_SOCPSOLVE | GenericType( | The          | CasADi::SOCP |
+>|              | R            | )            | SOCPSolver   | QCQPInternal |
+>|              |              |              | used to      |              |
+>|              |              |              | solve the    |              |
+>|              |              |              | QCQPs.       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| socp_solver_ | OT_DICTIONAR | GenericType( | Options to   | CasADi::SOCP |
+>| options      | Y            | )            | be passed to | QCQPInternal |
+>|              |              |              | the          |              |
+>|              |              |              | SOCPSOlver   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+-------------------+--------------------------+
+>|        Id         |         Used in          |
+>+===================+==========================+
+>| socp_solver_stats | CasADi::SOCPQCQPInternal |
+>+-------------------+--------------------------+
+>
+>Diagrams
+>
+>C++ includes: socp_qcqp_solver.hpp 
+-}
+newtype SOCPQCQPSolver = SOCPQCQPSolver (ForeignPtr SOCPQCQPSolver')
+-- typeclass decl
+class SOCPQCQPSolverClass a where
+  castSOCPQCQPSolver :: a -> SOCPQCQPSolver
+instance SOCPQCQPSolverClass SOCPQCQPSolver where
+  castSOCPQCQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SOCPQCQPSolver where
+  castSharedObject (SOCPQCQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SOCPQCQPSolver where
+  castPrintableObject (SOCPQCQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance QCQPSolverClass SOCPQCQPSolver where
+  castQCQPSolver (SOCPQCQPSolver x) = QCQPSolver (castForeignPtr x)
+
+instance OptionsFunctionalityClass SOCPQCQPSolver where
+  castOptionsFunctionality (SOCPQCQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SOCPQCQPSolver where
+  castFunction (SOCPQCQPSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SOCPQCQPSolver where
+  castIOInterfaceFunction (SOCPQCQPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SOCPQCQPSolver (Ptr SOCPQCQPSolver') where
+  marshal (SOCPQCQPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SOCPQCQPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SOCPQCQPSolver" 
+  c_delete_CasADi__SOCPQCQPSolver :: FunPtr (Ptr SOCPQCQPSolver' -> IO ())
+instance WrapReturn (Ptr SOCPQCQPSolver') SOCPQCQPSolver where
+  wrapReturn = (fmap SOCPQCQPSolver) . (newForeignPtr c_delete_CasADi__SOCPQCQPSolver)
+
+
+-- raw decl
+data QCQPQPSolver'
+-- data decl
+{-|
+>[INTERNAL]  Use a QCQP solver
+>to solve q QP.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with :       H sparse (n x n) positive
+>definite       g dense  (n x 1) n: number of decision variables (x)     nc:
+>number of constraints (A)
+>
+>If H is not positive-definite, the solver should throw an error.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::QPSolverInput (QP_SOLVER_NUM_IN = 10) [qpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_H            | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_G            | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_A            | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LBA          | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_UBA          | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LBX          | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_UBX          | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_X0           | x0                     | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X0       | lam_x0                 | dense                  |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QPSolverOutput (QP_SOLVER_NUM_OUT = 5) [qpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qcqp_solver  | OT_QCQPSOLVE | GenericType( | The          | CasADi::QCQP |
+>|              | R            | )            | QCQPSolver   | QPInternal   |
+>|              |              |              | used to      |              |
+>|              |              |              | solve the    |              |
+>|              |              |              | QPs.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| qcqp_solver_ | OT_DICTIONAR | GenericType( | Options to   | CasADi::QCQP |
+>| options      | Y            | )            | be passed to | QPInternal   |
+>|              |              |              | the          |              |
+>|              |              |              | QCQPSOlver   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+-------------------+------------------------+
+>|        Id         |        Used in         |
+>+===================+========================+
+>| qcqp_solver_stats | CasADi::QCQPQPInternal |
+>+-------------------+------------------------+
+>
+>Diagrams
+>
+>C++ includes: qcqp_qp_solver.hpp 
+-}
+newtype QCQPQPSolver = QCQPQPSolver (ForeignPtr QCQPQPSolver')
+-- typeclass decl
+class QCQPQPSolverClass a where
+  castQCQPQPSolver :: a -> QCQPQPSolver
+instance QCQPQPSolverClass QCQPQPSolver where
+  castQCQPQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass QCQPQPSolver where
+  castSharedObject (QCQPQPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass QCQPQPSolver where
+  castPrintableObject (QCQPQPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass QCQPQPSolver where
+  castOptionsFunctionality (QCQPQPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass QCQPQPSolver where
+  castFunction (QCQPQPSolver x) = Function (castForeignPtr x)
+
+instance QPSolverClass QCQPQPSolver where
+  castQPSolver (QCQPQPSolver x) = QPSolver (castForeignPtr x)
+
+instance IOInterfaceFunctionClass QCQPQPSolver where
+  castIOInterfaceFunction (QCQPQPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal QCQPQPSolver (Ptr QCQPQPSolver') where
+  marshal (QCQPQPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (QCQPQPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__QCQPQPSolver" 
+  c_delete_CasADi__QCQPQPSolver :: FunPtr (Ptr QCQPQPSolver' -> IO ())
+instance WrapReturn (Ptr QCQPQPSolver') QCQPQPSolver where
+  wrapReturn = (fmap QCQPQPSolver) . (newForeignPtr c_delete_CasADi__QCQPQPSolver)
+
+
+-- raw decl
+data ExpSX'
+-- data decl
+{-|
+>[INTERNAL]  Expression
+>interface.
+>
+>This is a common base class for SX, MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom. Joel Andersson
+>
+>C++ includes: generic_expression.hpp 
+-}
+newtype ExpSX = ExpSX (ForeignPtr ExpSX')
+-- typeclass decl
+class ExpSXClass a where
+  castExpSX :: a -> ExpSX
+instance ExpSXClass ExpSX where
+  castExpSX = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal ExpSX (Ptr ExpSX') where
+  marshal (ExpSX x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (ExpSX x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement__" 
+  c_delete_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement__ :: FunPtr (Ptr ExpSX' -> IO ())
+instance WrapReturn (Ptr ExpSX') ExpSX where
+  wrapReturn = (fmap ExpSX) . (newForeignPtr c_delete_CasADi__GenericExpression_CasADi__Matrix_CasADi__SXElement__)
+
+
+-- raw decl
+data Integrator'
+-- data decl
+{-|
+>[INTERNAL]  Base class for
+>integrators.
+>
+>Integrator abstract base class
+>
+>Solves an initial value problem (IVP) coupled to a terminal value problem
+>with differential equation given as an implicit ODE coupled to an algebraic
+>equation and a set of quadratures: Initial conditions at t=t0  x(t0)  = x0
+>q(t0)  = 0   Forward integration from t=t0 to t=tf  der(x) =
+>function(x,z,p,t) Forward ODE  0 = fz(x,z,p,t)                  Forward
+>algebraic equations  der(q) = fq(x,z,p,t)                  Forward
+>quadratures Terminal conditions at t=tf  rx(tf)  = rx0  rq(tf)  = 0
+>Backward integration from t=tf to t=t0  der(rx) = gx(rx,rz,rp,x,z,p,t)
+>Backward ODE  0 = gz(rx,rz,rp,x,z,p,t)        Backward algebraic equations
+>der(rq) = gq(rx,rz,rp,x,z,p,t)        Backward quadratures where we assume
+>that both the forward and backwards integrations are index-1  (i.e. dfz/dz,
+>dgz/drz are invertible) and furthermore that gx, gz and gq have a linear
+>dependency on rx, rz and rp.
+>
+>The Integrator class provides some additional functionality, such as getting
+>the value of the state and/or sensitivities at certain time points.
+>
+>The class does not specify the method used for the integration. This is
+>defined in derived classes.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: integrator.hpp 
+-}
+newtype Integrator = Integrator (ForeignPtr Integrator')
+-- typeclass decl
+class IntegratorClass a where
+  castIntegrator :: a -> Integrator
+instance IntegratorClass Integrator where
+  castIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass Integrator where
+  castSharedObject (Integrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass Integrator where
+  castPrintableObject (Integrator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass Integrator where
+  castOptionsFunctionality (Integrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass Integrator where
+  castFunction (Integrator x) = Function (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 WeakRef'
+-- data decl
+{-|
+>[INTERNAL]  Weak reference type A
+>weak reference to a SharedObject.
+>
+>Joel Andersson
+>
+>C++ includes: weak_ref.hpp 
+-}
+newtype WeakRef = WeakRef (ForeignPtr WeakRef')
+-- typeclass decl
+class WeakRefClass a where
+  castWeakRef :: a -> WeakRef
+instance WeakRefClass WeakRef where
+  castWeakRef = id
+
+-- baseclass instances
+instance SharedObjectClass WeakRef where
+  castSharedObject (WeakRef x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass WeakRef where
+  castPrintableObject (WeakRef x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal WeakRef (Ptr WeakRef') where
+  marshal (WeakRef x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (WeakRef x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__WeakRef" 
+  c_delete_CasADi__WeakRef :: FunPtr (Ptr WeakRef' -> IO ())
+instance WrapReturn (Ptr WeakRef') WeakRef where
+  wrapReturn = (fmap WeakRef) . (newForeignPtr c_delete_CasADi__WeakRef)
+
+
+-- raw decl
+data Simulator'
+-- data decl
+{-|
+>[INTERNAL]   Integrator class.
+>
+>An "simulator" integrates an IVP, stopping at a (fixed) number of grid
+>points and evaluates a set of output functions at these points. The internal
+>stepsizes of the integrator need not coincide with the gridpoints.
+>
+>Simulator is an CasADi::Function mapping from CasADi::IntegratorInput to n.
+>\\
+>
+>The output function needs to be a mapping from CasADi::DAEInput to n. The
+>default output has n=1 and the output is the (vectorized) differential state
+>for each time step.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::Simu |
+>|              |              |              | uts)  (initi | latorInterna |
+>|              |              |              | al|step)     | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+---------+---------------------------+
+>|   Id    |          Used in          |
+>+=========+===========================+
+>| initial | CasADi::SimulatorInternal |
+>+---------+---------------------------+
+>| inputs  | CasADi::FunctionInternal  |
+>+---------+---------------------------+
+>| outputs | CasADi::FunctionInternal  |
+>+---------+---------------------------+
+>| step    | CasADi::SimulatorInternal |
+>+---------+---------------------------+
+>
+>Diagrams
+>
+>C++ includes: simulator.hpp 
+-}
+newtype Simulator = Simulator (ForeignPtr Simulator')
+-- typeclass decl
+class SimulatorClass a where
+  castSimulator :: a -> Simulator
+instance SimulatorClass Simulator where
+  castSimulator = id
+
+-- baseclass instances
+instance SharedObjectClass Simulator where
+  castSharedObject (Simulator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass Simulator where
+  castPrintableObject (Simulator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass Simulator where
+  castOptionsFunctionality (Simulator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass Simulator where
+  castFunction (Simulator x) = Function (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 Parallelizer'
+-- data decl
+{-|
+>[INTERNAL]   Parallelizer
+>execution of functions.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parallelizat | OT_STRING    | "serial"     | (serial|open | CasADi::Para |
+>| ion          |              |              | mp|mpi)      | llelizerInte |
+>|              |              |              |              | rnal         |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available stats
+>+-----------------+------------------------------+
+>|       Id        |           Used in            |
+>+=================+==============================+
+>| max_threads     | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>| num_threads     | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>| task_allocation | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>| task_cputime    | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>| task_endtime    | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>| task_order      | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>| task_starttime  | CasADi::ParallelizerInternal |
+>+-----------------+------------------------------+
+>
+>Diagrams
+>
+>C++ includes: parallelizer.hpp 
+-}
+newtype Parallelizer = Parallelizer (ForeignPtr Parallelizer')
+-- typeclass decl
+class ParallelizerClass a where
+  castParallelizer :: a -> Parallelizer
+instance ParallelizerClass Parallelizer where
+  castParallelizer = id
+
+-- baseclass instances
+instance SharedObjectClass Parallelizer where
+  castSharedObject (Parallelizer x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass Parallelizer where
+  castPrintableObject (Parallelizer x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass Parallelizer where
+  castOptionsFunctionality (Parallelizer x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass Parallelizer where
+  castFunction (Parallelizer x) = Function (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 SimpleHomotopyNLPSolver'
+-- data decl
+{-|
+>[INTERNAL]  Solving
+>an NLP homotopy with regular NLP solvers.
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::Homo |
+>|              |              |              | NLP function | topyNLPInter |
+>|              |              |              | in terms of  | nal          |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver   | OT_NLPSOLVER | GenericType( | The NLP      | CasADi::Simp |
+>|              |              | )            | solver to be | leHomotopyNL |
+>|              |              |              | used by the  | PInternal    |
+>|              |              |              | Homotopy     |              |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Simp |
+>| ptions       | Y            | )            | be passed to | leHomotopyNL |
+>|              |              |              | the Homotopy | PInternal    |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| num_steps    | OT_INTEGER   | 10           | Take this    | CasADi::Simp |
+>|              |              |              | many steps   | leHomotopyNL |
+>|              |              |              | to go from   | PInternal    |
+>|              |              |              | tau=0 to     |              |
+>|              |              |              | tau=1.       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: simple_homotopy_nlp_solver.hpp 
+-}
+newtype SimpleHomotopyNLPSolver = SimpleHomotopyNLPSolver (ForeignPtr SimpleHomotopyNLPSolver')
+-- typeclass decl
+class SimpleHomotopyNLPSolverClass a where
+  castSimpleHomotopyNLPSolver :: a -> SimpleHomotopyNLPSolver
+instance SimpleHomotopyNLPSolverClass SimpleHomotopyNLPSolver where
+  castSimpleHomotopyNLPSolver = id
+
+-- baseclass instances
+instance HomotopyNLPSolverClass SimpleHomotopyNLPSolver where
+  castHomotopyNLPSolver (SimpleHomotopyNLPSolver x) = HomotopyNLPSolver (castForeignPtr x)
+
+instance SharedObjectClass SimpleHomotopyNLPSolver where
+  castSharedObject (SimpleHomotopyNLPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SimpleHomotopyNLPSolver where
+  castPrintableObject (SimpleHomotopyNLPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SimpleHomotopyNLPSolver where
+  castOptionsFunctionality (SimpleHomotopyNLPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SimpleHomotopyNLPSolver where
+  castFunction (SimpleHomotopyNLPSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SimpleHomotopyNLPSolver where
+  castIOInterfaceFunction (SimpleHomotopyNLPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SimpleHomotopyNLPSolver (Ptr SimpleHomotopyNLPSolver') where
+  marshal (SimpleHomotopyNLPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SimpleHomotopyNLPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SimpleHomotopyNLPSolver" 
+  c_delete_CasADi__SimpleHomotopyNLPSolver :: FunPtr (Ptr SimpleHomotopyNLPSolver' -> IO ())
+instance WrapReturn (Ptr SimpleHomotopyNLPSolver') SimpleHomotopyNLPSolver where
+  wrapReturn = (fmap SimpleHomotopyNLPSolver) . (newForeignPtr c_delete_CasADi__SimpleHomotopyNLPSolver)
+
+
+-- raw decl
+data SundialsIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Interface to
+>the Sundials integrators.
+>
+>Base class for integrators. Solves an initial value problem (IVP) coupled to
+>a terminal value problem with differential equation given as an implicit ODE
+>coupled to an algebraic equation and a set of quadratures: Initial
+>conditions at t=t0  x(t0)  = x0  q(t0)  = 0   Forward integration from t=t0
+>to t=tf  der(x) = function(x,z,p,t) Forward ODE  0 = fz(x,z,p,t)
+>Forward algebraic equations  der(q) = fq(x,z,p,t)                  Forward
+>quadratures Terminal conditions at t=tf  rx(tf)  = rx0  rq(tf)  = 0
+>Backward integration from t=tf to t=t0  der(rx) = gx(rx,rz,rp,x,z,p,t)
+>Backward ODE  0 = gz(rx,rz,rp,x,z,p,t)        Backward algebraic equations
+>der(rq) = gq(rx,rz,rp,x,z,p,t)        Backward quadratures where we assume
+>that both the forward and backwards integrations are index-1  (i.e. dfz/dz,
+>dgz/drz are invertible) and furthermore that gx, gz and gq have a linear
+>dependency on rx, rz and rp.
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| abstol       | OT_REAL      | 0.000        | Absolute     | CasADi::Sund |
+>|              |              |              | tolerence    | ialsInternal |
+>|              |              |              | for the IVP  |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| abstolB      | OT_REAL      | GenericType( | Absolute     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | abstol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | true         | Use exact    | CasADi::Sund |
+>| an           |              |              | Jacobian     | ialsInternal |
+>|              |              |              | information  |              |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | GenericType( | Use exact    | CasADi::Sund |
+>| anB          |              | )            | Jacobian     | ialsInternal |
+>|              |              |              | information  |              |
+>|              |              |              | for the      |              |
+>|              |              |              | backward     |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to exa |              |
+>|              |              |              | ct_jacobian] |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| finite_diffe | OT_BOOLEAN   | false        | Use finite   | CasADi::Sund |
+>| rence_fsens  |              |              | differences  | ialsInternal |
+>|              |              |              | to           |              |
+>|              |              |              | approximate  |              |
+>|              |              |              | the forward  |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations    |              |
+>|              |              |              | (if AD is    |              |
+>|              |              |              | not          |              |
+>|              |              |              | available)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_abstol | OT_REAL      | GenericType( | Absolute     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | abstol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_err_co | OT_BOOLEAN   | true         | include the  | CasADi::Sund |
+>| n            |              |              | forward sens | ialsInternal |
+>|              |              |              | itivities in |              |
+>|              |              |              | all error    |              |
+>|              |              |              | controls     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_reltol | OT_REAL      | GenericType( | Relative     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | reltol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_scalin | OT_REALVECTO | GenericType( | Scaling      | CasADi::Sund |
+>| g_factors    | R            | )            | factor for   | ialsInternal |
+>|              |              |              | the          |              |
+>|              |              |              | components   |              |
+>|              |              |              | if finite    |              |
+>|              |              |              | differences  |              |
+>|              |              |              | is used      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_sensit | OT_INTEGERVE | GenericType( | Specifies    | CasADi::Sund |
+>| iviy_paramet | CTOR         | )            | which        | ialsInternal |
+>| ers          |              |              | components   |              |
+>|              |              |              | will be used |              |
+>|              |              |              | when         |              |
+>|              |              |              | estimating   |              |
+>|              |              |              | the          |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| interpolatio | OT_STRING    | "hermite"    | Type of inte | CasADi::Sund |
+>| n_type       |              |              | rpolation    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint sens |              |
+>|              |              |              | itivities (h |              |
+>|              |              |              | ermite|polyn |              |
+>|              |              |              | omial)       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | "gmres"      | (gmres|bcgst | CasADi::Sund |
+>| lver         |              |              | ab|tfqmr)    | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | GenericType( | (gmres|bcgst | CasADi::Sund |
+>| lverB        |              | )            | ab|tfqmr)    | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | A custom     | CasADi::Sund |
+>| r            | VER          | )            | linear       | ialsInternal |
+>|              |              |              | solver       |              |
+>|              |              |              | creator      |              |
+>|              |              |              | function     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | A custom     | CasADi::Sund |
+>| rB           | VER          | )            | linear       | ialsInternal |
+>|              |              |              | solver       |              |
+>|              |              |              | creator      |              |
+>|              |              |              | function for |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to lin |              |
+>|              |              |              | ear_solver]  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Sund |
+>| r_options    | Y            | )            | be passed to | ialsInternal |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Sund |
+>| r_optionsB   | Y            | )            | be passed to | ialsInternal |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver for   |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to lin |              |
+>|              |              |              | ear_solver_o |              |
+>|              |              |              | ptions]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | "dense"      | (user_define | CasADi::Sund |
+>| r_type       |              |              | d|dense|band | ialsInternal |
+>|              |              |              | ed|iterative |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | GenericType( | (user_define | CasADi::Sund |
+>| r_typeB      |              | )            | d|dense|band | ialsInternal |
+>|              |              |              | ed|iterative |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   | GenericType( | Lower band-  | CasADi::Sund |
+>| dth          |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | Jacobian (es |              |
+>|              |              |              | timations)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   | GenericType( | lower band-  | CasADi::Sund |
+>| dthB         |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | jacobians    |              |
+>|              |              |              | for backward |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to low |              |
+>|              |              |              | er_bandwidth |              |
+>|              |              |              | ]            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylov   | OT_INTEGER   | 10           | Maximum      | CasADi::Sund |
+>|              |              |              | Krylov       | ialsInternal |
+>|              |              |              | subspace     |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylovB  | OT_INTEGER   | GenericType( | Maximum      | CasADi::Sund |
+>|              |              | )            | krylov       | ialsInternal |
+>|              |              |              | subspace     |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_multiste | OT_INTEGER   | 5            |              | CasADi::Sund |
+>| p_order      |              |              |              | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_num_step | OT_INTEGER   | 10000        | Maximum      | CasADi::Sund |
+>| s            |              |              | number of    | ialsInternal |
+>|              |              |              | integrator   |              |
+>|              |              |              | steps        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretype      | OT_STRING    | "none"       | (none|left|r | CasADi::Sund |
+>|              |              |              | ight|both)   | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretypeB     | OT_STRING    | GenericType( | (none|left|r | CasADi::Sund |
+>|              |              | )            | ight|both)   | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quad_err_con | OT_BOOLEAN   | false        | Should the   | CasADi::Sund |
+>|              |              |              | quadratures  | ialsInternal |
+>|              |              |              | affect the   |              |
+>|              |              |              | step size    |              |
+>|              |              |              | control      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reltol       | OT_REAL      | 0.000        | Relative     | CasADi::Sund |
+>|              |              |              | tolerence    | ialsInternal |
+>|              |              |              | for the IVP  |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reltolB      | OT_REAL      | GenericType( | Relative     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | reltol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sensitivity_ | OT_STRING    | "simultaneou | (simultaneou | CasADi::Sund |
+>| method       |              | s"           | s|staggered) | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| steps_per_ch | OT_INTEGER   | 20           | Number of    | CasADi::Sund |
+>| eckpoint     |              |              | steps        | ialsInternal |
+>|              |              |              | between two  |              |
+>|              |              |              | consecutive  |              |
+>|              |              |              | checkpoints  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| stop_at_end  | OT_BOOLEAN   | true         | Stop the     | CasADi::Sund |
+>|              |              |              | integrator   | ialsInternal |
+>|              |              |              | at the end   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | interval     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   | GenericType( | Upper band-  | CasADi::Sund |
+>| dth          |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | Jacobian (es |              |
+>|              |              |              | timations)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   | GenericType( | Upper band-  | CasADi::Sund |
+>| dthB         |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | jacobians    |              |
+>|              |              |              | for backward |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to upp |              |
+>|              |              |              | er_bandwidth |              |
+>|              |              |              | ]            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | false        | Precondition | CasADi::Sund |
+>| tioner       |              |              | an iterative | ialsInternal |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | GenericType( | Precondition | CasADi::Sund |
+>| tionerB      |              | )            | an iterative | ialsInternal |
+>|              |              |              | solver for   |              |
+>|              |              |              | the          |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | problem      |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to use |              |
+>|              |              |              | _preconditio |              |
+>|              |              |              | ner]         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: sundials_integrator.hpp 
+-}
+newtype SundialsIntegrator = SundialsIntegrator (ForeignPtr SundialsIntegrator')
+-- typeclass decl
+class SundialsIntegratorClass a where
+  castSundialsIntegrator :: a -> SundialsIntegrator
+instance SundialsIntegratorClass SundialsIntegrator where
+  castSundialsIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass SundialsIntegrator where
+  castSharedObject (SundialsIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SundialsIntegrator where
+  castPrintableObject (SundialsIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SundialsIntegrator where
+  castOptionsFunctionality (SundialsIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SundialsIntegrator where
+  castFunction (SundialsIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass SundialsIntegrator where
+  castIntegrator (SundialsIntegrator x) = Integrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SundialsIntegrator where
+  castIOInterfaceFunction (SundialsIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SundialsIntegrator (Ptr SundialsIntegrator') where
+  marshal (SundialsIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SundialsIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SundialsIntegrator" 
+  c_delete_CasADi__SundialsIntegrator :: FunPtr (Ptr SundialsIntegrator' -> IO ())
+instance WrapReturn (Ptr SundialsIntegrator') SundialsIntegrator where
+  wrapReturn = (fmap SundialsIntegrator) . (newForeignPtr c_delete_CasADi__SundialsIntegrator)
+
+
+-- raw decl
+data QPSolver'
+-- data decl
+{-|
+>[INTERNAL]   QPSolver.
+>
+>Solves the following strictly convex problem:
+>
+>min          1/2 x' H x + g' x   x  subject to             LBA <= A x <= UBA
+>LBX <= x   <= UBX                  with :       H sparse (n x n) positive
+>definite       g dense  (n x 1) n: number of decision variables (x)     nc:
+>number of constraints (A)
+>
+>If H is not positive-definite, the solver should throw an error.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::QPSolverInput (QP_SOLVER_NUM_IN = 10) [qpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_H            | h                      | The square matrix H:   |
+>|                        |                        | sparse, (n x n). Only  |
+>|                        |                        | the lower triangular   |
+>|                        |                        | part is actually used. |
+>|                        |                        | The matrix is assumed  |
+>|                        |                        | to be symmetrical. .   |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_G            | g                      | The vector g: dense,   |
+>|                        |                        | (n x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_A            | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LBA          | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_UBA          | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LBX          | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_UBX          | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_X0           | x0                     | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X0       | lam_x0                 | dense                  |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::QPSolverOutput (QP_SOLVER_NUM_OUT = 5) [qpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| QP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| QP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: qp_solver.hpp 
+-}
+newtype QPSolver = QPSolver (ForeignPtr QPSolver')
+-- typeclass decl
+class QPSolverClass a where
+  castQPSolver :: a -> QPSolver
+instance QPSolverClass QPSolver where
+  castQPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass QPSolver where
+  castSharedObject (QPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass QPSolver where
+  castPrintableObject (QPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass QPSolver where
+  castOptionsFunctionality (QPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass QPSolver where
+  castFunction (QPSolver x) = Function (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 Nullspace'
+-- data decl
+{-|
+>[INTERNAL]  Base class for
+>nullspace construction.
+>
+>Constructs a basis for the null-space of a fat matrix A. i.e. finds Z such
+>that AZ = 0 holds.
+>
+>The nullspace is also known as the orthogonal complement of the rowspace of
+>a matrix.
+>
+>It is assumed that the matrix A is of full rank.
+>
+>Implementations are not required to construct an orthogonal or orthonormal
+>basis Joris Gillis
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| dense        | OT_BOOLEAN   | true         | Indicates    | CasADi::Null |
+>|              |              |              | that dense   | spaceInterna |
+>|              |              |              | matrices can | l            |
+>|              |              |              | be assumed   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: nullspace.hpp 
+-}
+newtype Nullspace = Nullspace (ForeignPtr Nullspace')
+-- typeclass decl
+class NullspaceClass a where
+  castNullspace :: a -> Nullspace
+instance NullspaceClass Nullspace where
+  castNullspace = id
+
+-- baseclass instances
+instance SharedObjectClass Nullspace where
+  castSharedObject (Nullspace x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass Nullspace where
+  castPrintableObject (Nullspace x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass Nullspace where
+  castOptionsFunctionality (Nullspace x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass Nullspace where
+  castFunction (Nullspace x) = Function (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 IdasIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Interface to IDAS
+>from the Sundials suite.
+>
+>Base class for integrators. Solves an initial value problem (IVP) coupled to
+>a terminal value problem with differential equation given as an implicit ODE
+>coupled to an algebraic equation and a set of quadratures: Initial
+>conditions at t=t0  x(t0)  = x0  q(t0)  = 0   Forward integration from t=t0
+>to t=tf  der(x) = function(x,z,p,t) Forward ODE  0 = fz(x,z,p,t)
+>Forward algebraic equations  der(q) = fq(x,z,p,t)                  Forward
+>quadratures Terminal conditions at t=tf  rx(tf)  = rx0  rq(tf)  = 0
+>Backward integration from t=tf to t=t0  der(rx) = gx(rx,rz,rp,x,z,p,t)
+>Backward ODE  0 = gz(rx,rz,rp,x,z,p,t)        Backward algebraic equations
+>der(rq) = gq(rx,rz,rp,x,z,p,t)        Backward quadratures where we assume
+>that both the forward and backwards integrations are index-1  (i.e. dfz/dz,
+>dgz/drz are invertible) and furthermore that gx, gz and gq have a linear
+>dependency on rx, rz and rp.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| abstol       | OT_REAL      | 0.000        | Absolute     | CasADi::Sund |
+>|              |              |              | tolerence    | ialsInternal |
+>|              |              |              | for the IVP  |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| abstolB      | OT_REAL      | GenericType( | Absolute     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | abstol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| abstolv      | OT_REALVECTO |              |              | CasADi::Idas |
+>|              | R            |              |              | Internal     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| calc_ic      | OT_BOOLEAN   | true         | Use          | CasADi::Idas |
+>|              |              |              | IDACalcIC to | Internal     |
+>|              |              |              | get          |              |
+>|              |              |              | consistent   |              |
+>|              |              |              | initial      |              |
+>|              |              |              | conditions.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| calc_icB     | OT_BOOLEAN   | GenericType( | Use          | CasADi::Idas |
+>|              |              | )            | IDACalcIC to | Internal     |
+>|              |              |              | get          |              |
+>|              |              |              | consistent   |              |
+>|              |              |              | initial      |              |
+>|              |              |              | conditions   |              |
+>|              |              |              | for          |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | system       |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | calc_ic].    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| cj_scaling   | OT_BOOLEAN   | false        | IDAS scaling | CasADi::Idas |
+>|              |              |              | on cj for    | Internal     |
+>|              |              |              | the user-    |              |
+>|              |              |              | defined      |              |
+>|              |              |              | linear       |              |
+>|              |              |              | solver       |              |
+>|              |              |              | module       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| disable_inte | OT_BOOLEAN   | false        | Disable IDAS | CasADi::Idas |
+>| rnal_warning |              |              | internal     | Internal     |
+>| s            |              |              | warning      |              |
+>|              |              |              | messages     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | true         | Use exact    | CasADi::Sund |
+>| an           |              |              | Jacobian     | ialsInternal |
+>|              |              |              | information  |              |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | GenericType( | Use exact    | CasADi::Sund |
+>| anB          |              | )            | Jacobian     | ialsInternal |
+>|              |              |              | information  |              |
+>|              |              |              | for the      |              |
+>|              |              |              | backward     |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to exa |              |
+>|              |              |              | ct_jacobian] |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| extra_fsens_ | OT_BOOLEAN   | false        | Call calc ic | CasADi::Idas |
+>| calc_ic      |              |              | an extra     | Internal     |
+>|              |              |              | time, with   |              |
+>|              |              |              | fsens=0      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| finite_diffe | OT_BOOLEAN   | false        | Use finite   | CasADi::Sund |
+>| rence_fsens  |              |              | differences  | ialsInternal |
+>|              |              |              | to           |              |
+>|              |              |              | approximate  |              |
+>|              |              |              | the forward  |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations    |              |
+>|              |              |              | (if AD is    |              |
+>|              |              |              | not          |              |
+>|              |              |              | available)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| first_time   | OT_REAL      | GenericType( | First        | CasADi::Idas |
+>|              |              | )            | requested    | Internal     |
+>|              |              |              | time as a    |              |
+>|              |              |              | fraction of  |              |
+>|              |              |              | the time     |              |
+>|              |              |              | interval     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_abstol | OT_REAL      | GenericType( | Absolute     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | abstol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_abstol | OT_REALVECTO |              |              | CasADi::Idas |
+>| v            | R            |              |              | Internal     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_err_co | OT_BOOLEAN   | true         | include the  | CasADi::Sund |
+>| n            |              |              | forward sens | ialsInternal |
+>|              |              |              | itivities in |              |
+>|              |              |              | all error    |              |
+>|              |              |              | controls     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_reltol | OT_REAL      | GenericType( | Relative     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | reltol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_scalin | OT_REALVECTO | GenericType( | Scaling      | CasADi::Sund |
+>| g_factors    | R            | )            | factor for   | ialsInternal |
+>|              |              |              | the          |              |
+>|              |              |              | components   |              |
+>|              |              |              | if finite    |              |
+>|              |              |              | differences  |              |
+>|              |              |              | is used      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_sensit | OT_INTEGERVE | GenericType( | Specifies    | CasADi::Sund |
+>| iviy_paramet | CTOR         | )            | which        | ialsInternal |
+>| ers          |              |              | components   |              |
+>|              |              |              | will be used |              |
+>|              |              |              | when         |              |
+>|              |              |              | estimating   |              |
+>|              |              |              | the          |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| init_xdot    | OT_REALVECTO | GenericType( | Initial      | CasADi::Idas |
+>|              | R            | )            | values for   | Internal     |
+>|              |              |              | the state    |              |
+>|              |              |              | derivatives  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| interpolatio | OT_STRING    | "hermite"    | Type of inte | CasADi::Sund |
+>| n_type       |              |              | rpolation    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint sens |              |
+>|              |              |              | itivities (h |              |
+>|              |              |              | ermite|polyn |              |
+>|              |              |              | omial)       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | "gmres"      | (gmres|bcgst | CasADi::Sund |
+>| lver         |              |              | ab|tfqmr)    | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | GenericType( | (gmres|bcgst | CasADi::Sund |
+>| lverB        |              | )            | ab|tfqmr)    | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | A custom     | CasADi::Sund |
+>| r            | VER          | )            | linear       | ialsInternal |
+>|              |              |              | solver       |              |
+>|              |              |              | creator      |              |
+>|              |              |              | function     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | A custom     | CasADi::Sund |
+>| rB           | VER          | )            | linear       | ialsInternal |
+>|              |              |              | solver       |              |
+>|              |              |              | creator      |              |
+>|              |              |              | function for |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to lin |              |
+>|              |              |              | ear_solver]  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Sund |
+>| r_options    | Y            | )            | be passed to | ialsInternal |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Sund |
+>| r_optionsB   | Y            | )            | be passed to | ialsInternal |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver for   |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to lin |              |
+>|              |              |              | ear_solver_o |              |
+>|              |              |              | ptions]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | "dense"      | (user_define | CasADi::Sund |
+>| r_type       |              |              | d|dense|band | ialsInternal |
+>|              |              |              | ed|iterative |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | GenericType( | (user_define | CasADi::Sund |
+>| r_typeB      |              | )            | d|dense|band | ialsInternal |
+>|              |              |              | ed|iterative |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   | GenericType( | Lower band-  | CasADi::Sund |
+>| dth          |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | Jacobian (es |              |
+>|              |              |              | timations)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   | GenericType( | lower band-  | CasADi::Sund |
+>| dthB         |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | jacobians    |              |
+>|              |              |              | for backward |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to low |              |
+>|              |              |              | er_bandwidth |              |
+>|              |              |              | ]            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylov   | OT_INTEGER   | 10           | Maximum      | CasADi::Sund |
+>|              |              |              | Krylov       | ialsInternal |
+>|              |              |              | subspace     |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylovB  | OT_INTEGER   | GenericType( | Maximum      | CasADi::Sund |
+>|              |              | )            | krylov       | ialsInternal |
+>|              |              |              | subspace     |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_multiste | OT_INTEGER   | 5            |              | CasADi::Sund |
+>| p_order      |              |              |              | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_num_step | OT_INTEGER   | 10000        | Maximum      | CasADi::Sund |
+>| s            |              |              | number of    | ialsInternal |
+>|              |              |              | integrator   |              |
+>|              |              |              | steps        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_step_siz | OT_REAL      | 0            | Maximim step | CasADi::Idas |
+>| e            |              |              | size         | Internal     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::Idas |
+>|              |              |              | uts)  (corre | Internal     |
+>|              |              |              | ctInitialCon |              |
+>|              |              |              | ditions|res| |              |
+>|              |              |              | resS|resB|rh |              |
+>|              |              |              | sQB|bjacB|jt |              |
+>|              |              |              | imesB|psetup |              |
+>|              |              |              | B|psolveB|ps |              |
+>|              |              |              | etup)        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretype      | OT_STRING    | "none"       | (none|left|r | CasADi::Sund |
+>|              |              |              | ight|both)   | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretypeB     | OT_STRING    | GenericType( | (none|left|r | CasADi::Sund |
+>|              |              | )            | ight|both)   | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quad_err_con | OT_BOOLEAN   | false        | Should the   | CasADi::Sund |
+>|              |              |              | quadratures  | ialsInternal |
+>|              |              |              | affect the   |              |
+>|              |              |              | step size    |              |
+>|              |              |              | control      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reltol       | OT_REAL      | 0.000        | Relative     | CasADi::Sund |
+>|              |              |              | tolerence    | ialsInternal |
+>|              |              |              | for the IVP  |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reltolB      | OT_REAL      | GenericType( | Relative     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | reltol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sensitivity_ | OT_STRING    | "simultaneou | (simultaneou | CasADi::Sund |
+>| method       |              | s"           | s|staggered) | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| steps_per_ch | OT_INTEGER   | 20           | Number of    | CasADi::Sund |
+>| eckpoint     |              |              | steps        | ialsInternal |
+>|              |              |              | between two  |              |
+>|              |              |              | consecutive  |              |
+>|              |              |              | checkpoints  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| stop_at_end  | OT_BOOLEAN   | true         | Stop the     | CasADi::Sund |
+>|              |              |              | integrator   | ialsInternal |
+>|              |              |              | at the end   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | interval     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| suppress_alg | OT_BOOLEAN   | false        | Supress      | CasADi::Idas |
+>| ebraic       |              |              | algebraic    | Internal     |
+>|              |              |              | variables in |              |
+>|              |              |              | the error    |              |
+>|              |              |              | testing      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   | GenericType( | Upper band-  | CasADi::Sund |
+>| dth          |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | Jacobian (es |              |
+>|              |              |              | timations)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   | GenericType( | Upper band-  | CasADi::Sund |
+>| dthB         |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | jacobians    |              |
+>|              |              |              | for backward |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to upp |              |
+>|              |              |              | er_bandwidth |              |
+>|              |              |              | ]            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | false        | Precondition | CasADi::Sund |
+>| tioner       |              |              | an iterative | ialsInternal |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | GenericType( | Precondition | CasADi::Sund |
+>| tionerB      |              | )            | an iterative | ialsInternal |
+>|              |              |              | solver for   |              |
+>|              |              |              | the          |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | problem      |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to use |              |
+>|              |              |              | _preconditio |              |
+>|              |              |              | ner]         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+--------------------------+--------------------------+
+>|            Id            |         Used in          |
+>+==========================+==========================+
+>| bjacB                    | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| correctInitialConditions | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| inputs                   | CasADi::FunctionInternal |
+>+--------------------------+--------------------------+
+>| jtimesB                  | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| outputs                  | CasADi::FunctionInternal |
+>+--------------------------+--------------------------+
+>| psetup                   | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| psetupB                  | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| psolveB                  | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| res                      | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| resB                     | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| resS                     | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>| rhsQB                    | CasADi::IdasInternal     |
+>+--------------------------+--------------------------+
+>
+>>List of available stats
+>+-------------+----------------------+
+>|     Id      |       Used in        |
+>+=============+======================+
+>| nlinsetups  | CasADi::IdasInternal |
+>+-------------+----------------------+
+>| nlinsetupsB | CasADi::IdasInternal |
+>+-------------+----------------------+
+>| nsteps      | CasADi::IdasInternal |
+>+-------------+----------------------+
+>| nstepsB     | CasADi::IdasInternal |
+>+-------------+----------------------+
+>
+>Diagrams
+>
+>C++ includes: idas_integrator.hpp 
+-}
+newtype IdasIntegrator = IdasIntegrator (ForeignPtr IdasIntegrator')
+-- typeclass decl
+class IdasIntegratorClass a where
+  castIdasIntegrator :: a -> IdasIntegrator
+instance IdasIntegratorClass IdasIntegrator where
+  castIdasIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass IdasIntegrator where
+  castSharedObject (IdasIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass IdasIntegrator where
+  castPrintableObject (IdasIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass IdasIntegrator where
+  castOptionsFunctionality (IdasIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass IdasIntegrator where
+  castFunction (IdasIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass IdasIntegrator where
+  castIntegrator (IdasIntegrator x) = Integrator (castForeignPtr x)
+
+instance SundialsIntegratorClass IdasIntegrator where
+  castSundialsIntegrator (IdasIntegrator x) = SundialsIntegrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass IdasIntegrator where
+  castIOInterfaceFunction (IdasIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal IdasIntegrator (Ptr IdasIntegrator') where
+  marshal (IdasIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (IdasIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__IdasIntegrator" 
+  c_delete_CasADi__IdasIntegrator :: FunPtr (Ptr IdasIntegrator' -> IO ())
+instance WrapReturn (Ptr IdasIntegrator') IdasIntegrator where
+  wrapReturn = (fmap IdasIntegrator) . (newForeignPtr c_delete_CasADi__IdasIntegrator)
+
+
+-- raw decl
+data ExpSXElement'
+-- data decl
+{-|
+>[INTERNAL]  Expression
+>interface.
+>
+>This is a common base class for SX, MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom. Joel Andersson
+>
+>C++ includes: generic_expression.hpp 
+-}
+newtype ExpSXElement = ExpSXElement (ForeignPtr ExpSXElement')
+-- typeclass decl
+class ExpSXElementClass a where
+  castExpSXElement :: a -> ExpSXElement
+instance ExpSXElementClass ExpSXElement where
+  castExpSXElement = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal ExpSXElement (Ptr ExpSXElement') where
+  marshal (ExpSXElement x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (ExpSXElement x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericExpression_CasADi__SXElement_" 
+  c_delete_CasADi__GenericExpression_CasADi__SXElement_ :: FunPtr (Ptr ExpSXElement' -> IO ())
+instance WrapReturn (Ptr ExpSXElement') ExpSXElement where
+  wrapReturn = (fmap ExpSXElement) . (newForeignPtr c_delete_CasADi__GenericExpression_CasADi__SXElement_)
+
+
+-- raw decl
+data NewtonImplicitSolver'
+-- data decl
+{-|
+>[INTERNAL]  Implements
+>simple newton iterations to solve an implicit function.
+>
+>The equation:
+>
+>F(z, x1, x2, ..., xn) == 0
+>
+>where d_F/dz is invertable, implicitly defines the equation:
+>
+>z := G(x1, x2, ..., xn)
+>
+>F should be an Function mapping from (n+1) inputs to m outputs. The first
+>output is the residual that should be zero.
+>
+>ImplicitFunction (G) is an Function mapping from n inputs to m outputs. n
+>may be zero. The first output is the solved for z.
+>
+>You can provide an initial guess for z by setting output(0) of
+>ImplicitFunction.
+>
+>Joris Gillis
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| abstol       | OT_REAL      | 0.000        | Stopping     | CasADi::Newt |
+>|              |              |              | criterion    | onImplicitIn |
+>|              |              |              | tolerance on | ternal       |
+>|              |              |              | max(|F|)     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| abstolStep   | OT_REAL      | 0.000        | Stopping     | CasADi::Newt |
+>|              |              |              | criterion    | onImplicitIn |
+>|              |              |              | tolerance on | ternal       |
+>|              |              |              | step size    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constraints  | OT_INTEGERVE | GenericType( | Constrain    | CasADi::Impl |
+>|              | CTOR         | )            | the          | icitFunction |
+>|              |              |              | unknowns. 0  | Internal     |
+>|              |              |              | (default):   |              |
+>|              |              |              | no           |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | on ui, 1: ui |              |
+>|              |              |              | >= 0.0, -1:  |              |
+>|              |              |              | ui <= 0.0,   |              |
+>|              |              |              | 2: ui > 0.0, |              |
+>|              |              |              | -2: ui <     |              |
+>|              |              |              | 0.0.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_inp | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| ut           |              |              | input that   | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_out | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| put          |              |              | output that  | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | User-defined | CasADi::Impl |
+>| r            | VER          | )            | linear       | icitFunction |
+>|              |              |              | solver       | Internal     |
+>|              |              |              | class.       |              |
+>|              |              |              | Needed for s |              |
+>|              |              |              | ensitivities |              |
+>|              |              |              | .            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Impl |
+>| r_options    | Y            | )            | be passed to | icitFunction |
+>|              |              |              | the linear   | Internal     |
+>|              |              |              | solver.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter     | OT_INTEGER   | 1000         | Maximum      | CasADi::Newt |
+>|              |              |              | number of    | onImplicitIn |
+>|              |              |              | Newton       | ternal       |
+>|              |              |              | iterations   |              |
+>|              |              |              | to perform   |              |
+>|              |              |              | before       |              |
+>|              |              |              | returning.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::Newt |
+>|              |              |              | uts)  (step| | onImplicitIn |
+>|              |              |              | stepsize|J|F | ternal       |
+>|              |              |              | |normF)      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+----------+--------------------------------+
+>|    Id    |            Used in             |
+>+==========+================================+
+>| F        | CasADi::NewtonImplicitInternal |
+>+----------+--------------------------------+
+>| J        | CasADi::NewtonImplicitInternal |
+>+----------+--------------------------------+
+>| inputs   | CasADi::FunctionInternal       |
+>+----------+--------------------------------+
+>| normF    | CasADi::NewtonImplicitInternal |
+>+----------+--------------------------------+
+>| outputs  | CasADi::FunctionInternal       |
+>+----------+--------------------------------+
+>| step     | CasADi::NewtonImplicitInternal |
+>+----------+--------------------------------+
+>| stepsize | CasADi::NewtonImplicitInternal |
+>+----------+--------------------------------+
+>
+>>List of available stats
+>+---------------+--------------------------------+
+>|      Id       |            Used in             |
+>+===============+================================+
+>| iter          | CasADi::NewtonImplicitInternal |
+>+---------------+--------------------------------+
+>| return_status | CasADi::NewtonImplicitInternal |
+>+---------------+--------------------------------+
+>
+>Diagrams
+>
+>C++ includes: newton_implicit_solver.hpp 
+-}
+newtype NewtonImplicitSolver = NewtonImplicitSolver (ForeignPtr NewtonImplicitSolver')
+-- typeclass decl
+class NewtonImplicitSolverClass a where
+  castNewtonImplicitSolver :: a -> NewtonImplicitSolver
+instance NewtonImplicitSolverClass NewtonImplicitSolver where
+  castNewtonImplicitSolver = id
+
+-- baseclass instances
+instance SharedObjectClass NewtonImplicitSolver where
+  castSharedObject (NewtonImplicitSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass NewtonImplicitSolver where
+  castPrintableObject (NewtonImplicitSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass NewtonImplicitSolver where
+  castOptionsFunctionality (NewtonImplicitSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass NewtonImplicitSolver where
+  castFunction (NewtonImplicitSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass NewtonImplicitSolver where
+  castIOInterfaceFunction (NewtonImplicitSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+instance ImplicitFunctionClass NewtonImplicitSolver where
+  castImplicitFunction (NewtonImplicitSolver x) = ImplicitFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal NewtonImplicitSolver (Ptr NewtonImplicitSolver') where
+  marshal (NewtonImplicitSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (NewtonImplicitSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__NewtonImplicitSolver" 
+  c_delete_CasADi__NewtonImplicitSolver :: FunPtr (Ptr NewtonImplicitSolver' -> IO ())
+instance WrapReturn (Ptr NewtonImplicitSolver') NewtonImplicitSolver where
+  wrapReturn = (fmap NewtonImplicitSolver) . (newForeignPtr c_delete_CasADi__NewtonImplicitSolver)
+
+
+-- raw decl
+data KinsolSolver'
+-- data decl
+{-|
+>[INTERNAL]  Kinsol solver
+>class.
+>
+>The equation:
+>
+>F(z, x1, x2, ..., xn) == 0
+>
+>where d_F/dz is invertable, implicitly defines the equation:
+>
+>z := G(x1, x2, ..., xn)
+>
+>F should be an Function mapping from (n+1) inputs to m outputs. The first
+>output is the residual that should be zero.
+>
+>ImplicitFunction (G) is an Function mapping from n inputs to m outputs. n
+>may be zero. The first output is the solved for z.
+>
+>You can provide an initial guess for z by setting output(0) of
+>ImplicitFunction. You can provide an initial guess by setting output(0).  A
+>good initial guess may be needed to avoid errors like "The linear solver's
+>setup function failed in an unrecoverable manner."
+>
+>The constraints option expects an integer entry for each variable u:  0 then
+>no constraint is imposed on ui. 1 then ui will be constrained to be ui >=
+>0.0. 1 then ui will be constrained to be ui <= 0.0. 2 then ui will be
+>constrained to be ui > 0.0. 2 then ui will be constrained to be ui < 0.0.
+>
+>See:   ImplicitFunction for more information
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| abstol       | OT_REAL      | 0.000        | Stopping     | CasADi::Kins |
+>|              |              |              | criterion    | olInternal   |
+>|              |              |              | tolerance    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constraints  | OT_INTEGERVE | GenericType( | Constrain    | CasADi::Impl |
+>|              | CTOR         | )            | the          | icitFunction |
+>|              |              |              | unknowns. 0  | Internal     |
+>|              |              |              | (default):   |              |
+>|              |              |              | no           |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | on ui, 1: ui |              |
+>|              |              |              | >= 0.0, -1:  |              |
+>|              |              |              | ui <= 0.0,   |              |
+>|              |              |              | 2: ui > 0.0, |              |
+>|              |              |              | -2: ui <     |              |
+>|              |              |              | 0.0.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| disable_inte | OT_BOOLEAN   | false        | Disable      | CasADi::Kins |
+>| rnal_warning |              |              | KINSOL       | olInternal   |
+>| s            |              |              | internal     |              |
+>|              |              |              | warning      |              |
+>|              |              |              | messages     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | true         |              | CasADi::Kins |
+>| an           |              |              |              | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| f_scale      | OT_REALVECTO |              |              | CasADi::Kins |
+>|              | R            |              |              | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_inp | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| ut           |              |              | input that   | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_out | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| put          |              |              | output that  | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | "gmres"      | gmres|bcgsta | CasADi::Kins |
+>| lver         |              |              | b|tfqmr      | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | User-defined | CasADi::Impl |
+>| r            | VER          | )            | linear       | icitFunction |
+>|              |              |              | solver       | Internal     |
+>|              |              |              | class.       |              |
+>|              |              |              | Needed for s |              |
+>|              |              |              | ensitivities |              |
+>|              |              |              | .            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Impl |
+>| r_options    | Y            | )            | be passed to | icitFunction |
+>|              |              |              | the linear   | Internal     |
+>|              |              |              | solver.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | "dense"      | dense|banded | CasADi::Kins |
+>| r_type       |              |              | |iterative|u | olInternal   |
+>|              |              |              | ser_defined  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   |              |              | CasADi::Kins |
+>| dth          |              |              |              | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter     | OT_INTEGER   | 0            | Maximum      | CasADi::Kins |
+>|              |              |              | number of    | olInternal   |
+>|              |              |              | Newton       |              |
+>|              |              |              | iterations.  |              |
+>|              |              |              | Putting 0    |              |
+>|              |              |              | sets the     |              |
+>|              |              |              | default      |              |
+>|              |              |              | value of     |              |
+>|              |              |              | KinSol.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylov   | OT_INTEGER   | 0            |              | CasADi::Kins |
+>|              |              |              |              | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::Kins |
+>|              |              |              | uts)  (eval_ | olInternal   |
+>|              |              |              | f|eval_djac) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretype      | OT_STRING    | "none"       | (none|left|r | CasADi::Kins |
+>|              |              |              | ight|both)   | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| strategy     | OT_STRING    | "none"       | Globalizatio | CasADi::Kins |
+>|              |              |              | n strategy ( | olInternal   |
+>|              |              |              | none|linesea |              |
+>|              |              |              | rch)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| u_scale      | OT_REALVECTO |              |              | CasADi::Kins |
+>|              | R            |              |              | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   |              |              | CasADi::Kins |
+>| dth          |              |              |              | olInternal   |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | false        | precondition | CasADi::Kins |
+>| tioner       |              |              | an iterative | olInternal   |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+-----------+--------------------------+
+>|    Id     |         Used in          |
+>+===========+==========================+
+>| eval_djac | CasADi::KinsolInternal   |
+>+-----------+--------------------------+
+>| eval_f    | CasADi::KinsolInternal   |
+>+-----------+--------------------------+
+>| inputs    | CasADi::FunctionInternal |
+>+-----------+--------------------------+
+>| outputs   | CasADi::FunctionInternal |
+>+-----------+--------------------------+
+>
+>Diagrams
+>
+>C++ includes: kinsol_solver.hpp 
+-}
+newtype KinsolSolver = KinsolSolver (ForeignPtr KinsolSolver')
+-- typeclass decl
+class KinsolSolverClass a where
+  castKinsolSolver :: a -> KinsolSolver
+instance KinsolSolverClass KinsolSolver where
+  castKinsolSolver = id
+
+-- baseclass instances
+instance SharedObjectClass KinsolSolver where
+  castSharedObject (KinsolSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass KinsolSolver where
+  castPrintableObject (KinsolSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass KinsolSolver where
+  castOptionsFunctionality (KinsolSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass KinsolSolver where
+  castFunction (KinsolSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass KinsolSolver where
+  castIOInterfaceFunction (KinsolSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+instance ImplicitFunctionClass KinsolSolver where
+  castImplicitFunction (KinsolSolver x) = ImplicitFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal KinsolSolver (Ptr KinsolSolver') where
+  marshal (KinsolSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (KinsolSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__KinsolSolver" 
+  c_delete_CasADi__KinsolSolver :: FunPtr (Ptr KinsolSolver' -> IO ())
+instance WrapReturn (Ptr KinsolSolver') KinsolSolver where
+  wrapReturn = (fmap KinsolSolver) . (newForeignPtr c_delete_CasADi__KinsolSolver)
+
+
+-- raw decl
+data QPStructure'
+-- data decl
+{-|
+>[INTERNAL]  Helper
+>function for 'QPStruct'
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype QPStructure = QPStructure (ForeignPtr QPStructure')
+-- typeclass decl
+class QPStructureClass a where
+  castQPStructure :: a -> QPStructure
+instance QPStructureClass QPStructure where
+  castQPStructure = id
+
+-- baseclass instances
+instance PrintableObjectClass QPStructure where
+  castPrintableObject (QPStructure x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal QPStructure (Ptr QPStructure') where
+  marshal (QPStructure x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (QPStructure x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__QPStructIOSchemeVector_CasADi__Sparsity_" 
+  c_delete_CasADi__QPStructIOSchemeVector_CasADi__Sparsity_ :: FunPtr (Ptr QPStructure' -> IO ())
+instance WrapReturn (Ptr QPStructure') QPStructure where
+  wrapReturn = (fmap QPStructure) . (newForeignPtr c_delete_CasADi__QPStructIOSchemeVector_CasADi__Sparsity_)
+
+
+-- raw decl
+data CasadiMeta'
+-- data decl
+{-|
+>[INTERNAL]  Collects global
+>CasADi meta information.
+>
+>Joris Gillis
+>
+>C++ includes: casadi_meta.hpp 
+-}
+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 SymbolicQR'
+-- data decl
+{-|
+>[INTERNAL]   LinearSolver based
+>on QR factorization with sparsity pattern based reordering without partial
+>pivoting.
+>
+>Solves the linear system A*X = B or A^T*X = B for X with A square and non-
+>singular
+>
+>If A is structurally singular, an error will be thrown during init. If A is
+>numerically singular, the prepare step will fail. Joel Andersson
+>
+>>Input scheme: CasADi::LinsolInput (LINSOL_NUM_IN = 3) [linsolIn]
+>+-----------+-------+------------------------------------------------+
+>| Full name | Short |                  Description                   |
+>+===========+=======+================================================+
+>| LINSOL_A  | A     | The square matrix A: sparse, (n x n). .        |
+>+-----------+-------+------------------------------------------------+
+>| LINSOL_B  | B     | The right-hand-side matrix b: dense, (n x m) . |
+>+-----------+-------+------------------------------------------------+
+>
+>>Output scheme: CasADi::LinsolOutput (LINSOL_NUM_OUT = 2) [linsolOut]
+>+-----------+-------+----------------------------------------------+
+>| Full name | Short |                 Description                  |
+>+===========+=======+==============================================+
+>| LINSOL_X  | X     | Solution to the linear system of equations . |
+>+-----------+-------+----------------------------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| codegen      | OT_BOOLEAN   | false        | C-code       | CasADi::Symb |
+>|              |              |              | generation   | olicQRIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| compiler     | OT_STRING    | "gcc -fPIC   | Compiler     | CasADi::Symb |
+>|              |              | -O2"         | command to   | olicQRIntern |
+>|              |              |              | be used for  | al           |
+>|              |              |              | compiling    |              |
+>|              |              |              | generated    |              |
+>|              |              |              | code         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: symbolic_qr.hpp 
+-}
+newtype SymbolicQR = SymbolicQR (ForeignPtr SymbolicQR')
+-- typeclass decl
+class SymbolicQRClass a where
+  castSymbolicQR :: a -> SymbolicQR
+instance SymbolicQRClass SymbolicQR where
+  castSymbolicQR = id
+
+-- baseclass instances
+instance SharedObjectClass SymbolicQR where
+  castSharedObject (SymbolicQR x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SymbolicQR where
+  castPrintableObject (SymbolicQR x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SymbolicQR where
+  castOptionsFunctionality (SymbolicQR x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SymbolicQR where
+  castFunction (SymbolicQR x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass SymbolicQR where
+  castIOInterfaceFunction (SymbolicQR x) = IOInterfaceFunction (castForeignPtr x)
+
+instance LinearSolverClass SymbolicQR where
+  castLinearSolver (SymbolicQR x) = LinearSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SymbolicQR (Ptr SymbolicQR') where
+  marshal (SymbolicQR x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SymbolicQR x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SymbolicQR" 
+  c_delete_CasADi__SymbolicQR :: FunPtr (Ptr SymbolicQR' -> IO ())
+instance WrapReturn (Ptr SymbolicQR') SymbolicQR where
+  wrapReturn = (fmap SymbolicQR) . (newForeignPtr c_delete_CasADi__SymbolicQR)
+
+
+-- raw decl
+data DirectSingleShooting'
+-- data decl
+{-|
+>[INTERNAL]  Direct
+>Single Shooting.
+>
+>ns: Number of shooting nodes: from option number_of_grid_points  nx: Number
+>of differential states: from ffcn.input(INTEGRATOR_X0).size()  nc: Number of
+>constants during intergation: ffcn.input(INTEGRATOR_P).size() nu: Number of
+>controls: from nc - np  np: Number of parameters: from option
+>number_of_parameters  nh: Number of point constraints: from
+>cfcn.input(0).size()
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::OCPInput (OCP_NUM_IN = 14) [ocpIn]
+>+------------+--------+----------------------------------------------+
+>| Full name  | Short  |                 Description                  |
+>+============+========+==============================================+
+>| OCP_LBX    | lbx    | States lower bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBX    | ubx    | States upper bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_X_INIT | x_init | States initial guess (nx x (ns+1)) .         |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBU    | lbu    | Controls lower bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBU    | ubu    | Controls upper bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_U_INIT | u_init | Controls initial guess (nu x ns) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBP    | lbp    | Parameters lower bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBP    | ubp    | Parameters upper bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_P_INIT | p_init | Parameters initial guess (np x 1) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBH    | lbh    | Point constraint lower bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBH    | ubh    | Point constraint upper bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBG    | lbg    | Lower bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBG    | ubg    | Upper bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>
+>>Output scheme: CasADi::OCPOutput (OCP_NUM_OUT = 5) [ocpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| OCP_X_OPT              | x_opt                  | Optimal state          |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_U_OPT              | u_opt                  | Optimal control        |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_P_OPT              | p_opt                  | Optimal parameters .   |
+>+------------------------+------------------------+------------------------+
+>| OCP_COST               | cost                   | Objective/cost         |
+>|                        |                        | function for optimal   |
+>|                        |                        | solution (1 x 1) .     |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| final_time   | OT_REAL      | 1            |              | CasADi::OCPS |
+>|              |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| integrator   | OT_INTEGRATO | GenericType( | An           | CasADi::Dire |
+>|              | R            | )            | integrator   | ctSingleShoo |
+>|              |              |              | creator      | tingInternal |
+>|              |              |              | function     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| integrator_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Dire |
+>| ptions       | Y            | )            | be passed to | ctSingleShoo |
+>|              |              |              | the          | tingInternal |
+>|              |              |              | integrator   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver   | OT_NLPSOLVER | GenericType( | An NLPSolver | CasADi::Dire |
+>|              |              | )            | creator      | ctSingleShoo |
+>|              |              |              | function     | tingInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Dire |
+>| ptions       | Y            | )            | be passed to | ctSingleShoo |
+>|              |              |              | the NLP      | tingInternal |
+>|              |              |              | Solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_gr | OT_INTEGER   | 20           |              | CasADi::OCPS |
+>| id_points    |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_pa | OT_INTEGER   | 0            |              | CasADi::OCPS |
+>| rameters     |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parallelizat | OT_STRING    | GenericType( | Passed on to | CasADi::Dire |
+>| ion          |              | )            | CasADi::Para | ctSingleShoo |
+>|              |              |              | llelizer     | tingInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: direct_single_shooting.hpp 
+-}
+newtype DirectSingleShooting = DirectSingleShooting (ForeignPtr DirectSingleShooting')
+-- typeclass decl
+class DirectSingleShootingClass a where
+  castDirectSingleShooting :: a -> DirectSingleShooting
+instance DirectSingleShootingClass DirectSingleShooting where
+  castDirectSingleShooting = id
+
+-- baseclass instances
+instance SharedObjectClass DirectSingleShooting where
+  castSharedObject (DirectSingleShooting x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass DirectSingleShooting where
+  castPrintableObject (DirectSingleShooting x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass DirectSingleShooting where
+  castOptionsFunctionality (DirectSingleShooting x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass DirectSingleShooting where
+  castFunction (DirectSingleShooting x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass DirectSingleShooting where
+  castIOInterfaceFunction (DirectSingleShooting x) = IOInterfaceFunction (castForeignPtr x)
+
+instance OCPSolverClass DirectSingleShooting where
+  castOCPSolver (DirectSingleShooting x) = OCPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal DirectSingleShooting (Ptr DirectSingleShooting') where
+  marshal (DirectSingleShooting x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (DirectSingleShooting x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__DirectSingleShooting" 
+  c_delete_CasADi__DirectSingleShooting :: FunPtr (Ptr DirectSingleShooting' -> IO ())
+instance WrapReturn (Ptr DirectSingleShooting') DirectSingleShooting where
+  wrapReturn = (fmap DirectSingleShooting) . (newForeignPtr c_delete_CasADi__DirectSingleShooting)
+
+
+-- raw decl
+data SX'
+-- data decl
+{-|
+>[INTERNAL]  Sparse matrix class. SX
+>and DMatrix are specializations.
+>
+>General sparse matrix class that is designed with the idea that "everything
+>is a matrix", that is, also scalars and vectors. This philosophy makes it
+>easy to use and to interface in particularily with Python and Matlab/Octave.
+>Index starts with 0. Index vec happens as follows: (rr,cc) -> k =
+>rr+cc*size1() Vectors are column vectors.  The storage format is Compressed
+>Column Storage (CCS), similar to that used for sparse matrices in Matlab,
+>but unlike this format, we do allow for elements to be structurally non-zero
+>but numerically zero. Matrix<DataType> is polymorphic with a
+>std::vector<DataType> that contain all non- identical-zero elements. The
+>sparsity can be accessed with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype SX = SX (ForeignPtr SX')
+-- typeclass decl
+class SXClass a where
+  castSX :: a -> SX
+instance SXClass SX where
+  castSX = id
+
+-- baseclass instances
+instance PrintableObjectClass SX where
+  castPrintableObject (SX x) = PrintableObject (castForeignPtr x)
+
+instance GenSXClass SX where
+  castGenSX (SX x) = GenSX (castForeignPtr x)
+
+instance ExpSXClass SX where
+  castExpSX (SX x) = ExpSX (castForeignPtr x)
+
+
+-- 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__Matrix_CasADi__SXElement_" 
+  c_delete_CasADi__Matrix_CasADi__SXElement_ :: FunPtr (Ptr SX' -> IO ())
+instance WrapReturn (Ptr SX') SX where
+  wrapReturn = (fmap SX) . (newForeignPtr c_delete_CasADi__Matrix_CasADi__SXElement_)
+
+
+-- raw decl
+data DirectMultipleShooting'
+-- data decl
+{-|
+>[INTERNAL]  Direct
+>Multiple Shooting.
+>
+>ns: Number of shooting nodes: from option number_of_grid_points  nx: Number
+>of differential states: from ffcn.input(INTEGRATOR_X0).size()  nc: Number of
+>constants during intergation: ffcn.input(INTEGRATOR_P).size() nu: Number of
+>controls: from nc - np  np: Number of parameters: from option
+>number_of_parameters  nh: Number of point constraints: from
+>cfcn.input(0).size()
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::OCPInput (OCP_NUM_IN = 14) [ocpIn]
+>+------------+--------+----------------------------------------------+
+>| Full name  | Short  |                 Description                  |
+>+============+========+==============================================+
+>| OCP_LBX    | lbx    | States lower bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBX    | ubx    | States upper bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_X_INIT | x_init | States initial guess (nx x (ns+1)) .         |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBU    | lbu    | Controls lower bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBU    | ubu    | Controls upper bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_U_INIT | u_init | Controls initial guess (nu x ns) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBP    | lbp    | Parameters lower bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBP    | ubp    | Parameters upper bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_P_INIT | p_init | Parameters initial guess (np x 1) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBH    | lbh    | Point constraint lower bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBH    | ubh    | Point constraint upper bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBG    | lbg    | Lower bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBG    | ubg    | Upper bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>
+>>Output scheme: CasADi::OCPOutput (OCP_NUM_OUT = 5) [ocpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| OCP_X_OPT              | x_opt                  | Optimal state          |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_U_OPT              | u_opt                  | Optimal control        |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_P_OPT              | p_opt                  | Optimal parameters .   |
+>+------------------------+------------------------+------------------------+
+>| OCP_COST               | cost                   | Objective/cost         |
+>|                        |                        | function for optimal   |
+>|                        |                        | solution (1 x 1) .     |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| final_time   | OT_REAL      | 1            |              | CasADi::OCPS |
+>|              |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| integrator   | OT_INTEGRATO | GenericType( | An           | CasADi::Dire |
+>|              | R            | )            | integrator   | ctMultipleSh |
+>|              |              |              | creator      | ootingIntern |
+>|              |              |              | function     | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| integrator_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Dire |
+>| ptions       | Y            | )            | be passed to | ctMultipleSh |
+>|              |              |              | the          | ootingIntern |
+>|              |              |              | integrator   | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver   | OT_NLPSOLVER | GenericType( | An NLPSolver | CasADi::Dire |
+>|              |              | )            | creator      | ctMultipleSh |
+>|              |              |              | function     | ootingIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nlp_solver_o | OT_DICTIONAR | GenericType( | Options to   | CasADi::Dire |
+>| ptions       | Y            | )            | be passed to | ctMultipleSh |
+>|              |              |              | the NLP      | ootingIntern |
+>|              |              |              | Solver       | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_gr | OT_INTEGER   | 20           |              | CasADi::OCPS |
+>| id_points    |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_pa | OT_INTEGER   | 0            |              | CasADi::OCPS |
+>| rameters     |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parallelizat | OT_STRING    | GenericType( | Passed on to | CasADi::Dire |
+>| ion          |              | )            | CasADi::Para | ctMultipleSh |
+>|              |              |              | llelizer     | ootingIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: direct_multiple_shooting.hpp 
+-}
+newtype DirectMultipleShooting = DirectMultipleShooting (ForeignPtr DirectMultipleShooting')
+-- typeclass decl
+class DirectMultipleShootingClass a where
+  castDirectMultipleShooting :: a -> DirectMultipleShooting
+instance DirectMultipleShootingClass DirectMultipleShooting where
+  castDirectMultipleShooting = id
+
+-- baseclass instances
+instance SharedObjectClass DirectMultipleShooting where
+  castSharedObject (DirectMultipleShooting x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass DirectMultipleShooting where
+  castPrintableObject (DirectMultipleShooting x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass DirectMultipleShooting where
+  castOptionsFunctionality (DirectMultipleShooting x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass DirectMultipleShooting where
+  castFunction (DirectMultipleShooting x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass DirectMultipleShooting where
+  castIOInterfaceFunction (DirectMultipleShooting x) = IOInterfaceFunction (castForeignPtr x)
+
+instance OCPSolverClass DirectMultipleShooting where
+  castOCPSolver (DirectMultipleShooting x) = OCPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal DirectMultipleShooting (Ptr DirectMultipleShooting') where
+  marshal (DirectMultipleShooting x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (DirectMultipleShooting x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__DirectMultipleShooting" 
+  c_delete_CasADi__DirectMultipleShooting :: FunPtr (Ptr DirectMultipleShooting' -> IO ())
+instance WrapReturn (Ptr DirectMultipleShooting') DirectMultipleShooting where
+  wrapReturn = (fmap DirectMultipleShooting) . (newForeignPtr c_delete_CasADi__DirectMultipleShooting)
+
+
+-- raw decl
+data IOInterfaceFunction'
+-- data decl
+{-|
+>[INTERNAL]  Interface for
+>accessing input and output data structures.
+>
+>Joel Andersson
+>
+>C++ includes: io_interface.hpp 
+-}
+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_)
+
+
+-- raw decl
+data SDQPStructure'
+-- data decl
+{-|
+>[INTERNAL]  Helper
+>function for 'SDQPStruct'
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype SDQPStructure = SDQPStructure (ForeignPtr SDQPStructure')
+-- typeclass decl
+class SDQPStructureClass a where
+  castSDQPStructure :: a -> SDQPStructure
+instance SDQPStructureClass SDQPStructure where
+  castSDQPStructure = id
+
+-- baseclass instances
+instance PrintableObjectClass SDQPStructure where
+  castPrintableObject (SDQPStructure x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SDQPStructure (Ptr SDQPStructure') where
+  marshal (SDQPStructure x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SDQPStructure x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SDQPStructIOSchemeVector_CasADi__Sparsity_" 
+  c_delete_CasADi__SDQPStructIOSchemeVector_CasADi__Sparsity_ :: FunPtr (Ptr SDQPStructure' -> IO ())
+instance WrapReturn (Ptr SDQPStructure') SDQPStructure where
+  wrapReturn = (fmap SDQPStructure) . (newForeignPtr c_delete_CasADi__SDQPStructIOSchemeVector_CasADi__Sparsity_)
+
+
+-- raw decl
+data SDPStructure'
+-- data decl
+{-|
+>[INTERNAL]  Helper
+>function for 'SDPStruct'
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype SDPStructure = SDPStructure (ForeignPtr SDPStructure')
+-- typeclass decl
+class SDPStructureClass a where
+  castSDPStructure :: a -> SDPStructure
+instance SDPStructureClass SDPStructure where
+  castSDPStructure = id
+
+-- baseclass instances
+instance PrintableObjectClass SDPStructure where
+  castPrintableObject (SDPStructure x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SDPStructure (Ptr SDPStructure') where
+  marshal (SDPStructure x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SDPStructure x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SDPStructIOSchemeVector_CasADi__Sparsity_" 
+  c_delete_CasADi__SDPStructIOSchemeVector_CasADi__Sparsity_ :: FunPtr (Ptr SDPStructure' -> IO ())
+instance WrapReturn (Ptr SDPStructure') SDPStructure where
+  wrapReturn = (fmap SDPStructure) . (newForeignPtr c_delete_CasADi__SDPStructIOSchemeVector_CasADi__Sparsity_)
+
+
+-- raw decl
+data GenDMatrix'
+-- data decl
+{-|
+>[INTERNAL]   Matrix base
+>class.
+>
+>This is a common base class for MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom.  The class is designed with the idea that
+>"everything is a matrix", that is, also scalars and vectors. This
+>philosophy makes it easy to use and to interface in particularily with
+>Python and Matlab/Octave.  The syntax tries to stay as close as possible to
+>the ublas syntax when it comes to vector/matrix operations.  Index starts
+>with 0. Index vec happens as follows: (rr,cc) -> k = rr+cc*size1() Vectors
+>are column vectors.  The storage format is Compressed Column Storage (CCS),
+>similar to that used for sparse matrices in Matlab, but unlike this format,
+>we do allow for elements to be structurally non-zero but numerically zero.
+>The sparsity pattern, which is reference counted and cached, can be accessed
+>with Sparsity& sparsity() Joel Andersson
+>
+>C++ includes: generic_matrix.hpp 
+-}
+newtype GenDMatrix = GenDMatrix (ForeignPtr GenDMatrix')
+-- typeclass decl
+class GenDMatrixClass a where
+  castGenDMatrix :: a -> GenDMatrix
+instance GenDMatrixClass GenDMatrix where
+  castGenDMatrix = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal GenDMatrix (Ptr GenDMatrix') where
+  marshal (GenDMatrix x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (GenDMatrix x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericMatrix_CasADi__Matrix_double__" 
+  c_delete_CasADi__GenericMatrix_CasADi__Matrix_double__ :: FunPtr (Ptr GenDMatrix' -> IO ())
+instance WrapReturn (Ptr GenDMatrix') GenDMatrix where
+  wrapReturn = (fmap GenDMatrix) . (newForeignPtr c_delete_CasADi__GenericMatrix_CasADi__Matrix_double__)
+
+
+-- raw decl
+data ExpIMatrix'
+-- data decl
+{-|
+>[INTERNAL]  Expression
+>interface.
+>
+>This is a common base class for SX, MX and Matrix<>, introducing a uniform
+>syntax and implementing common functionality using the curiously recurring
+>template pattern (CRTP) idiom. Joel Andersson
+>
+>C++ includes: generic_expression.hpp 
+-}
+newtype ExpIMatrix = ExpIMatrix (ForeignPtr ExpIMatrix')
+-- typeclass decl
+class ExpIMatrixClass a where
+  castExpIMatrix :: a -> ExpIMatrix
+instance ExpIMatrixClass ExpIMatrix where
+  castExpIMatrix = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal ExpIMatrix (Ptr ExpIMatrix') where
+  marshal (ExpIMatrix x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (ExpIMatrix x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__GenericExpression_CasADi__Matrix_int__" 
+  c_delete_CasADi__GenericExpression_CasADi__Matrix_int__ :: FunPtr (Ptr ExpIMatrix' -> IO ())
+instance WrapReturn (Ptr ExpIMatrix') ExpIMatrix where
+  wrapReturn = (fmap ExpIMatrix) . (newForeignPtr c_delete_CasADi__GenericExpression_CasADi__Matrix_int__)
+
+
+-- raw decl
+data CustomFunction'
+-- data decl
+{-|
+>[INTERNAL]  Interface to a
+>custom function.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: custom_function.hpp 
+-}
+newtype CustomFunction = CustomFunction (ForeignPtr CustomFunction')
+-- typeclass decl
+class CustomFunctionClass a where
+  castCustomFunction :: a -> CustomFunction
+instance CustomFunctionClass CustomFunction where
+  castCustomFunction = id
+
+-- baseclass instances
+instance SharedObjectClass CustomFunction where
+  castSharedObject (CustomFunction x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass CustomFunction where
+  castPrintableObject (CustomFunction x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass CustomFunction where
+  castOptionsFunctionality (CustomFunction x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass CustomFunction where
+  castFunction (CustomFunction x) = Function (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 LPSolver'
+-- data decl
+{-|
+>[INTERNAL]   LPSolver.
+>
+>Solves the following linear problem:
+>
+>min          c' x   x  subject to             LBA <= A x <= UBA LBX <= x
+><= UBX                  with x ( n x 1)          c ( n x 1 )          A
+>sparse matrix ( nc x n)          LBA, UBA dense vector (nc x 1)
+>LBX, UBX dense vector (n x 1)                  n: number of decision
+>variables (x)     nc: number of constraints (A)
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::LPSolverInput (LP_SOLVER_NUM_IN = 7) [lpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| LP_SOLVER_C            | c                      | The vector c: dense (n |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_A            | a                      | The matrix A: sparse,  |
+>|                        |                        | (nc x n) - product     |
+>|                        |                        | with x must be dense.  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LBA          | lba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_UBA          | uba                    | dense, (nc x 1)        |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LBX          | lbx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_UBX          | ubx                    | dense, (n x 1)         |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::LPSolverOutput (LP_SOLVER_NUM_OUT = 5) [lpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| LP_SOLVER_X            | x                      | The primal solution .  |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_COST         | cost                   | The optimal cost .     |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LAM_A        | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | linear bounds .        |
+>+------------------------+------------------------+------------------------+
+>| LP_SOLVER_LAM_X        | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds .        |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: lp_solver.hpp 
+-}
+newtype LPSolver = LPSolver (ForeignPtr LPSolver')
+-- typeclass decl
+class LPSolverClass a where
+  castLPSolver :: a -> LPSolver
+instance LPSolverClass LPSolver where
+  castLPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass LPSolver where
+  castSharedObject (LPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass LPSolver where
+  castPrintableObject (LPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass LPSolver where
+  castOptionsFunctionality (LPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass LPSolver where
+  castFunction (LPSolver x) = Function (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 OCPSolver'
+-- data decl
+{-|
+>[INTERNAL]  Base class for OCP
+>solvers.
+>
+>Joel Andersson
+>
+>>Input scheme: CasADi::OCPInput (OCP_NUM_IN = 14) [ocpIn]
+>+------------+--------+----------------------------------------------+
+>| Full name  | Short  |                 Description                  |
+>+============+========+==============================================+
+>| OCP_LBX    | lbx    | States lower bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBX    | ubx    | States upper bounds (nx x (ns+1)) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_X_INIT | x_init | States initial guess (nx x (ns+1)) .         |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBU    | lbu    | Controls lower bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBU    | ubu    | Controls upper bounds (nu x ns) .            |
+>+------------+--------+----------------------------------------------+
+>| OCP_U_INIT | u_init | Controls initial guess (nu x ns) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBP    | lbp    | Parameters lower bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBP    | ubp    | Parameters upper bounds (np x 1) .           |
+>+------------+--------+----------------------------------------------+
+>| OCP_P_INIT | p_init | Parameters initial guess (np x 1) .          |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBH    | lbh    | Point constraint lower bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBH    | ubh    | Point constraint upper bound (nh x (ns+1)) . |
+>+------------+--------+----------------------------------------------+
+>| OCP_LBG    | lbg    | Lower bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>| OCP_UBG    | ubg    | Upper bound for the coupling constraints .   |
+>+------------+--------+----------------------------------------------+
+>
+>>Output scheme: CasADi::OCPOutput (OCP_NUM_OUT = 5) [ocpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| OCP_X_OPT              | x_opt                  | Optimal state          |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_U_OPT              | u_opt                  | Optimal control        |
+>|                        |                        | trajectory .           |
+>+------------------------+------------------------+------------------------+
+>| OCP_P_OPT              | p_opt                  | Optimal parameters .   |
+>+------------------------+------------------------+------------------------+
+>| OCP_COST               | cost                   | Objective/cost         |
+>|                        |                        | function for optimal   |
+>|                        |                        | solution (1 x 1) .     |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| final_time   | OT_REAL      | 1            |              | CasADi::OCPS |
+>|              |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_gr | OT_INTEGER   | 20           |              | CasADi::OCPS |
+>| id_points    |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| number_of_pa | OT_INTEGER   | 0            |              | CasADi::OCPS |
+>| rameters     |              |              |              | olverInterna |
+>|              |              |              |              | l            |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: ocp_solver.hpp 
+-}
+newtype OCPSolver = OCPSolver (ForeignPtr OCPSolver')
+-- typeclass decl
+class OCPSolverClass a where
+  castOCPSolver :: a -> OCPSolver
+instance OCPSolverClass OCPSolver where
+  castOCPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass OCPSolver where
+  castSharedObject (OCPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass OCPSolver where
+  castPrintableObject (OCPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass OCPSolver where
+  castOptionsFunctionality (OCPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass OCPSolver where
+  castFunction (OCPSolver x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass OCPSolver where
+  castIOInterfaceFunction (OCPSolver x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal OCPSolver (Ptr OCPSolver') where
+  marshal (OCPSolver x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (OCPSolver x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__OCPSolver" 
+  c_delete_CasADi__OCPSolver :: FunPtr (Ptr OCPSolver' -> IO ())
+instance WrapReturn (Ptr OCPSolver') OCPSolver where
+  wrapReturn = (fmap OCPSolver) . (newForeignPtr c_delete_CasADi__OCPSolver)
+
+
+-- raw decl
+data LinearSolver'
+-- data decl
+{-|
+>[INTERNAL]  Base class for the
+>linear solver classes.
+>
+>Solves the linear system A*X = B or A^T*X = B for X with A square and non-
+>singular
+>
+>If A is structurally singular, an error will be thrown during init. If A is
+>numerically singular, the prepare step will fail. Joel Andersson
+>
+>>Input scheme: CasADi::LinsolInput (LINSOL_NUM_IN = 3) [linsolIn]
+>+-----------+-------+------------------------------------------------+
+>| Full name | Short |                  Description                   |
+>+===========+=======+================================================+
+>| LINSOL_A  | A     | The square matrix A: sparse, (n x n). .        |
+>+-----------+-------+------------------------------------------------+
+>| LINSOL_B  | B     | The right-hand-side matrix b: dense, (n x m) . |
+>+-----------+-------+------------------------------------------------+
+>
+>>Output scheme: CasADi::LinsolOutput (LINSOL_NUM_OUT = 2) [linsolOut]
+>+-----------+-------+----------------------------------------------+
+>| Full name | Short |                 Description                  |
+>+===========+=======+==============================================+
+>| LINSOL_X  | X     | Solution to the linear system of equations . |
+>+-----------+-------+----------------------------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: linear_solver.hpp 
+-}
+newtype LinearSolver = LinearSolver (ForeignPtr LinearSolver')
+-- typeclass decl
+class LinearSolverClass a where
+  castLinearSolver :: a -> LinearSolver
+instance LinearSolverClass LinearSolver where
+  castLinearSolver = id
+
+-- baseclass instances
+instance SharedObjectClass LinearSolver where
+  castSharedObject (LinearSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass LinearSolver where
+  castPrintableObject (LinearSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass LinearSolver where
+  castOptionsFunctionality (LinearSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass LinearSolver where
+  castFunction (LinearSolver x) = Function (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 SymbolicOCP'
+-- data decl
+{-|
+>[INTERNAL]  A flat OCP
+>representation coupled to an XML file.
+>
+>Variables:
+>
+>x:      differential states z:      algebraic states p : independent
+>parameters t :     time u :     control signals q : quadrature states y :
+>dependent variables
+>
+>Equations:
+>
+>explicit or implicit ODE: \\dot{x} = ode(t,x,z,u,p_free,pi,pd) or 0 =
+>ode(t,x,z,\\dot{x},u,p_free,pi,pd) algebraic equations: 0 =
+>alg(t,x,z,u,p_free,pi,pd) quadratures:              \\dot{q} =
+>quad(t,x,z,u,p_free,pi,pd) dependent equations:            y =
+>dep(t,x,z,u,p_free,pi,pd) initial equations:              0 =
+>initial(t,x,z,u,p_free,pi,pd)
+>
+>Objective function terms:
+>
+>Mayer terms:          \\sum{mterm_k} Lagrange terms:
+>\\sum{\\integral{mterm}}
+>
+>Note that when parsed, all dynamic equations end up in the implicit category
+>"dae". At a later state, the DAE can be reformulated, for example in semi-
+>explicit form, possibly in addition to a set of quadrature states.
+>
+>Usage skeleton:
+>
+>Call default constructor  SymbolicOCP ocp;
+>
+>Parse an FMI conformant XML file ocp.parseFMI(xml_file_name)
+>
+>Modify/add variables, equations, optimization ...
+>
+>When the optimal control problem is in a suitable form, it is possible to
+>either generate functions for numeric/symbolic evaluation or exporting the
+>OCP formulation into a new FMI conformant XML file. The latter functionality
+>is not yet available.
+>
+>Joel Andersson
+>
+>C++ includes: symbolic_ocp.hpp 
+-}
+newtype SymbolicOCP = SymbolicOCP (ForeignPtr SymbolicOCP')
+-- typeclass decl
+class SymbolicOCPClass a where
+  castSymbolicOCP :: a -> SymbolicOCP
+instance SymbolicOCPClass SymbolicOCP where
+  castSymbolicOCP = id
+
+-- baseclass instances
+instance PrintableObjectClass SymbolicOCP where
+  castPrintableObject (SymbolicOCP x) = PrintableObject (castForeignPtr x)
+
+
+-- 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 Function'
+-- data decl
+{-|
+>[INTERNAL]  General function.
+>
+>A general function $f$ in casadi can be multi-input, multi-output. Number of
+>inputs: nin getNumInputs() Number of outputs: nout getNumOutputs()  We can
+>view this function as a being composed of a (nin, nout) grid of single-
+>input, single-output primitive functions. Each such primitive function
+>$f_{i,j} \\forall i \\in [0,nin-1], j \\in [0,nout-1]$ can map as
+>$\\mathbf{R}^{n,m}\\to\\mathbf{R}^{p,q}$, in which n,m,p,q can take
+>different values for every (i,j) pair.  When passing input, you specify
+>which partition i is active. You pass the numbers vectorized, as a vector of
+>size $(n*m)$. When requesting output, you specify which partition j is
+>active. You get the numbers vectorized, as a vector of size $(p*q)$.  To
+>calculate jacobians, you need to have $(m=1,q=1)$.
+>
+>Write the jacobian as $J_{i,j} = \\nabla f_{i,j} = \\frac{\\partial
+>f_{i,j}(\\vec{x})}{\\partial \\vec{x}}$.
+>
+>Using $\\vec{v} \\in \\mathbf{R}^n$ as a forward seed: setFwdSeed(v,i)
+>Retrieving $\\vec{s}_f \\in \\mathbf{R}^p$ from: getFwdSens(sf,j)
+>Using $\\vec{w} \\in \\mathbf{R}^p$ as a forward seed: setAdjSeed(w,j)
+>Retrieving $\\vec{s}_a \\in \\mathbf{R}^n $ from: getAdjSens(sa,i)  We
+>have the following relationships for function mapping from a row vector to a
+>row vector:
+>
+>$ \\vec{s}_f = \\nabla f_{i,j} . \\vec{v}$ $ \\vec{s}_a = (\\nabla
+>f_{i,j})^T . \\vec{w}$
+>
+>Some quantities is these formulas must be transposed:  input col: transpose
+>$ \\vec{v} $ and $\\vec{s}_a$ output col: transpose $ \\vec{w} $ and
+>$\\vec{s}_f$  NOTE: Function's are allowed to modify their input arguments
+>when evaluating: implicitFunction, IDAS solver Futher releases may disallow
+>this.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+---------+--------------------------+
+>|   Id    |         Used in          |
+>+=========+==========================+
+>| inputs  | CasADi::FunctionInternal |
+>+---------+--------------------------+
+>| outputs | CasADi::FunctionInternal |
+>+---------+--------------------------+
+>
+>Diagrams
+>
+>C++ includes: function.hpp 
+-}
+newtype Function = Function (ForeignPtr Function')
+-- typeclass decl
+class FunctionClass a where
+  castFunction :: a -> Function
+instance FunctionClass Function where
+  castFunction = id
+
+-- baseclass instances
+instance SharedObjectClass Function where
+  castSharedObject (Function x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass Function where
+  castPrintableObject (Function x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass Function where
+  castOptionsFunctionality (Function x) = OptionsFunctionality (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 SOCPSolver'
+-- data decl
+{-|
+>[INTERNAL]   SOCPSolver.
+>
+>Solves an Second Order Cone Programming (SOCP) problem in standard form.
+>
+>Primal:
+>
+>min          c' x   x  subject to               || Gi' x + hi ||_2 <= ei' x
+>+ fi  i = 1..m              LBA <= A x <= UBA             LBX <= x   <= UBX
+>with x ( n x 1)          c ( n x 1 ) Gi  sparse (n x ni)          hi  dense
+>(ni x 1)          ei  dense (n x 1)          fi  dense (1 x 1)          N =
+>Sum_i^m ni          A sparse (nc x n)          LBA, UBA dense vector (nc x
+>1)          LBX, UBX dense vector (n x 1)
+>
+>Joris Gillis
+>
+>>Input scheme: CasADi::SOCPInput (SOCP_SOLVER_NUM_IN = 11) [socpIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SOCP_SOLVER_G          | g                      | The horizontal stack   |
+>|                        |                        | of all matrices Gi: (  |
+>|                        |                        | n x N) .               |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_H          | h                      | The vertical stack of  |
+>|                        |                        | all vectors hi: ( N x  |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_E          | e                      | The vertical stack of  |
+>|                        |                        | all vectors ei: ( nm x |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_F          | f                      | The vertical stack of  |
+>|                        |                        | all scalars fi: ( m x  |
+>|                        |                        | 1) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_C          | c                      | The vector c: ( n x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_A          | a                      | The matrix A: ( nc x   |
+>|                        |                        | n) .                   |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LBA        | lba                    | Lower bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_UBA        | uba                    | Upper bounds on Ax (   |
+>|                        |                        | nc x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LBX        | lbx                    | Lower bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_UBX        | ubx                    | Upper bounds on x ( n  |
+>|                        |                        | x 1 ) .                |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::SOCPOutput (SOCP_SOLVER_NUM_OUT = 5) [socpOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| SOCP_SOLVER_X          | x                      | The primal solution (n |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_COST       | cost                   | The primal optimal     |
+>|                        |                        | cost (1 x 1) .         |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LAM_A      | lam_a                  | The dual solution      |
+>|                        |                        | corresponding to the   |
+>|                        |                        | linear constraints (nc |
+>|                        |                        | x 1) .                 |
+>+------------------------+------------------------+------------------------+
+>| SOCP_SOLVER_LAM_X      | lam_x                  | The dual solution      |
+>|                        |                        | corresponding to       |
+>|                        |                        | simple bounds (n x 1)  |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ni           | OT_INTEGERVE | GenericType( | Provide the  | CasADi::SOCP |
+>|              | CTOR         | )            | size of each | SolverIntern |
+>|              |              |              | SOC          | al           |
+>|              |              |              | constraint.  |              |
+>|              |              |              | Must sum up  |              |
+>|              |              |              | to N.        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_proble | OT_BOOLEAN   | false        | Print out    | CasADi::SOCP |
+>| m            |              |              | problem      | SolverIntern |
+>|              |              |              | statement    | al           |
+>|              |              |              | for          |              |
+>|              |              |              | debugging.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: socp_solver.hpp 
+-}
+newtype SOCPSolver = SOCPSolver (ForeignPtr SOCPSolver')
+-- typeclass decl
+class SOCPSolverClass a where
+  castSOCPSolver :: a -> SOCPSolver
+instance SOCPSolverClass SOCPSolver where
+  castSOCPSolver = id
+
+-- baseclass instances
+instance SharedObjectClass SOCPSolver where
+  castSharedObject (SOCPSolver x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass SOCPSolver where
+  castPrintableObject (SOCPSolver x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass SOCPSolver where
+  castOptionsFunctionality (SOCPSolver x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass SOCPSolver where
+  castFunction (SOCPSolver x) = Function (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 DerivativeGenerator'
+-- data decl
+{-|
+>[INTERNAL]  Derivative
+>Generator Functor.
+>
+>In C++, supply a DerivativeGeneratorCPtr function pointer
+>
+>In python, supply a callable, annotated with derivativegenerator decorator
+>
+>C++ includes: functor.hpp 
+-}
+newtype DerivativeGenerator = DerivativeGenerator (ForeignPtr DerivativeGenerator')
+-- typeclass decl
+class DerivativeGeneratorClass a where
+  castDerivativeGenerator :: a -> DerivativeGenerator
+instance DerivativeGeneratorClass DerivativeGenerator where
+  castDerivativeGenerator = id
+
+-- baseclass instances
+instance SharedObjectClass DerivativeGenerator where
+  castSharedObject (DerivativeGenerator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass DerivativeGenerator where
+  castPrintableObject (DerivativeGenerator x) = PrintableObject (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 SOCPStructure'
+-- data decl
+{-|
+>[INTERNAL]  Helper
+>function for 'SOCPStruct'
+>
+>C++ includes: casadi_types.hpp 
+-}
+newtype SOCPStructure = SOCPStructure (ForeignPtr SOCPStructure')
+-- typeclass decl
+class SOCPStructureClass a where
+  castSOCPStructure :: a -> SOCPStructure
+instance SOCPStructureClass SOCPStructure where
+  castSOCPStructure = id
+
+-- baseclass instances
+instance PrintableObjectClass SOCPStructure where
+  castPrintableObject (SOCPStructure x) = PrintableObject (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal SOCPStructure (Ptr SOCPStructure') where
+  marshal (SOCPStructure x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (SOCPStructure x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__SOCPStructIOSchemeVector_CasADi__Sparsity_" 
+  c_delete_CasADi__SOCPStructIOSchemeVector_CasADi__Sparsity_ :: FunPtr (Ptr SOCPStructure' -> IO ())
+instance WrapReturn (Ptr SOCPStructure') SOCPStructure where
+  wrapReturn = (fmap SOCPStructure) . (newForeignPtr c_delete_CasADi__SOCPStructIOSchemeVector_CasADi__Sparsity_)
+
+
+-- raw decl
+data ImplicitFunction'
+-- data decl
+{-|
+>[INTERNAL]  Abstract base
+>class for the implicit function classes.
+>
+>The equation:
+>
+>F(z, x1, x2, ..., xn) == 0
+>
+>where d_F/dz is invertable, implicitly defines the equation:
+>
+>z := G(x1, x2, ..., xn)
+>
+>F should be an Function mapping from (n+1) inputs to m outputs. The first
+>output is the residual that should be zero.
+>
+>ImplicitFunction (G) is an Function mapping from n inputs to m outputs. n
+>may be zero. The first output is the solved for z.
+>
+>You can provide an initial guess for z by setting output(0) of
+>ImplicitFunction.
+>
+>Joel Andersson
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| constraints  | OT_INTEGERVE | GenericType( | Constrain    | CasADi::Impl |
+>|              | CTOR         | )            | the          | icitFunction |
+>|              |              |              | unknowns. 0  | Internal     |
+>|              |              |              | (default):   |              |
+>|              |              |              | no           |              |
+>|              |              |              | constraint   |              |
+>|              |              |              | on ui, 1: ui |              |
+>|              |              |              | >= 0.0, -1:  |              |
+>|              |              |              | ui <= 0.0,   |              |
+>|              |              |              | 2: ui > 0.0, |              |
+>|              |              |              | -2: ui <     |              |
+>|              |              |              | 0.0.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_inp | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| ut           |              |              | input that   | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| implicit_out | OT_INTEGER   | 0            | Index of the | CasADi::Impl |
+>| put          |              |              | output that  | icitFunction |
+>|              |              |              | corresponds  | Internal     |
+>|              |              |              | to the       |              |
+>|              |              |              | actual root- |              |
+>|              |              |              | finding      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | User-defined | CasADi::Impl |
+>| r            | VER          | )            | linear       | icitFunction |
+>|              |              |              | solver       | Internal     |
+>|              |              |              | class.       |              |
+>|              |              |              | Needed for s |              |
+>|              |              |              | ensitivities |              |
+>|              |              |              | .            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Impl |
+>| r_options    | Y            | )            | be passed to | icitFunction |
+>|              |              |              | the linear   | Internal     |
+>|              |              |              | solver.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp |              |
+>|              |              |              | uts)         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>Diagrams
+>
+>C++ includes: implicit_function.hpp 
+-}
+newtype ImplicitFunction = ImplicitFunction (ForeignPtr ImplicitFunction')
+-- typeclass decl
+class ImplicitFunctionClass a where
+  castImplicitFunction :: a -> ImplicitFunction
+instance ImplicitFunctionClass ImplicitFunction where
+  castImplicitFunction = id
+
+-- baseclass instances
+instance SharedObjectClass ImplicitFunction where
+  castSharedObject (ImplicitFunction x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass ImplicitFunction where
+  castPrintableObject (ImplicitFunction x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass ImplicitFunction where
+  castOptionsFunctionality (ImplicitFunction x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass ImplicitFunction where
+  castFunction (ImplicitFunction x) = Function (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 CVodesIntegrator'
+-- data decl
+{-|
+>[INTERNAL]  Interface to
+>CVodes from the Sundials suite.
+>
+>Base class for integrators. Solves an initial value problem (IVP) coupled to
+>a terminal value problem with differential equation given as an implicit ODE
+>coupled to an algebraic equation and a set of quadratures: Initial
+>conditions at t=t0  x(t0)  = x0  q(t0)  = 0   Forward integration from t=t0
+>to t=tf  der(x) = function(x,z,p,t) Forward ODE  0 = fz(x,z,p,t)
+>Forward algebraic equations  der(q) = fq(x,z,p,t)                  Forward
+>quadratures Terminal conditions at t=tf  rx(tf)  = rx0  rq(tf)  = 0
+>Backward integration from t=tf to t=t0  der(rx) = gx(rx,rz,rp,x,z,p,t)
+>Backward ODE  0 = gz(rx,rz,rp,x,z,p,t)        Backward algebraic equations
+>der(rq) = gq(rx,rz,rp,x,z,p,t)        Backward quadratures where we assume
+>that both the forward and backwards integrations are index-1  (i.e. dfz/dz,
+>dgz/drz are invertible) and furthermore that gx, gz and gq have a linear
+>dependency on rx, rz and rp.
+>
+>A call to evaluate will integrate to the end.
+>
+>You can retrieve the entire state trajectory as follows, after the evaluate
+>call: Call reset. Then call integrate(t_i) and getOuput for a series of
+>times t_i.
+>
+>>Input scheme: CasADi::IntegratorInput (INTEGRATOR_NUM_IN = 7) [integratorIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_X0          | x0                     | Differential state at  |
+>|                        |                        | the initial time .     |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_P           | p                      | Parameters .           |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_Z0          | z0                     | Initial guess for the  |
+>|                        |                        | algebraic variable .   |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RX0         | rx0                    | Backward differential  |
+>|                        |                        | state at the final     |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RP          | rp                     | Backward parameter     |
+>|                        |                        | vector .               |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZ0         | rz0                    | Initial guess for the  |
+>|                        |                        | backwards algebraic    |
+>|                        |                        | variable .             |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::IntegratorOutput (INTEGRATOR_NUM_OUT = 7) [integratorOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| INTEGRATOR_XF          | xf                     | Differential state at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_QF          | qf                     | Quadrature state at    |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_ZF          | zf                     | Algebraic variable at  |
+>|                        |                        | the final time .       |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RXF         | rxf                    | Backward differential  |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RQF         | rqf                    | Backward quadrature    |
+>|                        |                        | state at the initial   |
+>|                        |                        | time .                 |
+>+------------------------+------------------------+------------------------+
+>| INTEGRATOR_RZF         | rzf                    | Backward algebraic     |
+>|                        |                        | variable at the        |
+>|                        |                        | initial time .         |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| abstol       | OT_REAL      | 0.000        | Absolute     | CasADi::Sund |
+>|              |              |              | tolerence    | ialsInternal |
+>|              |              |              | for the IVP  |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| abstolB      | OT_REAL      | GenericType( | Absolute     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | abstol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| augmented_op | OT_DICTIONAR | GenericType( | Options to   | CasADi::Inte |
+>| tions        | Y            | )            | be passed    | gratorIntern |
+>|              |              |              | down to the  | al           |
+>|              |              |              | augmented    |              |
+>|              |              |              | integrator,  |              |
+>|              |              |              | if one is    |              |
+>|              |              |              | constructed. |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| disable_inte | OT_BOOLEAN   | false        | Disable      | CasADi::CVod |
+>| rnal_warning |              |              | CVodes       | esInternal   |
+>| s            |              |              | internal     |              |
+>|              |              |              | warning      |              |
+>|              |              |              | messages     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | true         | Use exact    | CasADi::Sund |
+>| an           |              |              | Jacobian     | ialsInternal |
+>|              |              |              | information  |              |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| exact_jacobi | OT_BOOLEAN   | GenericType( | Use exact    | CasADi::Sund |
+>| anB          |              | )            | Jacobian     | ialsInternal |
+>|              |              |              | information  |              |
+>|              |              |              | for the      |              |
+>|              |              |              | backward     |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to exa |              |
+>|              |              |              | ct_jacobian] |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_augme | OT_BOOLEAN   | true         | If DAE       | CasADi::Inte |
+>| nted         |              |              | callback     | gratorIntern |
+>|              |              |              | functions    | al           |
+>|              |              |              | are          |              |
+>|              |              |              | SXFunction , |              |
+>|              |              |              | have         |              |
+>|              |              |              | augmented    |              |
+>|              |              |              | DAE callback |              |
+>|              |              |              | function     |              |
+>|              |              |              | also be      |              |
+>|              |              |              | SXFunction . |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| finite_diffe | OT_BOOLEAN   | false        | Use finite   | CasADi::Sund |
+>| rence_fsens  |              |              | differences  | ialsInternal |
+>|              |              |              | to           |              |
+>|              |              |              | approximate  |              |
+>|              |              |              | the forward  |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations    |              |
+>|              |              |              | (if AD is    |              |
+>|              |              |              | not          |              |
+>|              |              |              | available)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_abstol | OT_REAL      | GenericType( | Absolute     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | abstol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_all_at | OT_BOOLEAN   | true         | Calculate    | CasADi::CVod |
+>| _once        |              |              | all right    | esInternal   |
+>|              |              |              | hand sides   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations at |              |
+>|              |              |              | once         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_err_co | OT_BOOLEAN   | true         | include the  | CasADi::Sund |
+>| n            |              |              | forward sens | ialsInternal |
+>|              |              |              | itivities in |              |
+>|              |              |              | all error    |              |
+>|              |              |              | controls     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_reltol | OT_REAL      | GenericType( | Relative     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | forward      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | reltol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_scalin | OT_REALVECTO | GenericType( | Scaling      | CasADi::Sund |
+>| g_factors    | R            | )            | factor for   | ialsInternal |
+>|              |              |              | the          |              |
+>|              |              |              | components   |              |
+>|              |              |              | if finite    |              |
+>|              |              |              | differences  |              |
+>|              |              |              | is used      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| fsens_sensit | OT_INTEGERVE | GenericType( | Specifies    | CasADi::Sund |
+>| iviy_paramet | CTOR         | )            | which        | ialsInternal |
+>| ers          |              |              | components   |              |
+>|              |              |              | will be used |              |
+>|              |              |              | when         |              |
+>|              |              |              | estimating   |              |
+>|              |              |              | the          |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | equations    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| interpolatio | OT_STRING    | "hermite"    | Type of inte | CasADi::Sund |
+>| n_type       |              |              | rpolation    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint sens |              |
+>|              |              |              | itivities (h |              |
+>|              |              |              | ermite|polyn |              |
+>|              |              |              | omial)       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | "gmres"      | (gmres|bcgst | CasADi::Sund |
+>| lver         |              |              | ab|tfqmr)    | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iterative_so | OT_STRING    | GenericType( | (gmres|bcgst | CasADi::Sund |
+>| lverB        |              | )            | ab|tfqmr)    | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_multi | OT_STRING    | "bdf"        | Integrator   | CasADi::CVod |
+>| step_method  |              |              | scheme       | esInternal   |
+>|              |              |              | (bdf|adams)  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | A custom     | CasADi::Sund |
+>| r            | VER          | )            | linear       | ialsInternal |
+>|              |              |              | solver       |              |
+>|              |              |              | creator      |              |
+>|              |              |              | function     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_LINEARSOL | GenericType( | A custom     | CasADi::Sund |
+>| rB           | VER          | )            | linear       | ialsInternal |
+>|              |              |              | solver       |              |
+>|              |              |              | creator      |              |
+>|              |              |              | function for |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to lin |              |
+>|              |              |              | ear_solver]  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Sund |
+>| r_options    | Y            | )            | be passed to | ialsInternal |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_DICTIONAR | GenericType( | Options to   | CasADi::Sund |
+>| r_optionsB   | Y            | )            | be passed to | ialsInternal |
+>|              |              |              | the linear   |              |
+>|              |              |              | solver for   |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to lin |              |
+>|              |              |              | ear_solver_o |              |
+>|              |              |              | ptions]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | "dense"      | (user_define | CasADi::Sund |
+>| r_type       |              |              | d|dense|band | ialsInternal |
+>|              |              |              | ed|iterative |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| linear_solve | OT_STRING    | GenericType( | (user_define | CasADi::Sund |
+>| r_typeB      |              | )            | d|dense|band | ialsInternal |
+>|              |              |              | ed|iterative |              |
+>|              |              |              | )            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   | GenericType( | Lower band-  | CasADi::Sund |
+>| dth          |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | Jacobian (es |              |
+>|              |              |              | timations)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lower_bandwi | OT_INTEGER   | GenericType( | lower band-  | CasADi::Sund |
+>| dthB         |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | jacobians    |              |
+>|              |              |              | for backward |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to low |              |
+>|              |              |              | er_bandwidth |              |
+>|              |              |              | ]            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylov   | OT_INTEGER   | 10           | Maximum      | CasADi::Sund |
+>|              |              |              | Krylov       | ialsInternal |
+>|              |              |              | subspace     |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_krylovB  | OT_INTEGER   | GenericType( | Maximum      | CasADi::Sund |
+>|              |              | )            | krylov       | ialsInternal |
+>|              |              |              | subspace     |              |
+>|              |              |              | size         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_multiste | OT_INTEGER   | 5            |              | CasADi::Sund |
+>| p_order      |              |              |              | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_num_step | OT_INTEGER   | 10000        | Maximum      | CasADi::Sund |
+>| s            |              |              | number of    | ialsInternal |
+>|              |              |              | integrator   |              |
+>|              |              |              | steps        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::CVod |
+>|              |              |              | uts)  (res|r | esInternal   |
+>|              |              |              | esB|resQB|re |              |
+>|              |              |              | set|psetupB| |              |
+>|              |              |              | djacB)       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nonlinear_so | OT_STRING    | "newton"     | (newton|func | CasADi::CVod |
+>| lver_iterati |              |              | tional)      | esInternal   |
+>| on           |              |              |              |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretype      | OT_STRING    | "none"       | (none|left|r | CasADi::Sund |
+>|              |              |              | ight|both)   | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| pretypeB     | OT_STRING    | GenericType( | (none|left|r | CasADi::Sund |
+>|              |              | )            | ight|both)   | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_stats  | OT_BOOLEAN   | false        | Print out    | CasADi::Inte |
+>|              |              |              | statistics   | gratorIntern |
+>|              |              |              | after        | al           |
+>|              |              |              | integration  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| quad_err_con | OT_BOOLEAN   | false        | Should the   | CasADi::Sund |
+>|              |              |              | quadratures  | ialsInternal |
+>|              |              |              | affect the   |              |
+>|              |              |              | step size    |              |
+>|              |              |              | control      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reltol       | OT_REAL      | 0.000        | Relative     | CasADi::Sund |
+>|              |              |              | tolerence    | ialsInternal |
+>|              |              |              | for the IVP  |              |
+>|              |              |              | solution     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| reltolB      | OT_REAL      | GenericType( | Relative     | CasADi::Sund |
+>|              |              | )            | tolerence    | ialsInternal |
+>|              |              |              | for the      |              |
+>|              |              |              | adjoint      |              |
+>|              |              |              | sensitivity  |              |
+>|              |              |              | solution     |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to     |              |
+>|              |              |              | reltol]      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| sensitivity_ | OT_STRING    | "simultaneou | (simultaneou | CasADi::Sund |
+>| method       |              | s"           | s|staggered) | ialsInternal |
+>+--------------+--------------+--------------+--------------+--------------+
+>| steps_per_ch | OT_INTEGER   | 20           | Number of    | CasADi::Sund |
+>| eckpoint     |              |              | steps        | ialsInternal |
+>|              |              |              | between two  |              |
+>|              |              |              | consecutive  |              |
+>|              |              |              | checkpoints  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| stop_at_end  | OT_BOOLEAN   | true         | Stop the     | CasADi::Sund |
+>|              |              |              | integrator   | ialsInternal |
+>|              |              |              | at the end   |              |
+>|              |              |              | of the       |              |
+>|              |              |              | interval     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| t0           | OT_REAL      | 0            | Beginning of | CasADi::Inte |
+>|              |              |              | the time     | gratorIntern |
+>|              |              |              | horizon      | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tf           | OT_REAL      | 1            | End of the   | CasADi::Inte |
+>|              |              |              | time horizon | gratorIntern |
+>|              |              |              |              | al           |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   | GenericType( | Upper band-  | CasADi::Sund |
+>| dth          |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | Jacobian (es |              |
+>|              |              |              | timations)   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| upper_bandwi | OT_INTEGER   | GenericType( | Upper band-  | CasADi::Sund |
+>| dthB         |              | )            | width of     | ialsInternal |
+>|              |              |              | banded       |              |
+>|              |              |              | jacobians    |              |
+>|              |              |              | for backward |              |
+>|              |              |              | integration  |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to upp |              |
+>|              |              |              | er_bandwidth |              |
+>|              |              |              | ]            |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | false        | Precondition | CasADi::Sund |
+>| tioner       |              |              | an iterative | ialsInternal |
+>|              |              |              | solver       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| use_precondi | OT_BOOLEAN   | GenericType( | Precondition | CasADi::Sund |
+>| tionerB      |              | )            | an iterative | ialsInternal |
+>|              |              |              | solver for   |              |
+>|              |              |              | the          |              |
+>|              |              |              | backwards    |              |
+>|              |              |              | problem      |              |
+>|              |              |              | [default:    |              |
+>|              |              |              | equal to use |              |
+>|              |              |              | _preconditio |              |
+>|              |              |              | ner]         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+---------+--------------------------+
+>|   Id    |         Used in          |
+>+=========+==========================+
+>| djacB   | CasADi::CVodesInternal   |
+>+---------+--------------------------+
+>| inputs  | CasADi::FunctionInternal |
+>+---------+--------------------------+
+>| outputs | CasADi::FunctionInternal |
+>+---------+--------------------------+
+>| psetupB | CasADi::CVodesInternal   |
+>+---------+--------------------------+
+>| res     | CasADi::CVodesInternal   |
+>+---------+--------------------------+
+>| resB    | CasADi::CVodesInternal   |
+>+---------+--------------------------+
+>| resQB   | CasADi::CVodesInternal   |
+>+---------+--------------------------+
+>| reset   | CasADi::CVodesInternal   |
+>+---------+--------------------------+
+>
+>>List of available stats
+>+-------------+------------------------+
+>|     Id      |        Used in         |
+>+=============+========================+
+>| nlinsetups  | CasADi::CVodesInternal |
+>+-------------+------------------------+
+>| nlinsetupsB | CasADi::CVodesInternal |
+>+-------------+------------------------+
+>| nsteps      | CasADi::CVodesInternal |
+>+-------------+------------------------+
+>| nstepsB     | CasADi::CVodesInternal |
+>+-------------+------------------------+
+>
+>Diagrams
+>
+>C++ includes: cvodes_integrator.hpp 
+-}
+newtype CVodesIntegrator = CVodesIntegrator (ForeignPtr CVodesIntegrator')
+-- typeclass decl
+class CVodesIntegratorClass a where
+  castCVodesIntegrator :: a -> CVodesIntegrator
+instance CVodesIntegratorClass CVodesIntegrator where
+  castCVodesIntegrator = id
+
+-- baseclass instances
+instance SharedObjectClass CVodesIntegrator where
+  castSharedObject (CVodesIntegrator x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass CVodesIntegrator where
+  castPrintableObject (CVodesIntegrator x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass CVodesIntegrator where
+  castOptionsFunctionality (CVodesIntegrator x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass CVodesIntegrator where
+  castFunction (CVodesIntegrator x) = Function (castForeignPtr x)
+
+instance IntegratorClass CVodesIntegrator where
+  castIntegrator (CVodesIntegrator x) = Integrator (castForeignPtr x)
+
+instance SundialsIntegratorClass CVodesIntegrator where
+  castSundialsIntegrator (CVodesIntegrator x) = SundialsIntegrator (castForeignPtr x)
+
+instance IOInterfaceFunctionClass CVodesIntegrator where
+  castIOInterfaceFunction (CVodesIntegrator x) = IOInterfaceFunction (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal CVodesIntegrator (Ptr CVodesIntegrator') where
+  marshal (CVodesIntegrator x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (CVodesIntegrator x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__CVodesIntegrator" 
+  c_delete_CasADi__CVodesIntegrator :: FunPtr (Ptr CVodesIntegrator' -> IO ())
+instance WrapReturn (Ptr CVodesIntegrator') CVodesIntegrator where
+  wrapReturn = (fmap CVodesIntegrator) . (newForeignPtr c_delete_CasADi__CVodesIntegrator)
+
+
+-- raw decl
+data IndexList'
+-- data decl
+{-|
+>[INTERNAL]  Class representing a
+>non-regular (and thus non-slice) index list
+>
+>C++ includes: slice.hpp 
+-}
+newtype IndexList = IndexList (ForeignPtr IndexList')
+-- typeclass decl
+class IndexListClass a where
+  castIndexList :: a -> IndexList
+instance IndexListClass IndexList where
+  castIndexList = id
+
+-- baseclass instances
+
+-- helper instances
+instance Marshal IndexList (Ptr IndexList') where
+  marshal (IndexList x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (IndexList x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__IndexList" 
+  c_delete_CasADi__IndexList :: FunPtr (Ptr IndexList' -> IO ())
+instance WrapReturn (Ptr IndexList') IndexList where
+  wrapReturn = (fmap IndexList) . (newForeignPtr c_delete_CasADi__IndexList)
+
+
+-- raw decl
+data StabilizedSQPMethod'
+-- data decl
+{-|
+>[INTERNAL]  Stabilized
+>Sequential Quadratic Programming method.
+>
+>Slava Kung
+>
+>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_P           | p                      | Value of fixed         |
+>|                        |                        | parameters (np x 1) .  |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
+>|                        |                        | lower bound (nx x 1),  |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
+>|                        |                        | upper bound (nx x 1),  |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default -inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
+>|                        |                        | bound (ng x 1),        |
+>|                        |                        | default +inf .         |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on X,       |
+>|                        |                        | initial guess (nx x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
+>|                        |                        | for bounds on G,       |
+>|                        |                        | initial guess (ng x 1) |
+>|                        |                        | .                      |
+>+------------------------+------------------------+------------------------+
+>
+>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
+>+------------------------+------------------------+------------------------+
+>|       Full name        |         Short          |      Description       |
+>+========================+========================+========================+
+>| NLP_SOLVER_X           | x                      | Decision variables at  |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (nx x 1) .             |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_F           | f                      | Cost function value at |
+>|                        |                        | the optimal solution   |
+>|                        |                        | (1 x 1) .              |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_G           | g                      | Constraints function   |
+>|                        |                        | at the optimal         |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
+>|                        |                        | for bounds on X at the |
+>|                        |                        | solution (nx x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
+>|                        |                        | for bounds on G at the |
+>|                        |                        | solution (ng x 1) .    |
+>+------------------------+------------------------+------------------------+
+>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
+>|                        |                        | for bounds on P at the |
+>|                        |                        | solution (np x 1) .    |
+>+------------------------+------------------------+------------------------+
+>
+>>List of available options
+>+--------------+--------------+--------------+--------------+--------------+
+>|      Id      |     Type     |   Default    | Description  |   Used in    |
+>+==============+==============+==============+==============+==============+
+>| TReta1       | OT_REAL      | 0.800        | Required     | CasADi::Stab |
+>|              |              |              | predicted /  | ilizedSQPInt |
+>|              |              |              | actual       | ernal        |
+>|              |              |              | decrease for |              |
+>|              |              |              | TR increase  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| TReta2       | OT_REAL      | 0.200        | Required     | CasADi::Stab |
+>|              |              |              | predicted /  | ilizedSQPInt |
+>|              |              |              | actual       | ernal        |
+>|              |              |              | decrease for |              |
+>|              |              |              | TR decrease  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::Func |
+>|              |              |              | calculate    | tionInternal |
+>|              |              |              | the          |              |
+>|              |              |              | Jacobians.   |              |
+>|              |              |              | (forward:    |              |
+>|              |              |              | only forward |              |
+>|              |              |              | mode|reverse |              |
+>|              |              |              | : only       |              |
+>|              |              |              | adjoint mode |              |
+>|              |              |              | |automatic:  |              |
+>|              |              |              | a heuristic  |              |
+>|              |              |              | decides      |              |
+>|              |              |              | which is     |              |
+>|              |              |              | more         |              |
+>|              |              |              | appropriate) |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| alphaMin     | OT_REAL      | 0.001        | Used to      | CasADi::Stab |
+>|              |              |              | check        | ilizedSQPInt |
+>|              |              |              | whether to   | ernal        |
+>|              |              |              | increase     |              |
+>|              |              |              | rho.         |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| beta         | OT_REAL      | 0.500        | Line-search  | CasADi::Stab |
+>|              |              |              | parameter,   | ilizedSQPInt |
+>|              |              |              | restoration  | ernal        |
+>|              |              |              | factor of    |              |
+>|              |              |              | stepsize     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| c1           | OT_REAL      | 0.001        | Armijo       | CasADi::Stab |
+>|              |              |              | condition,   | ilizedSQPInt |
+>|              |              |              | coefficient  | ernal        |
+>|              |              |              | of decrease  |              |
+>|              |              |              | in merit     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| derivative_g | OT_DERIVATIV | GenericType( | Function     | CasADi::Func |
+>| enerator     | EGENERATOR   | )            | that returns | tionInternal |
+>|              |              |              | a derivative |              |
+>|              |              |              | function     |              |
+>|              |              |              | given a      |              |
+>|              |              |              | number of    |              |
+>|              |              |              | forward and  |              |
+>|              |              |              | reverse      |              |
+>|              |              |              | directional  |              |
+>|              |              |              | derivative,  |              |
+>|              |              |              | overrides    |              |
+>|              |              |              | internal     |              |
+>|              |              |              | routines.    |              |
+>|              |              |              | Check docume |              |
+>|              |              |              | ntation of D |              |
+>|              |              |              | erivativeGen |              |
+>|              |              |              | erator .     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| dvMax0       | OT_REAL      | 100          | Parameter    | CasADi::Stab |
+>|              |              |              | used to      | ilizedSQPInt |
+>|              |              |              | defined the  | ernal        |
+>|              |              |              | max step     |              |
+>|              |              |              | length.      |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| eps_active   | OT_REAL      | 0.000        | Threshold    | CasADi::Stab |
+>|              |              |              | for the      | ilizedSQPInt |
+>|              |              |              | epsilon-     | ernal        |
+>|              |              |              | active set.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
+>|              |              |              | NLP function | olverInterna |
+>|              |              |              | in terms of  | l            |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | objective    | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
+>|              |              | )            | constraint   | olverInterna |
+>|              |              |              | function in  | l            |
+>|              |              |              | terms of     |              |
+>|              |              |              | scalar       |              |
+>|              |              |              | operations,  |              |
+>|              |              |              | i.e. MX->SX. |              |
+>|              |              |              | Deprecated,  |              |
+>|              |              |              | use "expand" |              |
+>|              |              |              | instead.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma1       | OT_REAL      | 2            | Trust region | CasADi::Stab |
+>|              |              |              | increase     | ilizedSQPInt |
+>|              |              |              | parameter    | ernal        |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma2       | OT_REAL      | 1            | Trust region | CasADi::Stab |
+>|              |              |              | update       | ilizedSQPInt |
+>|              |              |              | parameter    | ernal        |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gamma3       | OT_REAL      | 1            | Trust region | CasADi::Stab |
+>|              |              |              | decrease     | ilizedSQPInt |
+>|              |              |              | parameter    | ernal        |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::Func |
+>|              |              |              | indicate     | tionInternal |
+>|              |              |              | wether       |              |
+>|              |              |              | statistics   |              |
+>|              |              |              | must be      |              |
+>|              |              |              | gathered     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option. Use  | olverInterna |
+>|              |              |              | Gauss Newton | l            |
+>|              |              |              | Hessian appr |              |
+>|              |              |              | oximation    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| dient        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate a   | l            |
+>|              |              |              | function for |              |
+>|              |              |              | calculating  |              |
+>|              |              |              | the gradient |              |
+>|              |              |              | of the       |              |
+>|              |              |              | objective.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| sian         |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Hessian of   |              |
+>|              |              |              | the          |              |
+>|              |              |              | Lagrangian   |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>| obian        |              | )            | option.      | olverInterna |
+>|              |              |              | Generate an  | l            |
+>|              |              |              | exact        |              |
+>|              |              |              | Jacobian of  |              |
+>|              |              |              | the          |              |
+>|              |              |              | constraints  |              |
+>|              |              |              | if not       |              |
+>|              |              |              | supplied.    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| hessian_appr | OT_STRING    | "exact"      | limited-     | CasADi::Stab |
+>| oximation    |              |              | memory|exact | ilizedSQPInt |
+>|              |              |              |              | ernal        |
+>+--------------+--------------+--------------+--------------+--------------+
+>| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| _vec         |              |              | true, the    | olverInterna |
+>|              |              |              | input shape  | l            |
+>|              |              |              | of F will    |              |
+>|              |              |              | not be       |              |
+>|              |              |              | checked.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>|              |              |              | exceptions   | tionInternal |
+>|              |              |              | when the     |              |
+>|              |              |              | numerical    |              |
+>|              |              |              | values of    |              |
+>|              |              |              | the inputs   |              |
+>|              |              |              | don't make   |              |
+>|              |              |              | sense        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
+>| llback       |              | )            | that will be | olverInterna |
+>|              |              |              | called at    | l            |
+>|              |              |              | each         |              |
+>|              |              |              | iteration    |              |
+>|              |              |              | with the     |              |
+>|              |              |              | solver as    |              |
+>|              |              |              | input. Check |              |
+>|              |              |              | documentatio |              |
+>|              |              |              | n of         |              |
+>|              |              |              | Callback .   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
+>| llback_ignor |              |              | true, errors | olverInterna |
+>| e_errors     |              |              | thrown by it | l            |
+>|              |              |              | eration_call |              |
+>|              |              |              | back will be |              |
+>|              |              |              | ignored.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
+>| llback_step  |              |              | the callback | olverInterna |
+>|              |              |              | function     | l            |
+>|              |              |              | every few    |              |
+>|              |              |              | iterations.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| lbfgs_memory | OT_INTEGER   | 10           | Size of      | CasADi::Stab |
+>|              |              |              | L-BFGS       | ilizedSQPInt |
+>|              |              |              | memory.      | ernal        |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter     | OT_INTEGER   | 100          | Maximum      | CasADi::Stab |
+>|              |              |              | number of    | ilizedSQPInt |
+>|              |              |              | SQP          | ernal        |
+>|              |              |              | iterations   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| max_iter_ls  | OT_INTEGER   | 20           | Maximum      | CasADi::Stab |
+>|              |              |              | number of    | ilizedSQPInt |
+>|              |              |              | linesearch   | ernal        |
+>|              |              |              | iterations   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| merit_memory | OT_INTEGER   | 4            | Size of      | CasADi::Stab |
+>|              |              |              | memory to    | ilizedSQPInt |
+>|              |              |              | store        | ernal        |
+>|              |              |              | history of   |              |
+>|              |              |              | merit        |              |
+>|              |              |              | function     |              |
+>|              |              |              | values       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| min_step_siz | OT_REAL      | 0.000        | The size     | CasADi::Stab |
+>| e            |              |              | (inf-norm)   | ilizedSQPInt |
+>|              |              |              | of the step  | ernal        |
+>|              |              |              | size should  |              |
+>|              |              |              | not become   |              |
+>|              |              |              | smaller than |              |
+>|              |              |              | this.        |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::Func |
+>|              | TOR          | )            | be activated | tionInternal |
+>|              |              |              | (inputs|outp | CasADi::Stab |
+>|              |              |              | uts)  (eval_ | ilizedSQPInt |
+>|              |              |              | f|eval_g|eva | ernal        |
+>|              |              |              | l_jac_g|eval |              |
+>|              |              |              | _grad_f|eval |              |
+>|              |              |              | _h|qp|dx)    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| muR0         | OT_REAL      | 0.000        | Initial      | CasADi::Stab |
+>|              |              |              | choice of re | ilizedSQPInt |
+>|              |              |              | gularization | ernal        |
+>|              |              |              | parameter    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
+>|              |              | red_object"  | object       | onsFunctiona |
+>|              |              |              |              | lityNode     |
+>+--------------+--------------+--------------+--------------+--------------+
+>| nu           | OT_REAL      | 1            | Parameter    | CasADi::Stab |
+>|              |              |              | for primal-  | ilizedSQPInt |
+>|              |              |              | dual         | ernal        |
+>|              |              |              | augmented    |              |
+>|              |              |              | Lagrangian.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
+>|              |              | )            | option.      | olverInterna |
+>|              |              |              | Expect F, G, | l            |
+>|              |              |              | H, J to have |              |
+>|              |              |              | an           |              |
+>|              |              |              | additional   |              |
+>|              |              |              | input        |              |
+>|              |              |              | argument     |              |
+>|              |              |              | appended at  |              |
+>|              |              |              | the end,     |              |
+>|              |              |              | denoting     |              |
+>|              |              |              | fixed        |              |
+>|              |              |              | parameters.  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| phiWeight    | OT_REAL      | 0.000        | Weight used  | CasADi::Stab |
+>|              |              |              | in pseudo-   | ilizedSQPInt |
+>|              |              |              | filter.      | ernal        |
+>+--------------+--------------+--------------+--------------+--------------+
+>| print_header | OT_BOOLEAN   | true         | Print the    | CasADi::Stab |
+>|              |              |              | header with  | ilizedSQPInt |
+>|              |              |              | problem      | ernal        |
+>|              |              |              | statistics   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::Func |
+>| heck         |              |              | exceptions   | tionInternal |
+>|              |              |              | when NaN or  |              |
+>|              |              |              | Inf appears  |              |
+>|              |              |              | during       |              |
+>|              |              |              | evaluation   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| regularize   | OT_BOOLEAN   | false        | Automatic re | CasADi::Stab |
+>|              |              |              | gularization | ilizedSQPInt |
+>|              |              |              | of Lagrange  | ernal        |
+>|              |              |              | Hessian.     |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| stabilized_q | OT_STABILIZE | GenericType( | The          | CasADi::Stab |
+>| p_solver     | DQPSOLVER    | )            | Stabilized   | ilizedSQPInt |
+>|              |              |              | QP solver to | ernal        |
+>|              |              |              | be used by   |              |
+>|              |              |              | the SQP      |              |
+>|              |              |              | method       |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| stabilized_q | OT_DICTIONAR | GenericType( | Options to   | CasADi::Stab |
+>| p_solver_opt | Y            | )            | be passed to | ilizedSQPInt |
+>| ions         |              |              | the          | ernal        |
+>|              |              |              | Stabilized   |              |
+>|              |              |              | QP solver    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tau0         | OT_REAL      | 0.010        | Initial      | CasADi::Stab |
+>|              |              |              | parameter    | ilizedSQPInt |
+>|              |              |              | for the      | ernal        |
+>|              |              |              | merit        |              |
+>|              |              |              | function     |              |
+>|              |              |              | optimality   |              |
+>|              |              |              | threshold.   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_du       | OT_REAL      | 0.000        | Stopping     | CasADi::Stab |
+>|              |              |              | criterion    | ilizedSQPInt |
+>|              |              |              | for dual inf | ernal        |
+>|              |              |              | easability   |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| tol_pr       | OT_REAL      | 0.000        | Stopping     | CasADi::Stab |
+>|              |              |              | criterion    | ilizedSQPInt |
+>|              |              |              | for primal i | ernal        |
+>|              |              |              | nfeasibility |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::Func |
+>|              |              | )            | defined      | tionInternal |
+>|              |              |              | field that   |              |
+>|              |              |              | can be used  |              |
+>|              |              |              | to identify  |              |
+>|              |              |              | the function |              |
+>|              |              |              | or pass      |              |
+>|              |              |              | additional   |              |
+>|              |              |              | information  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| verbose      | OT_BOOLEAN   | false        | Verbose      | CasADi::Func |
+>|              |              |              | evaluation   | tionInternal |
+>|              |              |              | for          |              |
+>|              |              |              | debugging    |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
+>| _bounds      |              |              | initial      | olverInterna |
+>|              |              |              | guess does   | l            |
+>|              |              |              | not satisfy  |              |
+>|              |              |              | LBX and UBX  |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>| yEinitial    | OT_STRING    | "simple"     | Initial      | CasADi::Stab |
+>|              |              |              | multiplier.  | ilizedSQPInt |
+>|              |              |              | Simple (all  | ernal        |
+>|              |              |              | zero) or     |              |
+>|              |              |              | least (LSQ). |              |
+>+--------------+--------------+--------------+--------------+--------------+
+>
+>>List of available monitors
+>+-------------+-------------------------------+
+>|     Id      |            Used in            |
+>+=============+===============================+
+>| dx          | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>| eval_f      | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>| eval_g      | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>| eval_grad_f | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>| eval_h      | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>| eval_jac_g  | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>| inputs      | CasADi::FunctionInternal      |
+>+-------------+-------------------------------+
+>| outputs     | CasADi::FunctionInternal      |
+>+-------------+-------------------------------+
+>| qp          | CasADi::StabilizedSQPInternal |
+>+-------------+-------------------------------+
+>
+>>List of available stats
+>+---------------+-------------------------------+
+>|      Id       |            Used in            |
+>+===============+===============================+
+>| iter_count    | CasADi::StabilizedSQPInternal |
+>+---------------+-------------------------------+
+>| return_status | CasADi::StabilizedSQPInternal |
+>+---------------+-------------------------------+
+>
+>Diagrams
+>
+>C++ includes: stabilized_sqp_method.hpp 
+-}
+newtype StabilizedSQPMethod = StabilizedSQPMethod (ForeignPtr StabilizedSQPMethod')
+-- typeclass decl
+class StabilizedSQPMethodClass a where
+  castStabilizedSQPMethod :: a -> StabilizedSQPMethod
+instance StabilizedSQPMethodClass StabilizedSQPMethod where
+  castStabilizedSQPMethod = id
+
+-- baseclass instances
+instance SharedObjectClass StabilizedSQPMethod where
+  castSharedObject (StabilizedSQPMethod x) = SharedObject (castForeignPtr x)
+
+instance PrintableObjectClass StabilizedSQPMethod where
+  castPrintableObject (StabilizedSQPMethod x) = PrintableObject (castForeignPtr x)
+
+instance OptionsFunctionalityClass StabilizedSQPMethod where
+  castOptionsFunctionality (StabilizedSQPMethod x) = OptionsFunctionality (castForeignPtr x)
+
+instance FunctionClass StabilizedSQPMethod where
+  castFunction (StabilizedSQPMethod x) = Function (castForeignPtr x)
+
+instance IOInterfaceFunctionClass StabilizedSQPMethod where
+  castIOInterfaceFunction (StabilizedSQPMethod x) = IOInterfaceFunction (castForeignPtr x)
+
+instance NLPSolverClass StabilizedSQPMethod where
+  castNLPSolver (StabilizedSQPMethod x) = NLPSolver (castForeignPtr x)
+
+
+-- helper instances
+instance Marshal StabilizedSQPMethod (Ptr StabilizedSQPMethod') where
+  marshal (StabilizedSQPMethod x) = return (unsafeForeignPtrToPtr x)
+  marshalFree (StabilizedSQPMethod x) _ = touchForeignPtr x
+foreign import ccall unsafe "&delete_CasADi__StabilizedSQPMethod" 
+  c_delete_CasADi__StabilizedSQPMethod :: FunPtr (Ptr StabilizedSQPMethod' -> IO ())
+instance WrapReturn (Ptr StabilizedSQPMethod') StabilizedSQPMethod where
+  wrapReturn = (fmap StabilizedSQPMethod) . (newForeignPtr c_delete_CasADi__StabilizedSQPMethod)
+
+
+-- raw decl
+data IOScheme'
+-- data decl
+{-|
+>[INTERNAL]  Class with mapping
+>between names and indices.
+>
+>Joris Gillis
+>
+>C++ includes: io_scheme.hpp 
+-}
+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)
+
+instance PrintableObjectClass IOScheme where
+  castPrintableObject (IOScheme x) = PrintableObject (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)
 
 
diff --git a/Casadi/Wrappers/Enums.hs b/Casadi/Wrappers/Enums.hs
--- a/Casadi/Wrappers/Enums.hs
+++ b/Casadi/Wrappers/Enums.hs
@@ -16,6 +16,7 @@
          Dynamics(..),
          GradFInput(..),
          GradFOutput(..),
+         HNLPInput(..),
          HessLagInput(..),
          HessLagOutput(..),
          InputOutputScheme(..),
@@ -54,9 +55,8 @@
          SOCPInput(..),
          SOCPOutput(..),
          SOCPStruct(..),
-         Sparsity(..),
+         SparsityType(..),
          StabilizedQPSolverInput(..),
-         SymbolicOCPVariables(..),
          Type(..),
          Variability(..),
        ) where
@@ -275,9 +275,9 @@
 
 -- EnumDecl: Opt_type
 data Opt_type = OT_CALLBACK
+              | OT_SOCPSOLVER
               | OT_VOIDPTR
               | OT_BOOLEAN
-              | OT_FX
               | OT_INTEGERVECTOR
               | OT_REALVECTOR
               | OT_LINEARSOLVER
@@ -291,7 +291,7 @@
               | OT_IMPLICITFUNCTION
               | OT_SDQPSOLVER
               | OT_QCQPSOLVER
-              | OT_SOCPSOLVER
+              | OT_Function
               | OT_SDPSOLVER
               | OT_INTEGRATOR
               | OT_UNKNOWN
@@ -302,9 +302,9 @@
               deriving (Show, Eq)
 instance Enum Opt_type where
         fromEnum (OT_CALLBACK) = 22
+        fromEnum (OT_SOCPSOLVER) = 15
         fromEnum (OT_VOIDPTR) = 23
         fromEnum (OT_BOOLEAN) = 0
-        fromEnum (OT_FX) = 21
         fromEnum (OT_INTEGERVECTOR) = 4
         fromEnum (OT_REALVECTOR) = 6
         fromEnum (OT_LINEARSOLVER) = 11
@@ -318,7 +318,7 @@
         fromEnum (OT_IMPLICITFUNCTION) = 19
         fromEnum (OT_SDQPSOLVER) = 18
         fromEnum (OT_QCQPSOLVER) = 16
-        fromEnum (OT_SOCPSOLVER) = 15
+        fromEnum (OT_Function) = 21
         fromEnum (OT_SDPSOLVER) = 17
         fromEnum (OT_INTEGRATOR) = 12
         fromEnum (OT_UNKNOWN) = 24
@@ -327,9 +327,9 @@
         fromEnum (OT_QPSOLVER) = 13
         fromEnum (OT_DICTIONARY) = 8
         toEnum (22) = OT_CALLBACK
+        toEnum (15) = OT_SOCPSOLVER
         toEnum (23) = OT_VOIDPTR
         toEnum (0) = OT_BOOLEAN
-        toEnum (21) = OT_FX
         toEnum (4) = OT_INTEGERVECTOR
         toEnum (6) = OT_REALVECTOR
         toEnum (11) = OT_LINEARSOLVER
@@ -343,7 +343,7 @@
         toEnum (19) = OT_IMPLICITFUNCTION
         toEnum (18) = OT_SDQPSOLVER
         toEnum (16) = OT_QCQPSOLVER
-        toEnum (15) = OT_SOCPSOLVER
+        toEnum (21) = OT_Function
         toEnum (17) = OT_SDPSOLVER
         toEnum (12) = OT_INTEGRATOR
         toEnum (24) = OT_UNKNOWN
@@ -492,50 +492,6 @@
 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
-        marshal = return . fromIntegral . fromEnum
-instance WrapReturn CInt SymbolicOCPVariables where
-        wrapReturn = return . toEnum . fromIntegral
-
 -- EnumDecl: DAEOutput
 data DAEOutput = DAE_NUM_OUT
                | DAE_ODE
@@ -808,6 +764,7 @@
                        | SCHEME_LinsolOutput
                        | SCHEME_StabilizedQPSolverInput
                        | SCHEME_SOCPInput
+                       | SCHEME_HNLPInput
                        | SCHEME_DPLEInput
                        | SCHEME_GradFOutput
                        | SCHEME_NLPSolverOutput
@@ -818,94 +775,96 @@
                        | 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_SDPOutput) = 36
+        fromEnum (SCHEME_OCPOutput) = 28
+        fromEnum (SCHEME_DAEOutput) = 6
+        fromEnum (SCHEME_HessLagInput) = 22
+        fromEnum (SCHEME_SDQPInput) = 38
+        fromEnum (SCHEME_LinsolInput) = 11
+        fromEnum (SCHEME_DAEInput) = 5
+        fromEnum (SCHEME_IntegratorOutput) = 10
+        fromEnum (SCHEME_IntegratorInput) = 9
+        fromEnum (SCHEME_HessLagOutput) = 23
+        fromEnum (SCHEME_LPSolverInput) = 13
+        fromEnum (SCHEME_JacGOutput) = 21
+        fromEnum (SCHEME_SOCPStruct) = 43
         fromEnum (SCHEME_ControlledDAEInput) = 2
-        fromEnum (SCHEME_QPStruct) = 33
-        fromEnum (SCHEME_QCQPSolverInput) = 28
+        fromEnum (SCHEME_QPStruct) = 34
+        fromEnum (SCHEME_QCQPSolverInput) = 29
         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_QCQPSolverOutput) = 30
+        fromEnum (SCHEME_MayerInput) = 26
+        fromEnum (SCHEME_OCPInput) = 27
+        fromEnum (SCHEME_QPSolverOutput) = 33
+        fromEnum (SCHEME_RDAEOutput) = 8
+        fromEnum (SCHEME_NLPOutput) = 17
+        fromEnum (SCHEME_SDPInput) = 35
+        fromEnum (SCHEME_SOCPOutput) = 42
+        fromEnum (SCHEME_SDQPStruct) = 40
+        fromEnum (SCHEME_GradFInput) = 18
+        fromEnum (SCHEME_NLPInput) = 16
+        fromEnum (SCHEME_LPSolverOutput) = 14
+        fromEnum (SCHEME_NLPSolverInput) = 24
+        fromEnum (SCHEME_RDAEInput) = 7
+        fromEnum (SCHEME_QPSolverInput) = 32
+        fromEnum (SCHEME_SDPStruct) = 37
+        fromEnum (SCHEME_LinsolOutput) = 12
+        fromEnum (SCHEME_StabilizedQPSolverInput) = 44
+        fromEnum (SCHEME_SOCPInput) = 41
+        fromEnum (SCHEME_HNLPInput) = 4
         fromEnum (SCHEME_DPLEInput) = 0
-        fromEnum (SCHEME_GradFOutput) = 18
-        fromEnum (SCHEME_NLPSolverOutput) = 24
+        fromEnum (SCHEME_GradFOutput) = 19
+        fromEnum (SCHEME_NLPSolverOutput) = 25
         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
+        fromEnum (SCHEME_LPStruct) = 15
+        fromEnum (SCHEME_SDQPOutput) = 39
+        fromEnum (SCHEME_QCQPStruct) = 31
+        fromEnum (SCHEME_JacGInput) = 20
+        toEnum (36) = SCHEME_SDPOutput
+        toEnum (28) = SCHEME_OCPOutput
+        toEnum (6) = SCHEME_DAEOutput
+        toEnum (22) = SCHEME_HessLagInput
+        toEnum (38) = SCHEME_SDQPInput
+        toEnum (11) = SCHEME_LinsolInput
+        toEnum (5) = SCHEME_DAEInput
+        toEnum (10) = SCHEME_IntegratorOutput
+        toEnum (9) = SCHEME_IntegratorInput
+        toEnum (23) = SCHEME_HessLagOutput
+        toEnum (13) = SCHEME_LPSolverInput
+        toEnum (21) = SCHEME_JacGOutput
+        toEnum (43) = SCHEME_SOCPStruct
         toEnum (2) = SCHEME_ControlledDAEInput
-        toEnum (33) = SCHEME_QPStruct
-        toEnum (28) = SCHEME_QCQPSolverInput
+        toEnum (34) = SCHEME_QPStruct
+        toEnum (29) = 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 (30) = SCHEME_QCQPSolverOutput
+        toEnum (26) = SCHEME_MayerInput
+        toEnum (27) = SCHEME_OCPInput
+        toEnum (33) = SCHEME_QPSolverOutput
+        toEnum (8) = SCHEME_RDAEOutput
+        toEnum (17) = SCHEME_NLPOutput
+        toEnum (35) = SCHEME_SDPInput
+        toEnum (42) = SCHEME_SOCPOutput
+        toEnum (40) = SCHEME_SDQPStruct
+        toEnum (18) = SCHEME_GradFInput
+        toEnum (16) = SCHEME_NLPInput
+        toEnum (14) = SCHEME_LPSolverOutput
+        toEnum (24) = SCHEME_NLPSolverInput
+        toEnum (7) = SCHEME_RDAEInput
+        toEnum (32) = SCHEME_QPSolverInput
+        toEnum (37) = SCHEME_SDPStruct
+        toEnum (12) = SCHEME_LinsolOutput
+        toEnum (44) = SCHEME_StabilizedQPSolverInput
+        toEnum (41) = SCHEME_SOCPInput
+        toEnum (4) = SCHEME_HNLPInput
         toEnum (0) = SCHEME_DPLEInput
-        toEnum (18) = SCHEME_GradFOutput
-        toEnum (24) = SCHEME_NLPSolverOutput
+        toEnum (19) = SCHEME_GradFOutput
+        toEnum (25) = SCHEME_NLPSolverOutput
         toEnum (1) = SCHEME_DPLEOutput
-        toEnum (14) = SCHEME_LPStruct
-        toEnum (38) = SCHEME_SDQPOutput
-        toEnum (30) = SCHEME_QCQPStruct
-        toEnum (19) = SCHEME_JacGInput
+        toEnum (15) = SCHEME_LPStruct
+        toEnum (39) = SCHEME_SDQPOutput
+        toEnum (31) = SCHEME_QCQPStruct
+        toEnum (20) = SCHEME_JacGInput
         toEnum k
           = error $ "InputOutputScheme: toEnum: got unhandled number: " ++
               show k
@@ -1380,26 +1339,23 @@
 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
+-- 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 $ "Sparsity: toEnum: got unhandled number: " ++ show k
-instance Marshal Sparsity CInt where
+          = error $ "Alias: toEnum: got unhandled number: " ++ show k
+instance Marshal Alias CInt where
         marshal = return . fromIntegral . fromEnum
-instance WrapReturn CInt Sparsity where
+instance WrapReturn CInt Alias where
         wrapReturn = return . toEnum . fromIntegral
 
 -- EnumDecl: OCPOutput
@@ -1606,25 +1562,6 @@
 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
-        marshal = return . fromIntegral . fromEnum
-instance WrapReturn CInt Alias where
-        wrapReturn = return . toEnum . fromIntegral
-
 -- EnumDecl: SDPStruct
 data SDPStruct = SDP_STRUCT_A
                | SDP_STRUCT_NUM
@@ -1730,6 +1667,7 @@
                | OP_SOLVE
                | OP_NE
                | OP_NORM1
+               | OP_HORZCAT
                | OP_CONSTPOW
                | OP_DIV
                | OP_RESHAPE
@@ -1761,6 +1699,7 @@
                | OP_SQ
                | OP_NORMF
                | OP_ACOSH
+               | OP_HORZSPLIT
                | OP_EXP
                | OP_INPUT
                | OP_OUTPUT
@@ -1782,14 +1721,14 @@
                | OP_ADDNONZEROS
                deriving (Show, Eq)
 instance Enum Operation where
-        fromEnum (OP_SETNONZEROS) = 61
+        fromEnum (OP_SETNONZEROS) = 63
         fromEnum (OP_FLOOR) = 26
         fromEnum (OP_TAN) = 15
-        fromEnum (OP_NORMINF) = 66
-        fromEnum (OP_ERFINV) = 68
+        fromEnum (OP_NORMINF) = 68
+        fromEnum (OP_ERFINV) = 70
         fromEnum (OP_FABS) = 28
         fromEnum (OP_LT) = 19
-        fromEnum (OP_LIFT) = 70
+        fromEnum (OP_LIFT) = 72
         fromEnum (OP_DETERMINANT) = 51
         fromEnum (OP_SIN) = 13
         fromEnum (OP_PARAMETER) = 46
@@ -1797,21 +1736,22 @@
         fromEnum (OP_MUL) = 3
         fromEnum (OP_NOT) = 23
         fromEnum (OP_IF_ELSE_ZERO) = 31
-        fromEnum (OP_PRINTME) = 69
+        fromEnum (OP_PRINTME) = 71
         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_NORM1) = 67
+        fromEnum (OP_HORZCAT) = 54
         fromEnum (OP_CONSTPOW) = 9
         fromEnum (OP_DIV) = 4
-        fromEnum (OP_RESHAPE) = 56
+        fromEnum (OP_RESHAPE) = 58
         fromEnum (OP_INV) = 35
-        fromEnum (OP_NORM2) = 64
+        fromEnum (OP_NORM2) = 66
         fromEnum (OP_AND) = 24
         fromEnum (OP_COS) = 14
-        fromEnum (OP_GETNONZEROS) = 59
+        fromEnum (OP_GETNONZEROS) = 61
         fromEnum (OP_FMAX) = 34
         fromEnum (OP_CEIL) = 27
         fromEnum (OP_POW) = 8
@@ -1819,11 +1759,11 @@
         fromEnum (OP_CONST) = 43
         fromEnum (OP_LOG) = 7
         fromEnum (OP_NEG) = 5
-        fromEnum (OP_SUBASSIGN) = 58
+        fromEnum (OP_SUBASSIGN) = 60
         fromEnum (OP_ATAN) = 18
         fromEnum (OP_SQRT) = 10
-        fromEnum (OP_ASSERTION) = 63
-        fromEnum (OP_VERTSPLIT) = 55
+        fromEnum (OP_ASSERTION) = 65
+        fromEnum (OP_VERTSPLIT) = 57
         fromEnum (OP_ASINH) = 39
         fromEnum (OP_COSH) = 37
         fromEnum (OP_ASSIGN) = 0
@@ -1833,12 +1773,13 @@
         fromEnum (OP_SUB) = 2
         fromEnum (OP_SIGN) = 29
         fromEnum (OP_SQ) = 11
-        fromEnum (OP_NORMF) = 67
+        fromEnum (OP_NORMF) = 69
         fromEnum (OP_ACOSH) = 40
+        fromEnum (OP_HORZSPLIT) = 56
         fromEnum (OP_EXP) = 6
         fromEnum (OP_INPUT) = 44
         fromEnum (OP_OUTPUT) = 45
-        fromEnum (OP_VERTCAT) = 54
+        fromEnum (OP_VERTCAT) = 55
         fromEnum (OP_EQ) = 21
         fromEnum (OP_INNER_PROD) = 53
         fromEnum (OP_MATMUL) = 48
@@ -1846,22 +1787,22 @@
         fromEnum (OP_ASIN) = 16
         fromEnum (OP_COPYSIGN) = 30
         fromEnum (OP_ATANH) = 41
-        fromEnum (NUM_BUILT_IN_OPS) = 71
+        fromEnum (NUM_BUILT_IN_OPS) = 73
         fromEnum (OP_ACOS) = 17
         fromEnum (OP_OR) = 25
         fromEnum (OP_TWICE) = 12
-        fromEnum (OP_SUBREF) = 57
+        fromEnum (OP_SUBREF) = 59
         fromEnum (OP_ATAN2) = 42
-        fromEnum (OP_SET_SPARSE) = 62
-        fromEnum (OP_ADDNONZEROS) = 60
-        toEnum (61) = OP_SETNONZEROS
+        fromEnum (OP_SET_SPARSE) = 64
+        fromEnum (OP_ADDNONZEROS) = 62
+        toEnum (63) = OP_SETNONZEROS
         toEnum (26) = OP_FLOOR
         toEnum (15) = OP_TAN
-        toEnum (66) = OP_NORMINF
-        toEnum (68) = OP_ERFINV
+        toEnum (68) = OP_NORMINF
+        toEnum (70) = OP_ERFINV
         toEnum (28) = OP_FABS
         toEnum (19) = OP_LT
-        toEnum (70) = OP_LIFT
+        toEnum (72) = OP_LIFT
         toEnum (51) = OP_DETERMINANT
         toEnum (13) = OP_SIN
         toEnum (46) = OP_PARAMETER
@@ -1869,21 +1810,22 @@
         toEnum (3) = OP_MUL
         toEnum (23) = OP_NOT
         toEnum (31) = OP_IF_ELSE_ZERO
-        toEnum (69) = OP_PRINTME
+        toEnum (71) = 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 (67) = OP_NORM1
+        toEnum (54) = OP_HORZCAT
         toEnum (9) = OP_CONSTPOW
         toEnum (4) = OP_DIV
-        toEnum (56) = OP_RESHAPE
+        toEnum (58) = OP_RESHAPE
         toEnum (35) = OP_INV
-        toEnum (64) = OP_NORM2
+        toEnum (66) = OP_NORM2
         toEnum (24) = OP_AND
         toEnum (14) = OP_COS
-        toEnum (59) = OP_GETNONZEROS
+        toEnum (61) = OP_GETNONZEROS
         toEnum (34) = OP_FMAX
         toEnum (27) = OP_CEIL
         toEnum (8) = OP_POW
@@ -1891,11 +1833,11 @@
         toEnum (43) = OP_CONST
         toEnum (7) = OP_LOG
         toEnum (5) = OP_NEG
-        toEnum (58) = OP_SUBASSIGN
+        toEnum (60) = OP_SUBASSIGN
         toEnum (18) = OP_ATAN
         toEnum (10) = OP_SQRT
-        toEnum (63) = OP_ASSERTION
-        toEnum (55) = OP_VERTSPLIT
+        toEnum (65) = OP_ASSERTION
+        toEnum (57) = OP_VERTSPLIT
         toEnum (39) = OP_ASINH
         toEnum (37) = OP_COSH
         toEnum (0) = OP_ASSIGN
@@ -1905,12 +1847,13 @@
         toEnum (2) = OP_SUB
         toEnum (29) = OP_SIGN
         toEnum (11) = OP_SQ
-        toEnum (67) = OP_NORMF
+        toEnum (69) = OP_NORMF
         toEnum (40) = OP_ACOSH
+        toEnum (56) = OP_HORZSPLIT
         toEnum (6) = OP_EXP
         toEnum (44) = OP_INPUT
         toEnum (45) = OP_OUTPUT
-        toEnum (54) = OP_VERTCAT
+        toEnum (55) = OP_VERTCAT
         toEnum (21) = OP_EQ
         toEnum (53) = OP_INNER_PROD
         toEnum (48) = OP_MATMUL
@@ -1918,14 +1861,14 @@
         toEnum (16) = OP_ASIN
         toEnum (30) = OP_COPYSIGN
         toEnum (41) = OP_ATANH
-        toEnum (71) = NUM_BUILT_IN_OPS
+        toEnum (73) = NUM_BUILT_IN_OPS
         toEnum (17) = OP_ACOS
         toEnum (25) = OP_OR
         toEnum (12) = OP_TWICE
-        toEnum (57) = OP_SUBREF
+        toEnum (59) = OP_SUBREF
         toEnum (42) = OP_ATAN2
-        toEnum (62) = OP_SET_SPARSE
-        toEnum (60) = OP_ADDNONZEROS
+        toEnum (64) = OP_SET_SPARSE
+        toEnum (62) = OP_ADDNONZEROS
         toEnum k
           = error $ "Operation: toEnum: got unhandled number: " ++ show k
 instance Marshal Operation CInt where
@@ -1933,6 +1876,31 @@
 instance WrapReturn CInt Operation where
         wrapReturn = return . toEnum . fromIntegral
 
+-- EnumDecl: SparsityType
+data SparsityType = DENSE
+                  | SPARSESYM
+                  | DENSESYM
+                  | SPARSE
+                  | DENSETRANS
+                  deriving (Show, Eq)
+instance Enum SparsityType where
+        fromEnum (DENSE) = 2
+        fromEnum (SPARSESYM) = 1
+        fromEnum (DENSESYM) = 3
+        fromEnum (SPARSE) = 0
+        fromEnum (DENSETRANS) = 4
+        toEnum (2) = DENSE
+        toEnum (1) = SPARSESYM
+        toEnum (3) = DENSESYM
+        toEnum (0) = SPARSE
+        toEnum (4) = DENSETRANS
+        toEnum k
+          = error $ "SparsityType: toEnum: got unhandled number: " ++ show k
+instance Marshal SparsityType CInt where
+        marshal = return . fromIntegral . fromEnum
+instance WrapReturn CInt SparsityType where
+        wrapReturn = return . toEnum . fromIntegral
+
 -- EnumDecl: QPSolverOutput
 data QPSolverOutput = QP_SOLVER_LAM_X
                     | QP_SOLVER_COST
@@ -1957,5 +1925,27 @@
 instance Marshal QPSolverOutput CInt where
         marshal = return . fromIntegral . fromEnum
 instance WrapReturn CInt QPSolverOutput where
+        wrapReturn = return . toEnum . fromIntegral
+
+-- EnumDecl: HNLPInput
+data HNLPInput = HNL_TAU
+               | HNL_X
+               | HNL_P
+               | HNL_NUM_IN
+               deriving (Show, Eq)
+instance Enum HNLPInput where
+        fromEnum (HNL_TAU) = 2
+        fromEnum (HNL_X) = 0
+        fromEnum (HNL_P) = 1
+        fromEnum (HNL_NUM_IN) = 3
+        toEnum (2) = HNL_TAU
+        toEnum (0) = HNL_X
+        toEnum (1) = HNL_P
+        toEnum (3) = HNL_NUM_IN
+        toEnum k
+          = error $ "HNLPInput: toEnum: got unhandled number: " ++ show k
+instance Marshal HNLPInput CInt where
+        marshal = return . fromIntegral . fromEnum
+instance WrapReturn CInt HNLPInput where
         wrapReturn = return . toEnum . fromIntegral
 
diff --git a/Casadi/Wrappers/Tools.hs b/Casadi/Wrappers/Tools.hs
--- a/Casadi/Wrappers/Tools.hs
+++ b/Casadi/Wrappers/Tools.hs
@@ -2,4837 +2,4960 @@
 
 module Casadi.Wrappers.Tools
        (
-         addMultiple'',
-         addMultiple''',
-         addMultiple'''',
-         addMultiple''''',
-         adj',
-         adj'',
-         blkdiag',
-         blkdiag'',
-         blkdiag''',
-         blkdiag'''',
-         blockcat',
-         blockcat'',
-         blockcat''',
-         blocksplit'''',
-         blocksplit''''',
-         blocksplit'''''',
-         blocksplit''''''',
-         blocksplit'''''''',
-         blocksplit''''''''',
-         blocksplit'''''''''',
-         blocksplit''''''''''',
-         blocksplit'''''''''''',
-         blocksplit''''''''''''',
-         blocksplit'''''''''''''',
-         blocksplit''''''''''''''',
-         cofactor',
-         cofactor'',
-         collocationInterpolators,
-         collocationPoints,
-         collocationPoints',
-         complement,
-         compress,
-         compress',
-         countNodes,
-         countNodes',
-         createParent,
-         densify',
-         densify'',
-         densify''',
-         dependsOn,
-         det',
-         det'',
-         det''',
-         diag',
-         diag'',
-         diag''',
-         eig_symbolic,
-         evalf,
-         evalf',
-         expand,
-         explicitRK,
-         explicitRK',
-         explicitRK'',
-         explicitRK''',
-         extractShared,
-         extractShared',
-         extractShared'',
-         extractShared''',
-         extractShared'''',
-         extractShared''''',
-         fill,
-         flatten',
-         flatten'',
-         flatten''',
-         flattenNZ',
-         flattenNZ'',
-         flattenNZ''',
-         flattenNZcat',
-         flattenNZcat'',
-         flattenNZcat''',
-         flattencat',
-         flattencat'',
-         flattencat''',
-         full',
-         full'',
-         full''',
-         gauss_quadrature,
-         gauss_quadrature',
-         gauss_quadrature'',
-         getFree,
-         getIntValue,
-         getIntValue',
-         getIntValue'',
-         getMinor',
-         getMinor'',
-         getNZDense,
-         getOperatorRepresentation,
-         getOperatorRepresentation',
-         getSchemeEntryDoc,
-         getSchemeEntryEnum,
-         getSchemeEntryEnumName,
-         getSchemeEntryName,
-         getSchemeEntryNames,
-         getSchemeName,
-         getSchemeSize,
-         getSparseTriplet',
-         getSparseTriplet'',
-         getSymbols,
-         getSymbols',
-         getSymbols'',
-         getValue,
-         getValue',
-         getValue'',
-         gradient,
-         gradient',
-         graph_substitute,
-         graph_substitute',
-         hasNonStructuralZeros',
-         hasNonStructuralZeros'',
-         hash_combine,
-         hash_sparsity,
-         heaviside,
-         hessian,
-         hessian',
-         horzcat',
-         horzcat'',
-         horzcat''',
-         horzcat'''',
-         horzsplit''',
-         horzsplit'''',
-         horzsplit''''',
-         horzsplit'''''',
-         horzsplit''''''',
-         horzsplit'''''''',
-         horzsplit''''''''',
-         horzsplit'''''''''',
-         horzsplit''''''''''',
-         if_else,
-         if_else',
-         inner_prod',
-         inner_prod'',
-         inner_prod''',
-         inv',
-         inv'',
-         inv''',
-         isConstant',
-         isConstant'',
-         isDecreasing,
-         isDecreasing',
-         isDense',
-         isDense'',
-         isDense''',
-         isEmpty',
-         isEmpty'',
-         isEqual',
-         isEqual'',
-         isEqual''',
-         isIdentity',
-         isIdentity'',
-         isIdentity''',
-         isIncreasing,
-         isIncreasing',
-         isInteger',
-         isInteger'',
-         isMinusOne',
-         isMinusOne'',
-         isMinusOne''',
-         isMonotone,
-         isMonotone',
-         isNonDecreasing,
-         isNonDecreasing',
-         isNonIncreasing,
-         isNonIncreasing',
-         isOne',
-         isOne'',
-         isOne''',
-         isRegular,
-         isRegular',
-         isRegular''',
-         isRegular'''',
-         isRegular''''',
-         isRegular'''''',
-         isScalar',
-         isScalar'',
-         isSingular,
-         isSmooth,
-         isStrictlyMonotone,
-         isStrictlyMonotone',
-         isSymbolic,
-         isSymbolic',
-         isSymbolicSparse,
-         isSymbolicSparse',
-         isTranspose,
-         isTril',
-         isTril'',
-         isTriu',
-         isTriu'',
-         isVector',
-         isVector'',
-         isVector''',
-         isZero',
-         isZero'',
-         isZero''',
-         jacobian,
-         jacobian',
-         jacobianTimesVector,
-         jacobianTimesVector',
-         kron',
-         kron'',
-         kron''',
-         logic_and,
-         logic_and',
-         logic_and''',
-         logic_and'''',
-         logic_and''''',
-         logic_and'''''',
-         logic_not,
-         logic_not',
-         logic_not''',
-         logic_not'''',
-         logic_not''''',
-         logic_not'''''',
-         logic_or,
-         logic_or',
-         logic_or''',
-         logic_or'''',
-         logic_or''''',
-         logic_or'''''',
-         lookupvector,
-         lowerNZ,
-         lowerSparsity,
-         lowerSparsity',
-         makeDense',
-         makeDense'',
-         makeDense''',
-         makeSparse'',
-         makeSparse''',
-         makeSparse'''',
-         makeSparse''''',
-         matrix_expand,
-         matrix_expand',
-         matrix_expand'',
-         matrix_expand''',
-         msym,
-         msym',
-         msym'',
-         msym''',
-         msym'''',
-         msym''''',
-         msym'''''',
-         msym''''''',
-         msym'''''''',
-         mtaylor,
-         mtaylor',
-         mtaylor'',
-         mul''',
-         mul'''',
-         mul''''',
-         mul'''''',
-         mul''''''',
-         mul'''''''',
-         mul''''''''',
-         mul'''''''''',
-         mul''''''''''',
-         mul'''''''''''',
-         nnz',
-         nnz'',
-         nnz_sym',
-         nnz_sym'',
-         norm_1',
-         norm_1'',
-         norm_1''',
-         norm_2',
-         norm_2'',
-         norm_2''',
-         norm_F',
-         norm_F'',
-         norm_F''',
-         norm_inf',
-         norm_inf'',
-         norm_inf''',
-         nullspace',
-         nullspace'',
-         nullspace''',
-         numSample1D,
-         numSample1DT,
-         numSample2D,
-         outer_prod',
-         outer_prod'',
-         outer_prod''',
-         parameterizeTime,
-         parameterizeTimeOutput,
-         pinv',
-         pinv'',
-         poly_coeff,
-         poly_roots,
-         polyval',
-         polyval'',
-         polyval''',
-         printCompact',
-         printCompact''',
-         project',
-         project'',
-         pw_const,
-         pw_lin,
-         qr',
-         qr'',
-         ramp,
-         rank,
-         rectangle,
-         repmat',
-         repmat'',
-         repmat''',
-         reshape'',
-         reshape''',
-         reshape'''',
-         reshape''''',
-         reshape'''''',
-         reshape''''''',
-         simplify,
-         simplify',
-         simplify'',
-         solve',
-         solve'',
-         sp_band,
-         sp_banded,
-         sp_compress,
-         sp_compress',
-         sp_dense,
-         sp_dense',
-         sp_diag,
-         sp_rowcol,
-         sp_sparse,
-         sp_sparse',
-         sp_tril,
-         sp_triplet,
-         sp_triplet',
-         sp_triplet'',
-         sp_unit,
-         sparse'',
-         sparse''',
-         sparse'''',
-         sparse''''',
-         sprank',
-         sprank'',
-         spy,
-         ssym,
-         ssym',
-         ssym'',
-         ssym''',
-         ssym'''',
-         ssym''''',
-         ssym'''''',
-         ssym''''''',
-         ssym'''''''',
-         substitute,
-         substitute',
-         substitute'',
-         substitute''',
-         substituteInPlace,
-         substituteInPlace',
-         substituteInPlace'',
-         substituteInPlace''',
-         substituteInPlace'''',
-         substituteInPlace''''',
-         substituteInPlace'''''',
-         substituteInPlace''''''',
-         substituteInPlace'''''''',
-         substituteInPlace''''''''',
-         sumAll',
-         sumAll'',
-         sumAll''',
-         sumCols',
-         sumCols'',
-         sumCols''',
-         sumRows',
-         sumRows'',
-         sumRows''',
-         tangent,
-         tangent',
-         taylor,
-         taylor',
-         taylor'',
-         trace',
-         trace'',
-         trace''',
-         trans',
-         trans'',
-         trans''',
-         trans'''',
-         triangle,
-         unite',
-         unite'',
-         unite''',
-         vec',
-         vec'',
-         vec''',
-         vec'''',
-         vec''''',
-         vec'''''',
-         vecNZ',
-         vecNZ'',
-         vecNZ''',
-         vecNZcat',
-         vecNZcat'',
-         vecNZcat''',
-         veccat',
-         veccat'',
-         veccat''',
-         vertcat',
-         vertcat'',
-         vertcat''',
-         vertcat'''',
-         vertsplit''',
-         vertsplit'''',
-         vertsplit''''',
-         vertsplit'''''',
-         vertsplit''''''',
-         vertsplit'''''''',
-         vertsplit''''''''',
-         vertsplit'''''''''',
-         vertsplit''''''''''',
-       ) where
-
-
-import Data.Vector ( Vector )
-import Foreign.C.Types
-import Foreign.Ptr ( Ptr )
-
-import Casadi.Wrappers.Data
-import Casadi.Wrappers.Enums
-import Casadi.Wrappers.CToolsInstances ( )
-import Casadi.MarshalTypes ( CppVec, StdString' )
-import Casadi.Marshal ( withMarshal )
-import Casadi.WrapReturn ( WrapReturn(..) )
-
-foreign import ccall unsafe "CasADi__getSchemeEntryName" c_CasADi__getSchemeEntryName
-  :: CInt -> CInt -> IO (Ptr StdString')
-getSchemeEntryName
-  :: InputOutputScheme -> Int -> IO String
-getSchemeEntryName x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getSchemeEntryName x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSchemeEntryDoc" c_CasADi__getSchemeEntryDoc
-  :: CInt -> CInt -> IO (Ptr StdString')
-getSchemeEntryDoc
-  :: InputOutputScheme -> Int -> IO String
-getSchemeEntryDoc x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getSchemeEntryDoc x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSchemeEntryEnumName" c_CasADi__getSchemeEntryEnumName
-  :: CInt -> CInt -> IO (Ptr StdString')
-getSchemeEntryEnumName
-  :: InputOutputScheme -> Int -> IO String
-getSchemeEntryEnumName x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getSchemeEntryEnumName x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSchemeEntryEnum" c_CasADi__getSchemeEntryEnum
-  :: CInt -> Ptr StdString' -> IO CInt
-getSchemeEntryEnum
-  :: InputOutputScheme -> String -> IO Int
-getSchemeEntryEnum x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getSchemeEntryEnum x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSchemeSize" c_CasADi__getSchemeSize
-  :: CInt -> IO CInt
-getSchemeSize
-  :: InputOutputScheme -> IO Int
-getSchemeSize x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSchemeSize x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSchemeName" c_CasADi__getSchemeName
-  :: CInt -> IO (Ptr StdString')
-getSchemeName
-  :: InputOutputScheme -> IO String
-getSchemeName x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSchemeName x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSchemeEntryNames" c_CasADi__getSchemeEntryNames
-  :: CInt -> IO (Ptr StdString')
-getSchemeEntryNames
-  :: InputOutputScheme -> IO String
-getSchemeEntryNames x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSchemeEntryNames x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__complement" c_CasADi__complement
-  :: Ptr (CppVec CInt) -> CInt -> IO (Ptr (CppVec CInt))
-{-|
->Returns the list of all i in [0,size[ not found in supplied list.
->
->The supplied vector may contain duplicates and may be non-monotonous The
->supplied vector will be checked for bounds The result vector is guaranteed
->to be monotonously increasing
--}
-complement
-  :: Vector Int -> Int -> IO (Vector Int)
-complement x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__complement x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__lookupvector" c_CasADi__lookupvector
-  :: Ptr (CppVec CInt) -> CInt -> IO (Ptr (CppVec CInt))
-{-|
->Returns a vector for quickly looking up entries of supplied list.
->
->lookupvector[i]!=-1 <=> v contains i v[lookupvector[i]] == i <=> v contains
->i
->
->Duplicates are treated by looking up last occurence
--}
-lookupvector
-  :: Vector Int -> Int -> IO (Vector Int)
-lookupvector x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__lookupvector x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isIncreasing" c_CasADi__isIncreasing
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->Check if the vector is strictly increasing.
--}
-isIncreasing
-  :: Vector Int -> IO Bool
-isIncreasing x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isIncreasing x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isDecreasing" c_CasADi__isDecreasing
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->Check if the vector is strictly decreasing.
--}
-isDecreasing
-  :: Vector Int -> IO Bool
-isDecreasing x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isDecreasing x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isNonIncreasing" c_CasADi__isNonIncreasing
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->Check if the vector is non-increasing.
--}
-isNonIncreasing
-  :: Vector Int -> IO Bool
-isNonIncreasing x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isNonIncreasing x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isNonDecreasing" c_CasADi__isNonDecreasing
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->Check if the vector is non-decreasing.
--}
-isNonDecreasing
-  :: Vector Int -> IO Bool
-isNonDecreasing x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isNonDecreasing x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isMonotone" c_CasADi__isMonotone
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->Check if the vector is monotone.
--}
-isMonotone
-  :: Vector Int -> IO Bool
-isMonotone x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isMonotone x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isStrictlyMonotone" c_CasADi__isStrictlyMonotone
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->Check if the vector is strictly monotone.
--}
-isStrictlyMonotone
-  :: Vector Int -> IO Bool
-isStrictlyMonotone x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isStrictlyMonotone x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isRegular" c_CasADi__isRegular
-  :: Ptr (CppVec CInt) -> IO CInt
-{-|
->>  bool CasADi::isRegular(const Matrix< int > &ex)
->
->>  bool CasADi::isRegular(const std::vector< T > &vec)
->------------------------------------------------------------------------
->
->Checks if vector does not contain NaN or Inf.
->
->>  bool CasADi::isRegular(const MX &ex)
->------------------------------------------------------------------------
->
->Checks if expression does not contain NaN or Inf.
->
->>  bool CasADi::isRegular(const SX &ex)
->------------------------------------------------------------------------
->
->Make the expression smooth by replacing non-smooth nodes with binary
->variables.
->
->Substitute derivatives with variables void replaceDerivatives(SXMatrix &ex,
->const SXMatrix &var, const SXMatrix &dvar); Checks if expression does not
->contain NaN or Inf
--}
-isRegular
-  :: Vector Int -> IO Bool
-isRegular x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isRegular x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isIncreasing_TIC" c_CasADi__isIncreasing_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isIncreasing'
-  :: Vector Double -> IO Bool
-isIncreasing' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isIncreasing_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isDecreasing_TIC" c_CasADi__isDecreasing_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isDecreasing'
-  :: Vector Double -> IO Bool
-isDecreasing' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isDecreasing_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isNonIncreasing_TIC" c_CasADi__isNonIncreasing_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isNonIncreasing'
-  :: Vector Double -> IO Bool
-isNonIncreasing' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isNonIncreasing_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isNonDecreasing_TIC" c_CasADi__isNonDecreasing_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isNonDecreasing'
-  :: Vector Double -> IO Bool
-isNonDecreasing' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isNonDecreasing_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isMonotone_TIC" c_CasADi__isMonotone_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isMonotone'
-  :: Vector Double -> IO Bool
-isMonotone' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isMonotone_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isStrictlyMonotone_TIC" c_CasADi__isStrictlyMonotone_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isStrictlyMonotone'
-  :: Vector Double -> IO Bool
-isStrictlyMonotone' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isStrictlyMonotone_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isRegular_TIC" c_CasADi__isRegular_TIC
-  :: Ptr (CppVec CDouble) -> IO CInt
-isRegular'
-  :: Vector Double -> IO Bool
-isRegular' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isRegular_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isRegular_TIC_TIC_TIC" c_CasADi__isRegular_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO CInt
-isRegular'''
-  :: DMatrix -> IO Bool
-isRegular''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isRegular_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trans_TIC" c_CasADi__trans_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-trans'
-  :: DMatrix -> IO DMatrix
-trans' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trans_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr CRSSparsity' -> IO (Ptr DMatrix')
-mul'''
-  :: DMatrix -> DMatrix -> CRSSparsity -> IO DMatrix
-mul''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__mul_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-mul''''
-  :: DMatrix -> DMatrix -> IO DMatrix
-mul'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-mul'''''
-  :: Vector DMatrix -> IO DMatrix
-mul''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isConstant_TIC" c_CasADi__isConstant_TIC
-  :: Ptr DMatrix' -> IO CInt
-isConstant'
-  :: DMatrix -> IO Bool
-isConstant' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isConstant_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isDense_TIC" c_CasADi__isDense_TIC
-  :: Ptr DMatrix' -> IO CInt
-isDense'
-  :: DMatrix -> IO Bool
-isDense' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isDense_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isEmpty_TIC" c_CasADi__isEmpty_TIC
-  :: Ptr DMatrix' -> IO CInt
-isEmpty'
-  :: DMatrix -> IO Bool
-isEmpty' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isEmpty_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isInteger_TIC" c_CasADi__isInteger_TIC
-  :: Ptr DMatrix' -> IO CInt
-isInteger'
-  :: DMatrix -> IO Bool
-isInteger' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isInteger_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isScalar_TIC" c_CasADi__isScalar_TIC
-  :: Ptr DMatrix' -> IO CInt
-isScalar'
-  :: DMatrix -> IO Bool
-isScalar' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isScalar_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isVector_TIC" c_CasADi__isVector_TIC
-  :: Ptr DMatrix' -> IO CInt
-isVector'
-  :: DMatrix -> IO Bool
-isVector' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isVector_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isTril_TIC" c_CasADi__isTril_TIC
-  :: Ptr DMatrix' -> IO CInt
-isTril'
-  :: DMatrix -> IO Bool
-isTril' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isTril_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isTriu_TIC" c_CasADi__isTriu_TIC
-  :: Ptr DMatrix' -> IO CInt
-isTriu'
-  :: DMatrix -> IO Bool
-isTriu' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isTriu_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__det_TIC" c_CasADi__det_TIC
-  :: Ptr DMatrix' -> IO CDouble
-det'
-  :: DMatrix -> IO Double
-det' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__det_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getMinor_TIC" c_CasADi__getMinor_TIC
-  :: Ptr DMatrix' -> CInt -> CInt -> IO CDouble
-getMinor'
-  :: DMatrix -> Int -> Int -> IO Double
-getMinor' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__getMinor_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__cofactor_TIC" c_CasADi__cofactor_TIC
-  :: Ptr DMatrix' -> CInt -> CInt -> IO CDouble
-cofactor'
-  :: DMatrix -> Int -> Int -> IO Double
-cofactor' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__cofactor_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__adj_TIC" c_CasADi__adj_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-adj'
-  :: DMatrix -> IO DMatrix
-adj' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__adj_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__inv_TIC" c_CasADi__inv_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-inv'
-  :: DMatrix -> IO DMatrix
-inv' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__inv_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__reshape_TIC_TIC" c_CasADi__reshape_TIC_TIC
-  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr DMatrix')
-reshape''
-  :: DMatrix -> Int -> Int -> IO DMatrix
-reshape'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__reshape_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr CRSSparsity' -> IO (Ptr DMatrix')
-reshape'''
-  :: DMatrix -> CRSSparsity -> IO DMatrix
-reshape''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__reshape_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vec_TIC" c_CasADi__vec_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-vec'
-  :: DMatrix -> IO DMatrix
-vec' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vec_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flatten_TIC" c_CasADi__flatten_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-flatten'
-  :: DMatrix -> IO DMatrix
-flatten' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flatten_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vecNZ_TIC" c_CasADi__vecNZ_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-vecNZ'
-  :: DMatrix -> IO DMatrix
-vecNZ' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vecNZ_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattenNZ_TIC" c_CasADi__flattenNZ_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-flattenNZ'
-  :: DMatrix -> IO DMatrix
-flattenNZ' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattenNZ_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blockcat_TIC" c_CasADi__blockcat_TIC
-  :: Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> IO (Ptr DMatrix')
-blockcat'
-  :: Vector (Vector DMatrix) -> IO DMatrix
-blockcat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blockcat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
-blocksplit''''
-  :: DMatrix -> Vector Int -> Vector Int -> IO (Vector (Vector DMatrix))
-blocksplit'''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
-blocksplit'''''
-  :: DMatrix -> Int -> Int -> IO (Vector (Vector DMatrix))
-blocksplit''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
-blocksplit''''''
-  :: DMatrix -> Int -> IO (Vector (Vector DMatrix))
-blocksplit'''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
-blocksplit'''''''
-  :: DMatrix -> IO (Vector (Vector DMatrix))
-blocksplit''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzcat_TIC" c_CasADi__horzcat_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-horzcat'
-  :: Vector DMatrix -> IO DMatrix
-horzcat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzcat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr DMatrix')))
-horzsplit'''
-  :: DMatrix -> Vector Int -> IO (Vector DMatrix)
-horzsplit''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
-horzsplit''''
-  :: DMatrix -> Int -> IO (Vector DMatrix)
-horzsplit'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr DMatrix')))
-horzsplit'''''
-  :: DMatrix -> IO (Vector DMatrix)
-horzsplit''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertcat_TIC" c_CasADi__vertcat_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-vertcat'
-  :: Vector DMatrix -> IO DMatrix
-vertcat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertcat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr DMatrix')))
-vertsplit'''
-  :: DMatrix -> Vector Int -> IO (Vector DMatrix)
-vertsplit''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
-vertsplit''''
-  :: DMatrix -> Int -> IO (Vector DMatrix)
-vertsplit'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr DMatrix')))
-vertsplit'''''
-  :: DMatrix -> IO (Vector DMatrix)
-vertsplit''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__inner_prod_TIC" c_CasADi__inner_prod_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-inner_prod'
-  :: DMatrix -> DMatrix -> IO DMatrix
-inner_prod' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__inner_prod_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__outer_prod_TIC" c_CasADi__outer_prod_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-outer_prod'
-  :: DMatrix -> DMatrix -> IO DMatrix
-outer_prod' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__outer_prod_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_1_TIC" c_CasADi__norm_1_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-norm_1'
-  :: DMatrix -> IO DMatrix
-norm_1' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_1_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_2_TIC" c_CasADi__norm_2_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-norm_2'
-  :: DMatrix -> IO DMatrix
-norm_2' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_2_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_inf_TIC" c_CasADi__norm_inf_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-norm_inf'
-  :: DMatrix -> IO DMatrix
-norm_inf' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_inf_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_F_TIC" c_CasADi__norm_F_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-norm_F'
-  :: DMatrix -> IO DMatrix
-norm_F' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_F_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__qr_TIC" c_CasADi__qr_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
-qr'
-  :: DMatrix -> DMatrix -> DMatrix -> IO ()
-qr' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__qr_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nullspace_TIC" c_CasADi__nullspace_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-nullspace'
-  :: DMatrix -> IO DMatrix
-nullspace' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nullspace_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__solve_TIC" c_CasADi__solve_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-solve'
-  :: DMatrix -> DMatrix -> IO DMatrix
-solve' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__solve_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__pinv_TIC" c_CasADi__pinv_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-pinv'
-  :: DMatrix -> IO DMatrix
-pinv' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__pinv_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isZero_TIC" c_CasADi__isZero_TIC
-  :: Ptr DMatrix' -> IO CInt
-isZero'
-  :: DMatrix -> IO Bool
-isZero' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isZero_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isOne_TIC" c_CasADi__isOne_TIC
-  :: Ptr DMatrix' -> IO CInt
-isOne'
-  :: DMatrix -> IO Bool
-isOne' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isOne_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isMinusOne_TIC" c_CasADi__isMinusOne_TIC
-  :: Ptr DMatrix' -> IO CInt
-isMinusOne'
-  :: DMatrix -> IO Bool
-isMinusOne' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isMinusOne_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isIdentity_TIC" c_CasADi__isIdentity_TIC
-  :: Ptr DMatrix' -> IO CInt
-isIdentity'
-  :: DMatrix -> IO Bool
-isIdentity' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isIdentity_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nnz_TIC" c_CasADi__nnz_TIC
-  :: Ptr DMatrix' -> IO CInt
-nnz'
-  :: DMatrix -> IO Int
-nnz' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nnz_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nnz_sym_TIC" c_CasADi__nnz_sym_TIC
-  :: Ptr DMatrix' -> IO CInt
-nnz_sym'
-  :: DMatrix -> IO Int
-nnz_sym' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nnz_sym_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isEqual_TIC" c_CasADi__isEqual_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO CInt
-isEqual'
-  :: DMatrix -> DMatrix -> IO Bool
-isEqual' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__isEqual_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__repmat_TIC" c_CasADi__repmat_TIC
-  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr DMatrix')
-repmat'
-  :: DMatrix -> Int -> Int -> IO DMatrix
-repmat' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__repmat_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSparseTriplet_TIC" c_CasADi__getSparseTriplet_TIC
-  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr (CppVec CInt))))
-getSparseTriplet'
-  :: DMatrix -> IO (Vector (Vector Int))
-getSparseTriplet' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSparseTriplet_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__unite_TIC" c_CasADi__unite_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-unite'
-  :: DMatrix -> DMatrix -> IO DMatrix
-unite' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__unite_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumCols_TIC" c_CasADi__sumCols_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-sumCols'
-  :: DMatrix -> IO DMatrix
-sumCols' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumCols_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumRows_TIC" c_CasADi__sumRows_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-sumRows'
-  :: DMatrix -> IO DMatrix
-sumRows' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumRows_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumAll_TIC" c_CasADi__sumAll_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-sumAll'
-  :: DMatrix -> IO DMatrix
-sumAll' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumAll_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trace_TIC" c_CasADi__trace_TIC
-  :: Ptr DMatrix' -> IO CDouble
-trace'
-  :: DMatrix -> IO Double
-trace' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trace_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeDense_TIC" c_CasADi__makeDense_TIC
-  :: Ptr DMatrix' -> IO ()
-makeDense'
-  :: DMatrix -> IO ()
-makeDense' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__makeDense_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__densify_TIC" c_CasADi__densify_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-densify'
-  :: DMatrix -> IO DMatrix
-densify' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__densify_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeSparse_TIC_TIC" c_CasADi__makeSparse_TIC_TIC
-  :: Ptr DMatrix' -> CDouble -> IO ()
-makeSparse''
-  :: DMatrix -> Double -> IO ()
-makeSparse'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__makeSparse_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeSparse_TIC_TIC_TIC" c_CasADi__makeSparse_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO ()
-makeSparse'''
-  :: DMatrix -> IO ()
-makeSparse''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__makeSparse_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__hasNonStructuralZeros_TIC" c_CasADi__hasNonStructuralZeros_TIC
-  :: Ptr DMatrix' -> IO CInt
-hasNonStructuralZeros'
-  :: DMatrix -> IO Bool
-hasNonStructuralZeros' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__hasNonStructuralZeros_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__diag_TIC" c_CasADi__diag_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-diag'
-  :: DMatrix -> IO DMatrix
-diag' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__diag_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blkdiag_TIC" c_CasADi__blkdiag_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-blkdiag'
-  :: Vector DMatrix -> IO DMatrix
-blkdiag' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blkdiag_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__polyval_TIC" c_CasADi__polyval_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-polyval'
-  :: DMatrix -> DMatrix -> IO DMatrix
-polyval' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__polyval_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC" c_CasADi__addMultiple_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> CInt -> IO ()
-addMultiple''
-  :: DMatrix -> Vector Double -> Vector Double -> Bool -> IO ()
-addMultiple'' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__addMultiple_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC_TIC" c_CasADi__addMultiple_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
-addMultiple'''
-  :: DMatrix -> Vector Double -> Vector Double -> IO ()
-addMultiple''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__addMultiple_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__veccat_TIC" c_CasADi__veccat_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-veccat'
-  :: Vector DMatrix -> IO DMatrix
-veccat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__veccat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vecNZcat_TIC" c_CasADi__vecNZcat_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-vecNZcat'
-  :: Vector DMatrix -> IO DMatrix
-vecNZcat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vecNZcat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattencat_TIC" c_CasADi__flattencat_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-flattencat'
-  :: Vector DMatrix -> IO DMatrix
-flattencat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattencat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattenNZcat_TIC" c_CasADi__flattenNZcat_TIC
-  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
-flattenNZcat'
-  :: Vector DMatrix -> IO DMatrix
-flattenNZcat' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattenNZcat_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__project_TIC" c_CasADi__project_TIC
-  :: Ptr DMatrix' -> Ptr CRSSparsity' -> IO (Ptr DMatrix')
-project'
-  :: DMatrix -> CRSSparsity -> IO DMatrix
-project' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__project_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sprank_TIC" c_CasADi__sprank_TIC
-  :: Ptr DMatrix' -> IO CInt
-sprank'
-  :: DMatrix -> IO Int
-sprank' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sprank_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__kron_TIC" c_CasADi__kron_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-kron'
-  :: DMatrix -> DMatrix -> IO DMatrix
-kron' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__kron_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sparse_TIC_TIC" c_CasADi__sparse_TIC_TIC
-  :: Ptr DMatrix' -> CDouble -> IO (Ptr DMatrix')
-sparse''
-  :: DMatrix -> Double -> IO DMatrix
-sparse'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sparse_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sparse_TIC_TIC_TIC" c_CasADi__sparse_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-sparse'''
-  :: DMatrix -> IO DMatrix
-sparse''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sparse_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__full_TIC" c_CasADi__full_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-full'
-  :: DMatrix -> IO DMatrix
-full' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__full_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trans_TIC_TIC" c_CasADi__trans_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-trans''
-  :: SXMatrix -> IO SXMatrix
-trans'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trans_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-mul''''''
-  :: SXMatrix -> SXMatrix -> CRSSparsity -> IO SXMatrix
-mul'''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-mul'''''''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-mul''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-mul''''''''
-  :: Vector SXMatrix -> IO SXMatrix
-mul'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isConstant_TIC_TIC" c_CasADi__isConstant_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isConstant''
-  :: SXMatrix -> IO Bool
-isConstant'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isConstant_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isDense_TIC_TIC" c_CasADi__isDense_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isDense''
-  :: SXMatrix -> IO Bool
-isDense'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isDense_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isEmpty_TIC_TIC" c_CasADi__isEmpty_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isEmpty''
-  :: SXMatrix -> IO Bool
-isEmpty'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isEmpty_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isInteger_TIC_TIC" c_CasADi__isInteger_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isInteger''
-  :: SXMatrix -> IO Bool
-isInteger'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isInteger_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isScalar_TIC_TIC" c_CasADi__isScalar_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isScalar''
-  :: SXMatrix -> IO Bool
-isScalar'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isScalar_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isVector_TIC_TIC" c_CasADi__isVector_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isVector''
-  :: SXMatrix -> IO Bool
-isVector'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isVector_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isTril_TIC_TIC" c_CasADi__isTril_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isTril''
-  :: SXMatrix -> IO Bool
-isTril'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isTril_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isTriu_TIC_TIC" c_CasADi__isTriu_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isTriu''
-  :: SXMatrix -> IO Bool
-isTriu'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isTriu_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__det_TIC_TIC" c_CasADi__det_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SX')
-det''
-  :: SXMatrix -> IO SX
-det'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__det_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getMinor_TIC_TIC" c_CasADi__getMinor_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr SX')
-getMinor''
-  :: SXMatrix -> Int -> Int -> IO SX
-getMinor'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__getMinor_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__cofactor_TIC_TIC" c_CasADi__cofactor_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr SX')
-cofactor''
-  :: SXMatrix -> Int -> Int -> IO SX
-cofactor'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__cofactor_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__adj_TIC_TIC" c_CasADi__adj_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-adj''
-  :: SXMatrix -> IO SXMatrix
-adj'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__adj_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__inv_TIC_TIC" c_CasADi__inv_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-inv''
-  :: SXMatrix -> IO SXMatrix
-inv'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__inv_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr SXMatrix')
-reshape''''
-  :: SXMatrix -> Int -> Int -> IO SXMatrix
-reshape'''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__reshape_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-reshape'''''
-  :: SXMatrix -> CRSSparsity -> IO SXMatrix
-reshape''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vec_TIC_TIC" c_CasADi__vec_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-vec''
-  :: SXMatrix -> IO SXMatrix
-vec'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vec_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flatten_TIC_TIC" c_CasADi__flatten_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-flatten''
-  :: SXMatrix -> IO SXMatrix
-flatten'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flatten_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vecNZ_TIC_TIC" c_CasADi__vecNZ_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-vecNZ''
-  :: SXMatrix -> IO SXMatrix
-vecNZ'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vecNZ_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattenNZ_TIC_TIC" c_CasADi__flattenNZ_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-flattenNZ''
-  :: SXMatrix -> IO SXMatrix
-flattenNZ'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattenNZ_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blockcat_TIC_TIC" c_CasADi__blockcat_TIC_TIC
-  :: Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))) -> IO (Ptr SXMatrix')
-blockcat''
-  :: Vector (Vector SXMatrix) -> IO SXMatrix
-blockcat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blockcat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))))
-blocksplit''''''''
-  :: SXMatrix -> Vector Int -> Vector Int -> IO (Vector (Vector SXMatrix))
-blocksplit'''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))))
-blocksplit'''''''''
-  :: SXMatrix -> Int -> Int -> IO (Vector (Vector SXMatrix))
-blocksplit''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))))
-blocksplit''''''''''
-  :: SXMatrix -> Int -> IO (Vector (Vector SXMatrix))
-blocksplit'''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))))
-blocksplit'''''''''''
-  :: SXMatrix -> IO (Vector (Vector SXMatrix))
-blocksplit''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzcat_TIC_TIC" c_CasADi__horzcat_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-horzcat''
-  :: Vector SXMatrix -> IO SXMatrix
-horzcat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzcat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr SXMatrix')))
-horzsplit''''''
-  :: SXMatrix -> Vector Int -> IO (Vector SXMatrix)
-horzsplit'''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> IO (Ptr (CppVec (Ptr SXMatrix')))
-horzsplit'''''''
-  :: SXMatrix -> Int -> IO (Vector SXMatrix)
-horzsplit''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr (CppVec (Ptr SXMatrix')))
-horzsplit''''''''
-  :: SXMatrix -> IO (Vector SXMatrix)
-horzsplit'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertcat_TIC_TIC" c_CasADi__vertcat_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-vertcat''
-  :: Vector SXMatrix -> IO SXMatrix
-vertcat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertcat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr SXMatrix')))
-vertsplit''''''
-  :: SXMatrix -> Vector Int -> IO (Vector SXMatrix)
-vertsplit'''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> IO (Ptr (CppVec (Ptr SXMatrix')))
-vertsplit'''''''
-  :: SXMatrix -> Int -> IO (Vector SXMatrix)
-vertsplit''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr (CppVec (Ptr SXMatrix')))
-vertsplit''''''''
-  :: SXMatrix -> IO (Vector SXMatrix)
-vertsplit'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__inner_prod_TIC_TIC" c_CasADi__inner_prod_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-inner_prod''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-inner_prod'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__inner_prod_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__outer_prod_TIC_TIC" c_CasADi__outer_prod_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-outer_prod''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-outer_prod'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__outer_prod_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_1_TIC_TIC" c_CasADi__norm_1_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-norm_1''
-  :: SXMatrix -> IO SXMatrix
-norm_1'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_1_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_2_TIC_TIC" c_CasADi__norm_2_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-norm_2''
-  :: SXMatrix -> IO SXMatrix
-norm_2'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_2_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_inf_TIC_TIC" c_CasADi__norm_inf_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-norm_inf''
-  :: SXMatrix -> IO SXMatrix
-norm_inf'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_inf_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_F_TIC_TIC" c_CasADi__norm_F_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-norm_F''
-  :: SXMatrix -> IO SXMatrix
-norm_F'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_F_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__qr_TIC_TIC" c_CasADi__qr_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-qr''
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-qr'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__qr_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nullspace_TIC_TIC" c_CasADi__nullspace_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-nullspace''
-  :: SXMatrix -> IO SXMatrix
-nullspace'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nullspace_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__solve_TIC_TIC" c_CasADi__solve_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-solve''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-solve'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__solve_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__pinv_TIC_TIC" c_CasADi__pinv_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-pinv''
-  :: SXMatrix -> IO SXMatrix
-pinv'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__pinv_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isZero_TIC_TIC" c_CasADi__isZero_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isZero''
-  :: SXMatrix -> IO Bool
-isZero'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isZero_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isOne_TIC_TIC" c_CasADi__isOne_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isOne''
-  :: SXMatrix -> IO Bool
-isOne'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isOne_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isMinusOne_TIC_TIC" c_CasADi__isMinusOne_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isMinusOne''
-  :: SXMatrix -> IO Bool
-isMinusOne'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isMinusOne_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isIdentity_TIC_TIC" c_CasADi__isIdentity_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isIdentity''
-  :: SXMatrix -> IO Bool
-isIdentity'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isIdentity_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nnz_TIC_TIC" c_CasADi__nnz_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-nnz''
-  :: SXMatrix -> IO Int
-nnz'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nnz_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nnz_sym_TIC_TIC" c_CasADi__nnz_sym_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-nnz_sym''
-  :: SXMatrix -> IO Int
-nnz_sym'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nnz_sym_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isEqual_TIC_TIC" c_CasADi__isEqual_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO CInt
-isEqual''
-  :: SXMatrix -> SXMatrix -> IO Bool
-isEqual'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__isEqual_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__repmat_TIC_TIC" c_CasADi__repmat_TIC_TIC
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO (Ptr SXMatrix')
-repmat''
-  :: SXMatrix -> Int -> Int -> IO SXMatrix
-repmat'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__repmat_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSparseTriplet_TIC_TIC" c_CasADi__getSparseTriplet_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr (CppVec (Ptr (CppVec CInt))))
-getSparseTriplet''
-  :: SXMatrix -> IO (Vector (Vector Int))
-getSparseTriplet'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSparseTriplet_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__unite_TIC_TIC" c_CasADi__unite_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-unite''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-unite'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__unite_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumCols_TIC_TIC" c_CasADi__sumCols_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-sumCols''
-  :: SXMatrix -> IO SXMatrix
-sumCols'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumCols_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumRows_TIC_TIC" c_CasADi__sumRows_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-sumRows''
-  :: SXMatrix -> IO SXMatrix
-sumRows'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumRows_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumAll_TIC_TIC" c_CasADi__sumAll_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-sumAll''
-  :: SXMatrix -> IO SXMatrix
-sumAll'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumAll_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trace_TIC_TIC" c_CasADi__trace_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SX')
-trace''
-  :: SXMatrix -> IO SX
-trace'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trace_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeDense_TIC_TIC" c_CasADi__makeDense_TIC_TIC
-  :: Ptr SXMatrix' -> IO ()
-makeDense''
-  :: SXMatrix -> IO ()
-makeDense'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__makeDense_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__densify_TIC_TIC" c_CasADi__densify_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-densify''
-  :: SXMatrix -> IO SXMatrix
-densify'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__densify_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeSparse_TIC_TIC_TIC_TIC" c_CasADi__makeSparse_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CDouble -> IO ()
-makeSparse''''
-  :: SXMatrix -> Double -> IO ()
-makeSparse'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__makeSparse_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeSparse_TIC_TIC_TIC_TIC_TIC" c_CasADi__makeSparse_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO ()
-makeSparse'''''
-  :: SXMatrix -> IO ()
-makeSparse''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__makeSparse_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__hasNonStructuralZeros_TIC_TIC" c_CasADi__hasNonStructuralZeros_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-hasNonStructuralZeros''
-  :: SXMatrix -> IO Bool
-hasNonStructuralZeros'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__hasNonStructuralZeros_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__diag_TIC_TIC" c_CasADi__diag_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-diag''
-  :: SXMatrix -> IO SXMatrix
-diag'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__diag_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blkdiag_TIC_TIC" c_CasADi__blkdiag_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-blkdiag''
-  :: Vector SXMatrix -> IO SXMatrix
-blkdiag'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blkdiag_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__polyval_TIC_TIC" c_CasADi__polyval_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-polyval''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-polyval'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__polyval_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC_TIC_TIC" c_CasADi__addMultiple_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> CInt -> IO ()
-addMultiple''''
-  :: SXMatrix -> Vector SX -> Vector SX -> Bool -> IO ()
-addMultiple'''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__addMultiple_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC_TIC_TIC_TIC" c_CasADi__addMultiple_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO ()
-addMultiple'''''
-  :: SXMatrix -> Vector SX -> Vector SX -> IO ()
-addMultiple''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__addMultiple_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__veccat_TIC_TIC" c_CasADi__veccat_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-veccat''
-  :: Vector SXMatrix -> IO SXMatrix
-veccat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__veccat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vecNZcat_TIC_TIC" c_CasADi__vecNZcat_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-vecNZcat''
-  :: Vector SXMatrix -> IO SXMatrix
-vecNZcat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vecNZcat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattencat_TIC_TIC" c_CasADi__flattencat_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-flattencat''
-  :: Vector SXMatrix -> IO SXMatrix
-flattencat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattencat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattenNZcat_TIC_TIC" c_CasADi__flattenNZcat_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr SXMatrix')
-flattenNZcat''
-  :: Vector SXMatrix -> IO SXMatrix
-flattenNZcat'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattenNZcat_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__project_TIC_TIC" c_CasADi__project_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-project''
-  :: SXMatrix -> CRSSparsity -> IO SXMatrix
-project'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__project_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sprank_TIC_TIC" c_CasADi__sprank_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-sprank''
-  :: SXMatrix -> IO Int
-sprank'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sprank_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__kron_TIC_TIC" c_CasADi__kron_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-kron''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-kron'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__kron_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sparse_TIC_TIC_TIC_TIC" c_CasADi__sparse_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> CDouble -> IO (Ptr SXMatrix')
-sparse''''
-  :: SXMatrix -> Double -> IO SXMatrix
-sparse'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sparse_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sparse_TIC_TIC_TIC_TIC_TIC" c_CasADi__sparse_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-sparse'''''
-  :: SXMatrix -> IO SXMatrix
-sparse''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sparse_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__full_TIC_TIC" c_CasADi__full_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-full''
-  :: SXMatrix -> IO SXMatrix
-full'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__full_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_and" c_CasADi__logic_and
-  :: CInt -> CInt -> IO CInt
-{-|
->Logical and, returns (an expression evaluating to) 1 if both expressions are
->nonzero and 0 otherwise.
--}
-logic_and
-  :: Int -> Int -> IO Int
-logic_and x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_and x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_or" c_CasADi__logic_or
-  :: CInt -> CInt -> IO CInt
-{-|
->Logical or, returns (an expression evaluating to) 1 if at least one
->expression is nonzero and 0 otherwise.
--}
-logic_or
-  :: Int -> Int -> IO Int
-logic_or x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_or x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_not" c_CasADi__logic_not
-  :: CInt -> IO CInt
-{-|
->Logical not, returns (an expression evaluating to) 1 if expression is zero
->and 0 otherwise.
--}
-logic_not
-  :: Int -> IO Int
-logic_not x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__logic_not x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_and_TIC" c_CasADi__logic_and_TIC
-  :: CDouble -> CDouble -> IO CDouble
-logic_and'
-  :: Double -> Double -> IO Double
-logic_and' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_and_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_or_TIC" c_CasADi__logic_or_TIC
-  :: CDouble -> CDouble -> IO CDouble
-logic_or'
-  :: Double -> Double -> IO Double
-logic_or' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_or_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_not_TIC" c_CasADi__logic_not_TIC
-  :: CDouble -> IO CDouble
-logic_not'
-  :: Double -> IO Double
-logic_not' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__logic_not_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-logic_and'''
-  :: DMatrix -> DMatrix -> IO DMatrix
-logic_and''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_and_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC
-  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-logic_or'''
-  :: DMatrix -> DMatrix -> IO DMatrix
-logic_or''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_or_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr DMatrix')
-logic_not'''
-  :: DMatrix -> IO DMatrix
-logic_not''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__logic_not_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-logic_and''''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-logic_and'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_and_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-logic_or''''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-logic_or'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_or_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-logic_not''''
-  :: SXMatrix -> IO SXMatrix
-logic_not'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__logic_not_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-logic_and'''''
-  :: MX -> MX -> IO MX
-logic_and''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-logic_or'''''
-  :: MX -> MX -> IO MX
-logic_or''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-logic_not'''''
-  :: MX -> IO MX
-logic_not''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-logic_and''''''
-  :: SX -> SX -> IO SX
-logic_and'''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
-logic_or''''''
-  :: SX -> SX -> IO SX
-logic_or'''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SX' -> IO (Ptr SX')
-logic_not''''''
-  :: SX -> IO SX
-logic_not'''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__hash_combine" c_CasADi__hash_combine
-  :: CSize -> Ptr (CppVec CInt) -> IO ()
-{-|
->Generate a hash value incrementally (function taken from boost)
--}
-hash_combine
-  :: CSize -> Vector Int -> IO ()
-hash_combine x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__hash_combine x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__hash_sparsity" c_CasADi__hash_sparsity
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO CSize
-{-|
->Hash a sparsity pattern.
--}
-hash_sparsity
-  :: Int -> Int -> Vector Int -> Vector Int -> IO CSize
-hash_sparsity x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__hash_sparsity x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_dense" c_CasADi__sp_dense
-  :: CInt -> CInt -> IO (Ptr CRSSparsity')
-{-|
->Create a dense rectangular sparsity pattern.
--}
-sp_dense
-  :: Int -> Int -> IO CRSSparsity
-sp_dense x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sp_dense x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_dense_TIC" c_CasADi__sp_dense_TIC
-  :: CInt -> IO (Ptr CRSSparsity')
-sp_dense'
-  :: Int -> IO CRSSparsity
-sp_dense' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sp_dense_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_sparse" c_CasADi__sp_sparse
-  :: CInt -> CInt -> IO (Ptr CRSSparsity')
-{-|
->>  CRSSparsity CasADi::sp_sparse(int n, int m=1)
->------------------------------------------------------------------------
->
->Create a sparse rectangular sparsity pattern.
->
->>  CRSSparsity CasADi::sp_sparse(const std::pair< int, int > &nm)
->------------------------------------------------------------------------
->
->Create a dense rectangular sparsity pattern.
--}
-sp_sparse
-  :: Int -> Int -> IO CRSSparsity
-sp_sparse x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sp_sparse x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_sparse_TIC" c_CasADi__sp_sparse_TIC
-  :: CInt -> IO (Ptr CRSSparsity')
-sp_sparse'
-  :: Int -> IO CRSSparsity
-sp_sparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sp_sparse_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_unit" c_CasADi__sp_unit
-  :: CInt -> CInt -> IO (Ptr CRSSparsity')
-{-|
->Create the sparsity pattern for a unit vector of length n and a nonzero on
->position el.
--}
-sp_unit
-  :: Int -> Int -> IO CRSSparsity
-sp_unit x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sp_unit x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_tril" c_CasADi__sp_tril
-  :: CInt -> IO (Ptr CRSSparsity')
-{-|
->Create a lower triangular square sparsity pattern.
->
->See:   lowerSparsity
--}
-sp_tril
-  :: Int -> IO CRSSparsity
-sp_tril x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sp_tril x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_diag" c_CasADi__sp_diag
-  :: CInt -> IO (Ptr CRSSparsity')
-{-|
->Create diagonal square sparsity pattern.
--}
-sp_diag
-  :: Int -> IO CRSSparsity
-sp_diag x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sp_diag x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_band" c_CasADi__sp_band
-  :: CInt -> CInt -> IO (Ptr CRSSparsity')
-{-|
->Create a single band in a square sparsity pattern.
->
->sp_band(n,0) is equivalent to sp_diag(n)  sp_band(n,-1) has a band below the
->diagonal
->
->Parameters:
->-----------
->
->p:  indicate
--}
-sp_band
-  :: Int -> Int -> IO CRSSparsity
-sp_band x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sp_band x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_banded" c_CasADi__sp_banded
-  :: CInt -> CInt -> IO (Ptr CRSSparsity')
-{-|
->Create banded square sparsity pattern.
->
->sp_band(n,0) is equivalent to sp_diag(n)  sp_band(n,1) is tri-diagonal
->matrix
--}
-sp_banded
-  :: Int -> Int -> IO CRSSparsity
-sp_banded x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__sp_banded x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_rowcol" c_CasADi__sp_rowcol
-  :: Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> CInt -> IO (Ptr CRSSparsity')
-{-|
->Construct a block sparsity pattern from (row,col) vectors.
--}
-sp_rowcol
-  :: Vector Int -> Vector Int -> Int -> Int -> IO CRSSparsity
-sp_rowcol x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__sp_rowcol x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getNZDense" c_CasADi__getNZDense
-  :: Ptr CRSSparsity' -> IO (Ptr (CppVec CInt))
-{-|
->Get the indices of all non-zero elements as they would appear in a Dense
->matrix A : DenseMatrix 4 x 3 B : SparseMatrix 4 x 3 , 5 structural non-
->zeros.
->
->k = getNZDense(A) A[k] will contain the elements of A that are non- zero in
->B
--}
-getNZDense
-  :: CRSSparsity -> IO (Vector Int)
-getNZDense x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getNZDense x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> CInt -> CInt -> IO (Ptr CRSSparsity')
-reshape''''''
-  :: CRSSparsity -> Int -> Int -> IO CRSSparsity
-reshape'''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vec_TIC_TIC_TIC" c_CasADi__vec_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-vec'''
-  :: CRSSparsity -> IO CRSSparsity
-vec''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vec_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trans_TIC_TIC_TIC" c_CasADi__trans_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-trans'''
-  :: CRSSparsity -> IO CRSSparsity
-trans''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trans_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__lowerSparsity" c_CasADi__lowerSparsity
-  :: Ptr CRSSparsity' -> CInt -> IO (Ptr CRSSparsity')
-{-|
->Return the lower part of the sparsity pattern.
->
->Parameters:
->-----------
->
->includeDiagonal:  specify wether the diagonal must be part of the result
->
->See:   sp_tril
--}
-lowerSparsity
-  :: CRSSparsity -> Bool -> IO CRSSparsity
-lowerSparsity x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__lowerSparsity x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__lowerSparsity_TIC" c_CasADi__lowerSparsity_TIC
-  :: Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-lowerSparsity'
-  :: CRSSparsity -> IO CRSSparsity
-lowerSparsity' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__lowerSparsity_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__lowerNZ" c_CasADi__lowerNZ
-  :: Ptr CRSSparsity' -> IO (Ptr (CppVec CInt))
-{-|
->Return the non-zero entries that make up the lower part of the provided
->matrix.
--}
-lowerNZ
-  :: CRSSparsity -> IO (Vector Int)
-lowerNZ x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__lowerNZ x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_triplet" c_CasADi__sp_triplet
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> IO (Ptr CRSSparsity')
-{-|
->>  CRSSparsity CasADi::sp_triplet(int n, int m, const std::vector< int > &row, const std::vector< int > &col, std::vector< int > &mapping, bool invert_mapping=false)
->------------------------------------------------------------------------
->
->Create a sparsity pattern given the nonzeros in sparse triplet form.
->
->>  CRSSparsity CasADi::sp_triplet(int n, int m, const std::vector< int > &row, const std::vector< int > &col)
->------------------------------------------------------------------------
->
->Create a sparsity pattern given the nonzeros in sparse triplet form (no
->nonzero mapping) columns_are_sorted==true means that the column entries
->already in increasing order for each row and without any duplicates.
--}
-sp_triplet
-  :: Int -> Int -> Vector Int -> Vector Int -> Vector Int -> Bool -> IO CRSSparsity
-sp_triplet x0 x1 x2 x3 x4 x5 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  withMarshal x5 $ \x5' ->
-  c_CasADi__sp_triplet x0' x1' x2' x3' x4' x5' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_triplet_TIC" c_CasADi__sp_triplet_TIC
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr CRSSparsity')
-sp_triplet'
-  :: Int -> Int -> Vector Int -> Vector Int -> Vector Int -> IO CRSSparsity
-sp_triplet' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__sp_triplet_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_triplet_TIC_TIC" c_CasADi__sp_triplet_TIC_TIC
-  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr CRSSparsity')
-sp_triplet''
-  :: Int -> Int -> Vector Int -> Vector Int -> IO CRSSparsity
-sp_triplet'' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__sp_triplet_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr CRSSparsity' -> Ptr CRSSparsity' -> IO (Ptr CRSSparsity')
-mul'''''''''
-  :: CRSSparsity -> CRSSparsity -> IO CRSSparsity
-mul''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertcat_TIC_TIC_TIC" c_CasADi__vertcat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr CRSSparsity')) -> IO (Ptr CRSSparsity')
-vertcat'''
-  :: Vector CRSSparsity -> IO CRSSparsity
-vertcat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertcat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzcat_TIC_TIC_TIC" c_CasADi__horzcat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr CRSSparsity')) -> IO (Ptr CRSSparsity')
-horzcat'''
-  :: Vector CRSSparsity -> IO CRSSparsity
-horzcat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzcat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blkdiag_TIC_TIC_TIC" c_CasADi__blkdiag_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr CRSSparsity')) -> IO (Ptr CRSSparsity')
-blkdiag'''
-  :: Vector CRSSparsity -> IO CRSSparsity
-blkdiag''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blkdiag_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_compress" c_CasADi__sp_compress
-  :: Ptr CRSSparsity' -> IO (Ptr (CppVec CInt))
-{-|
->>  std::vector< int > CasADi::sp_compress(const CRSSparsity &a)
->------------------------------------------------------------------------
->
->Represent a sparsity pattern as an array of integers, the most compact way
->of representing a sparsity pattern The format: The first two entries are the
->number of rows (nrow) and columns (ncol) The next nrow+1 entries are the row
->offsets (rowind). Note that the last element rowind[nrow] gives the number
->of nonzeros The last rowind[nrow] entries are the column indices.
->
->Compress a sparsity pattern
->
->>  CRSSparsity CasADi::sp_compress(const std::vector< int > &v)
->------------------------------------------------------------------------
->
->Decompress a sparsity pattern.
->
->>  CRSSparsity CasADi::sp_compress(const int *v)
->------------------------------------------------------------------------
->
->Decompress a sparsity pattern (array version)
--}
-sp_compress
-  :: CRSSparsity -> IO (Vector Int)
-sp_compress x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sp_compress x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sp_compress_TIC" c_CasADi__sp_compress_TIC
-  :: Ptr (CppVec CInt) -> IO (Ptr CRSSparsity')
-sp_compress'
-  :: Vector Int -> IO CRSSparsity
-sp_compress' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sp_compress_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__rank" c_CasADi__rank
-  :: Ptr CRSSparsity' -> IO CInt
-{-|
->Obtain the structural rank of a sparsity-pattern.
--}
-rank
-  :: CRSSparsity -> IO Int
-rank x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__rank x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isSingular" c_CasADi__isSingular
-  :: Ptr CRSSparsity' -> IO CInt
-{-|
->Check whether the sparsity-pattern inidcates structural singularity.
--}
-isSingular
-  :: CRSSparsity -> IO Bool
-isSingular x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isSingular x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym" c_CasADi__ssym
-  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr SXMatrix')
-{-|
->>  SXMatrix CasADi::ssym(const std::string &name, int n=1, int m=1)
->------------------------------------------------------------------------
->
->Construct symbolic arrays and variables using CasADi's SX expression graph
->representation The "ssym" function is intended to work in a similar way as
->"sym" used in the Symbolic Toolbox for Matlab but instead creating an
->SXMatrix object. The SX expression graph has much less overhead, but is also
->more restricted than the alternative MX expression graph.
->
->Construct symbolic arrays and variables using CasADi's more restricted, but
->more efficient SX expression graphCreate an n-by-m matrix with symbolic
->variables
->
->>  SXMatrix CasADi::ssym(const std::string &name, const std::pair< int, int > &nm)
->------------------------------------------------------------------------
->
->Create an n-by-m matrix with symbolic variables.
->
->>  SXMatrix CasADi::ssym(const std::string &name, const CRSSparsity &sp)
->------------------------------------------------------------------------
->
->Create an matrix with symbolic variables, given a sparsity pattern.
->
->>  std::vector< SXMatrix > CasADi::ssym(const std::string &name, const CRSSparsity &sp, int p)
->------------------------------------------------------------------------
->
->Create a vector of length p with with matrices with symbolic variables of
->given sparsity.
->
->>  std::vector< std::vector< SXMatrix > > CasADi::ssym(const std::string &name, const CRSSparsity &sp, int p, int r)
->------------------------------------------------------------------------
->
->Create a vector of length r of vectors of length p with matrices with
->symbolic variables with given sparsity.
->
->>  std::vector< SXMatrix > CasADi::ssym(const std::string &name, int n, int m, int p)
->------------------------------------------------------------------------
->
->Create a vector of length p with n-by-m matrices with symbolic variables.
->
->>  std::vector< std::vector< SXMatrix > > CasADi::ssym(const std::string &name, int n, int m, int p, int r)
->------------------------------------------------------------------------
->
->Create a vector of length r of vectors of length p with n-by-m matrices with
->symbolic variables.
->
->>  SXMatrix CasADi::ssym(const Matrix< double > &x)
->------------------------------------------------------------------------
->
->Create a symbolic matrix out of a numeric one.
--}
-ssym
-  :: String -> Int -> Int -> IO SXMatrix
-ssym x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__ssym x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC" c_CasADi__ssym_TIC
-  :: Ptr StdString' -> CInt -> IO (Ptr SXMatrix')
-ssym'
-  :: String -> Int -> IO SXMatrix
-ssym' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__ssym_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC" c_CasADi__ssym_TIC_TIC
-  :: Ptr StdString' -> IO (Ptr SXMatrix')
-ssym''
-  :: String -> IO SXMatrix
-ssym'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__ssym_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC_TIC" c_CasADi__ssym_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> CInt -> IO (Ptr (CppVec (Ptr SXMatrix')))
-ssym'''
-  :: String -> CRSSparsity -> Int -> IO (Vector SXMatrix)
-ssym''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__ssym_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC_TIC_TIC" c_CasADi__ssym_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr SXMatrix')))
-ssym''''
-  :: String -> Int -> Int -> Int -> IO (Vector SXMatrix)
-ssym'''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__ssym_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC_TIC_TIC_TIC" c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))))
-ssym'''''
-  :: String -> CRSSparsity -> Int -> Int -> IO (Vector (Vector SXMatrix))
-ssym''''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SXMatrix')))))
-ssym''''''
-  :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector SXMatrix))
-ssym'''''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> IO (Ptr SXMatrix')
-ssym'''''''
-  :: String -> CRSSparsity -> IO SXMatrix
-ssym''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr SXMatrix')
-ssym''''''''
-  :: DMatrix -> IO SXMatrix
-ssym'''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__ssym_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__expand" c_CasADi__expand
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-{-|
->Expand the expression as a weighted sum (with constant weights)
--}
-expand
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-expand x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__expand x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__simplify" c_CasADi__simplify
-  :: Ptr SX' -> IO ()
-{-|
->>  void CasADi::simplify(MX &ex)
->
->>  void CasADi::simplify(SXMatrix &ex)
->------------------------------------------------------------------------
->
->Simplify an expression.
->
->>  void CasADi::simplify(SX &ex)
->------------------------------------------------------------------------
->
->Simplify the expression: formulates the expression as and eliminates terms.
--}
-simplify
-  :: SX -> IO ()
-simplify x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__simplify x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__pw_const" c_CasADi__pw_const
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Create a piecewise constant function Create a piecewise constant function
->with n=val.size() intervals.
->
->Inputs:
->
->Parameters:
->-----------
->
->t:  a scalar variable (e.g. time)
->
->tval:  vector with the discrete values of t at the interval transitions
->(length n-1)
->
->val:  vector with the value of the function for each interval (length n)
--}
-pw_const
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-pw_const x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__pw_const x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__pw_lin" c_CasADi__pw_lin
-  :: Ptr SX' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->t a scalar variable (e.g. time)
->
->Create a piecewise linear function Create a piecewise linear function:
->
->Inputs: tval vector with the the discrete values of t (monotonically
->increasing) val vector with the corresponding function values (same length
->as tval)
--}
-pw_lin
-  :: SX -> SXMatrix -> SXMatrix -> IO SXMatrix
-pw_lin x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__pw_lin x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__if_else" c_CasADi__if_else
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->>  MX CasADi::if_else(const MX &cond, const MX &if_true, const MX &if_false)
->------------------------------------------------------------------------
->
->Branching on MX nodes Ternary operator, "cond ? if_true : if_false".
--}
-if_else
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-if_else x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__if_else x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__heaviside" c_CasADi__heaviside
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Heaviside function.
->
->\\[ \\begin{cases} H(x) = 0 & x<0 \\\\ H(x) = 1/2 & x=0 \\\\
->H(x) = 1 & x>0 \\\\ \\end{cases} \\]
--}
-heaviside
-  :: SXMatrix -> IO SXMatrix
-heaviside x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__heaviside x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__rectangle" c_CasADi__rectangle
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->rectangle function
->
->\\[ \\begin{cases} \\Pi(x) = 1 & |x| < 1/2 \\\\ \\Pi(x) = 1/2 &
->|x| = 1/2 \\\\ \\Pi(x) = 0 & |x| > 1/2 \\\\ \\end{cases} \\]
->
->Also called: gate function, block function, band function, pulse function,
->window function
--}
-rectangle
-  :: SXMatrix -> IO SXMatrix
-rectangle x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__rectangle x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__triangle" c_CasADi__triangle
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->triangle function
->
->\\[ \\begin{cases} \\Lambda(x) = 0 & |x| >= 1 \\\\ \\Lambda(x) =
->1-|x| & |x| < 1 \\end{cases} \\]
--}
-triangle
-  :: SXMatrix -> IO SXMatrix
-triangle x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__triangle x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__ramp" c_CasADi__ramp
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->ramp function
->
->\\[ \\begin{cases} R(x) = 0 & x <= 1 \\\\ R(x) = x & x > 1 \\\\
->\\end{cases} \\]
->
->Also called: slope function
--}
-ramp
-  :: SXMatrix -> IO SXMatrix
-ramp x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__ramp x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__gauss_quadrature" c_CasADi__gauss_quadrature
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Integrate f from a to b using Gaussian quadrature with n points.
--}
-gauss_quadrature
-  :: SXMatrix -> SXMatrix -> SXMatrix -> SXMatrix -> Int -> SXMatrix -> IO SXMatrix
-gauss_quadrature x0 x1 x2 x3 x4 x5 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  withMarshal x5 $ \x5' ->
-  c_CasADi__gauss_quadrature x0' x1' x2' x3' x4' x5' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__gauss_quadrature_TIC" c_CasADi__gauss_quadrature_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO (Ptr SXMatrix')
-gauss_quadrature'
-  :: SXMatrix -> SXMatrix -> SXMatrix -> SXMatrix -> Int -> IO SXMatrix
-gauss_quadrature' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__gauss_quadrature_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__gauss_quadrature_TIC_TIC" c_CasADi__gauss_quadrature_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-gauss_quadrature''
-  :: SXMatrix -> SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-gauss_quadrature'' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__gauss_quadrature_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__simplify_TIC" c_CasADi__simplify_TIC
-  :: Ptr SXMatrix' -> IO ()
-simplify'
-  :: SXMatrix -> IO ()
-simplify' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__simplify_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__compress" c_CasADi__compress
-  :: Ptr SXMatrix' -> CInt -> IO ()
-{-|
->Remove identical calculations.
--}
-compress
-  :: SXMatrix -> Int -> IO ()
-compress x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__compress x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__compress_TIC" c_CasADi__compress_TIC
-  :: Ptr SXMatrix' -> IO ()
-compress'
-  :: SXMatrix -> IO ()
-compress' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__compress_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substitute" c_CasADi__substitute
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->>  MX CasADi::substitute(const MX &ex, const MX &v, const MX &vdef)
->
->>  SXMatrix CasADi::substitute(const SXMatrix &ex, const SXMatrix &v, const SXMatrix &vdef)
->------------------------------------------------------------------------
->
->Substitute variable v with expression vdef in an expression ex.
->
->>  std::vector< MX > CasADi::substitute(const std::vector< MX > &ex, const std::vector< MX > &v, const std::vector< MX > &vdef)
->
->>  std::vector< SXMatrix > CasADi::substitute(const std::vector< SXMatrix > &ex, const std::vector< SXMatrix > &v, const std::vector< SXMatrix > &vdef)
->------------------------------------------------------------------------
->
->Substitute variable var with expression expr in multiple expressions.
--}
-substitute
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-substitute x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substitute x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substitute_TIC" c_CasADi__substitute_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> IO (Ptr (CppVec (Ptr SXMatrix')))
-substitute'
-  :: Vector SXMatrix -> Vector SXMatrix -> Vector SXMatrix -> IO (Vector SXMatrix)
-substitute' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substitute_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace" c_CasADi__substituteInPlace
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO ()
-{-|
->>  void CasADi::substituteInPlace(const std::vector< MX > &v, std::vector< MX > &vdef, bool reverse=false)
->------------------------------------------------------------------------
->
->Inplace substitution Substitute variables v out of the expressions vdef
->sequentially.
->
->>  void CasADi::substituteInPlace(const std::vector< MX > &v, std::vector< MX > &vdef, std::vector< MX > &ex, bool reverse=false)
->------------------------------------------------------------------------
->
->Inplace substitution with piggyback expressions Substitute variables v out
->of the expressions vdef sequentially, as well as out of a number of other
->expressions piggyback.
->
->>  void CasADi::substituteInPlace(const SXMatrix &v, SXMatrix &vdef, bool reverse=false)
->------------------------------------------------------------------------
->
->Substitute variable var out of or into an expression expr.
->
->>  void CasADi::substituteInPlace(const SXMatrix &v, SXMatrix &vdef, std::vector< SXMatrix > &ex, bool reverse=false)
->------------------------------------------------------------------------
->
->Substitute variable var out of or into an expression expr, with an arbitrary
->number of other expressions piggyback.
->
->>  void CasADi::substituteInPlace(const std::vector< SXMatrix > &v, std::vector< SXMatrix > &vdef, std::vector< SXMatrix > &ex, bool reverse=false)
->------------------------------------------------------------------------
->
->Substitute variable var out of or into an expression expr, with an arbitrary
->number of other expressions piggyback (vector version)
--}
-substituteInPlace
-  :: SXMatrix -> SXMatrix -> Bool -> IO ()
-substituteInPlace x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substituteInPlace x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC" c_CasADi__substituteInPlace_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-substituteInPlace'
-  :: SXMatrix -> SXMatrix -> IO ()
-substituteInPlace' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__substituteInPlace_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr (CppVec (Ptr SXMatrix')) -> CInt -> IO ()
-substituteInPlace''
-  :: SXMatrix -> SXMatrix -> Vector SXMatrix -> Bool -> IO ()
-substituteInPlace'' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__substituteInPlace_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr (CppVec (Ptr SXMatrix')) -> IO ()
-substituteInPlace'''
-  :: SXMatrix -> SXMatrix -> Vector SXMatrix -> IO ()
-substituteInPlace''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> CInt -> IO ()
-substituteInPlace''''
-  :: Vector SXMatrix -> Vector SXMatrix -> Vector SXMatrix -> Bool -> IO ()
-substituteInPlace'''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> Ptr (CppVec (Ptr SXMatrix')) -> IO ()
-substituteInPlace'''''
-  :: Vector SXMatrix -> Vector SXMatrix -> Vector SXMatrix -> IO ()
-substituteInPlace''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__evalf" c_CasADi__evalf
-  :: Ptr SXMatrix' -> IO (Ptr DMatrix')
-{-|
->>  Matrix< double > CasADi::evalf(const SXMatrix &ex, const SXMatrix &v, const Matrix< double > &vdef)
->------------------------------------------------------------------------
->
->Substitute variable v with value vdef in an expression ex, and evaluate
->numerically Note: this is not efficient. For critical parts (loops) of your
->code, always use SXFunction.
->
->See:   numSample1D
->
->>  Matrix< double > CasADi::evalf(const SXMatrix &ex)
->------------------------------------------------------------------------
->
->Evaluate an SX graph numerically Note: this is not efficient. For critical
->parts (loops) of your code, always use SXFunction.
--}
-evalf
-  :: SXMatrix -> IO DMatrix
-evalf x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__evalf x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__evalf_TIC" c_CasADi__evalf_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-evalf'
-  :: SXMatrix -> SXMatrix -> DMatrix -> IO DMatrix
-evalf' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__evalf_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isRegular_TIC_TIC_TIC_TIC" c_CasADi__isRegular_TIC_TIC_TIC_TIC
-  :: Ptr SX' -> IO CInt
-isRegular''''
-  :: SX -> IO Bool
-isRegular'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isRegular_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isRegular_TIC_TIC_TIC_TIC_TIC" c_CasADi__isRegular_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-isRegular'''''
-  :: SXMatrix -> IO Bool
-isRegular''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isRegular_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__spy" c_CasADi__spy
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Get the sparsity pattern of a matrix.
--}
-spy
-  :: SXMatrix -> IO SXMatrix
-spy x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__spy x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__dependsOn" c_CasADi__dependsOn
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO CInt
-{-|
->Check dependency: very inefficient algorithm.
--}
-dependsOn
-  :: SXMatrix -> SXMatrix -> IO Bool
-dependsOn x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__dependsOn x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSymbols" c_CasADi__getSymbols
-  :: Ptr SXMatrix' -> IO (Ptr (CppVec (Ptr SX')))
-{-|
->>  std::vector< MX > CasADi::getSymbols(const MX &e)
->
->>  std::vector< MX > CasADi::getSymbols(const std::vector< MX > &e)
->------------------------------------------------------------------------
->
->Get all symbols contained in the supplied expression Get all symbols on
->which the supplied expression depends.
->
->See:   MXFunction::getFree()
->
->>  std::vector< SX > CasADi::getSymbols(const SXMatrix &e)
->------------------------------------------------------------------------
->
->Get all symbols contained in the supplied expression Get all symbols on
->which the supplied expression depends.
->
->See:   SXFunction::getFree()
--}
-getSymbols
-  :: SXMatrix -> IO (Vector SX)
-getSymbols x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSymbols x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isSmooth" c_CasADi__isSmooth
-  :: Ptr SXMatrix' -> IO CInt
-{-|
->check if smooth
--}
-isSmooth
-  :: SXMatrix -> IO Bool
-isSmooth x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isSmooth x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isSymbolic" c_CasADi__isSymbolic
-  :: Ptr SXMatrix' -> IO CInt
-{-|
->>  bool CasADi::isSymbolic(const MX &ex)
->------------------------------------------------------------------------
->
->check if symbolic
->
->>  bool CasADi::isSymbolic(const SXMatrix &ex)
->------------------------------------------------------------------------
->
->check if symbolic (Dense)
->
->Sparse matrices invariable return false
--}
-isSymbolic
-  :: SXMatrix -> IO Bool
-isSymbolic x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isSymbolic x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isSymbolicSparse" c_CasADi__isSymbolicSparse
-  :: Ptr SXMatrix' -> IO CInt
-{-|
->>  bool CasADi::isSymbolicSparse(const MX &ex)
->------------------------------------------------------------------------
->
->check if all nonzeros are symbolic (this function is currently identical to
->isSymbolic)
->
->>  bool CasADi::isSymbolicSparse(const SXMatrix &ex)
->------------------------------------------------------------------------
->
->check if symbolic
->
->Sparse matrices can return true if all non-zero elements are symbolic
--}
-isSymbolicSparse
-  :: SXMatrix -> IO Bool
-isSymbolicSparse x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isSymbolicSparse x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__jacobian" c_CasADi__jacobian
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->>  MX CasADi::jacobian(const MX &ex, const MX &arg)
->------------------------------------------------------------------------
->
->Calculate jacobian via source code transformation.
->
->Uses CasADi::MXFunction::jac
->
->>  SXMatrix CasADi::jacobian(const SXMatrix &ex, const SXMatrix &arg)
->------------------------------------------------------------------------
->
->Calculate jacobian via source code transformation.
->
->Uses CasADi::SXFunction::jac
--}
-jacobian
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-jacobian x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__jacobian x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__gradient" c_CasADi__gradient
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->>  MX CasADi::gradient(const MX &ex, const MX &arg)
->------------------------------------------------------------------------
->
->Calculate jacobian via source code transformation.
->
->Uses CasADi::MXFunction::jac
->
->>  SXMatrix CasADi::gradient(const SXMatrix &ex, const SXMatrix &arg)
->------------------------------------------------------------------------
->
->Calculate jacobian via source code transformation.
->
->Uses CasADi::SXFunction::jac
--}
-gradient
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-gradient x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__gradient x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__tangent" c_CasADi__tangent
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->>  MX CasADi::tangent(const MX &ex, const MX &arg)
->------------------------------------------------------------------------
->
->Calculate jacobian via source code transformation.
->
->Uses CasADi::MXFunction::jac
->
->>  SXMatrix CasADi::tangent(const SXMatrix &ex, const SXMatrix &arg)
->------------------------------------------------------------------------
->
->Calculate jacobian via source code transformation.
->
->Uses CasADi::SXFunction::jac
--}
-tangent
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-tangent x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__tangent x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__hessian" c_CasADi__hessian
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Calculate jacobian via source code transformation.
->
->Uses CasADi::SXFunction::jac
--}
-hessian
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-hessian x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__hessian x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__hessian_TIC" c_CasADi__hessian_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO ()
-hessian'
-  :: SXMatrix -> SXMatrix -> SXMatrix -> SXMatrix -> IO ()
-hessian' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__hessian_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__jacobianTimesVector" c_CasADi__jacobianTimesVector
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO (Ptr SXMatrix')
-{-|
->Calculate the Jacobian and multiply by a vector from the left This is
->equivalent to mul(jacobian(ex,arg),v) or mul(jacobian(ex,arg).T,v) for
->transpose_jacobian set to false and true respectively. If contrast to these
->expressions, it will use directional derivatives which is typically (but not
->necessarily) more efficient if the complete Jacobian is not needed and v has
->few columns.
--}
-jacobianTimesVector
-  :: SXMatrix -> SXMatrix -> SXMatrix -> Bool -> IO SXMatrix
-jacobianTimesVector x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__jacobianTimesVector x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__jacobianTimesVector_TIC" c_CasADi__jacobianTimesVector_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-jacobianTimesVector'
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-jacobianTimesVector' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__jacobianTimesVector_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getValue" c_CasADi__getValue
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO CDouble
-{-|
->>  double CasADi::getValue(const SXMatrix &ex, int i=0, int j=0)
->------------------------------------------------------------------------
->
->Obtain the values of a constant expression.
--}
-getValue
-  :: SXMatrix -> Int -> Int -> IO Double
-getValue x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__getValue x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getValue_TIC" c_CasADi__getValue_TIC
-  :: Ptr SXMatrix' -> CInt -> IO CDouble
-getValue'
-  :: SXMatrix -> Int -> IO Double
-getValue' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getValue_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getValue_TIC_TIC" c_CasADi__getValue_TIC_TIC
-  :: Ptr SXMatrix' -> IO CDouble
-getValue''
-  :: SXMatrix -> IO Double
-getValue'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getValue_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getIntValue" c_CasADi__getIntValue
-  :: Ptr SXMatrix' -> CInt -> CInt -> IO CInt
-getIntValue
-  :: SXMatrix -> Int -> Int -> IO Int
-getIntValue x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__getIntValue x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getIntValue_TIC" c_CasADi__getIntValue_TIC
-  :: Ptr SXMatrix' -> CInt -> IO CInt
-getIntValue'
-  :: SXMatrix -> Int -> IO Int
-getIntValue' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getIntValue_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getIntValue_TIC_TIC" c_CasADi__getIntValue_TIC_TIC
-  :: Ptr SXMatrix' -> IO CInt
-getIntValue''
-  :: SXMatrix -> IO Int
-getIntValue'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getIntValue_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__fill" c_CasADi__fill
-  :: Ptr SXMatrix' -> Ptr SX' -> IO ()
-{-|
->Fill the matrix with the value val, make empty sparse if zero.
--}
-fill
-  :: SXMatrix -> SX -> IO ()
-fill x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__fill x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__taylor" c_CasADi__taylor
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO (Ptr SXMatrix')
-{-|
->univariate taylor series expansion
->
->Calculate the taylor expansion of expression 'ex' up to order 'order' with
->repsect to variable 'x' around the point 'a'
->
->$(x)=f(a)+f'(a)(x-a)+f''(a)\\frac{(x-a)^2}{2!}+f'''(a)\\frac{(x-a)^3}{3!}+\\ldots$
->
->Example usage:>>   x
--}
-taylor
-  :: SXMatrix -> SXMatrix -> SXMatrix -> Int -> IO SXMatrix
-taylor x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__taylor x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__taylor_TIC" c_CasADi__taylor_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-taylor'
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-taylor' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__taylor_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__taylor_TIC_TIC" c_CasADi__taylor_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-taylor''
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-taylor'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__taylor_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mtaylor" c_CasADi__mtaylor
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> IO (Ptr SXMatrix')
-{-|
->>  SXMatrix CasADi::mtaylor(const SXMatrix &ex, const SXMatrix &x, const SXMatrix &a, int order=1)
->------------------------------------------------------------------------
->
->multivariate taylor series expansion
->
->Do taylor expansions until the aggregated order of a term is equal to
->'order'. The aggregated order of $x^n y^m$ equals $n+m$.
->
->>  SXMatrix CasADi::mtaylor(const SXMatrix &ex, const SXMatrix &x, const SXMatrix &a, int order, const std::vector< int > &order_contributions)
->------------------------------------------------------------------------
->
->multivariate taylor series expansion
->
->Do taylor expansions until the aggregated order of a term is equal to
->'order'. The aggregated order of $x^n y^m$ equals $n+m$.
->
->The argument order_contributions can denote how match each variable
->contributes to the aggregated order. If x=[x,y] and
->order_contributions=[1,2], then the aggregated order of $x^n y^m$ equals
->$1n+2m$.
->
->Example usage
->
->$ \\sin(b+a)+\\cos(b+a)(x-a)+\\cos(b+a)(y-b) $ $ y+x-(x^3+3y x^2+3 y^2
->x+y^3)/6 $ $ (-3 x^2 y-x^3)/6+y+x $
--}
-mtaylor
-  :: SXMatrix -> SXMatrix -> SXMatrix -> Int -> IO SXMatrix
-mtaylor x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__mtaylor x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mtaylor_TIC" c_CasADi__mtaylor_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-mtaylor'
-  :: SXMatrix -> SXMatrix -> SXMatrix -> IO SXMatrix
-mtaylor' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__mtaylor_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mtaylor_TIC_TIC" c_CasADi__mtaylor_TIC_TIC
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> Ptr SXMatrix' -> CInt -> Ptr (CppVec CInt) -> IO (Ptr SXMatrix')
-mtaylor''
-  :: SXMatrix -> SXMatrix -> SXMatrix -> Int -> Vector Int -> IO SXMatrix
-mtaylor'' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__mtaylor_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__countNodes" c_CasADi__countNodes
-  :: Ptr SXMatrix' -> IO CInt
-{-|
->>  int CasADi::countNodes(const MX &A)
->------------------------------------------------------------------------
->
->Count number of nodes
->
->>  int CasADi::countNodes(const SXMatrix &A)
->------------------------------------------------------------------------
->
->Count number of nodes.
--}
-countNodes
-  :: SXMatrix -> IO Int
-countNodes x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__countNodes x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getOperatorRepresentation" c_CasADi__getOperatorRepresentation
-  :: Ptr SX' -> Ptr (CppVec (Ptr StdString')) -> IO (Ptr StdString')
-{-|
->>  std::string CasADi::getOperatorRepresentation(const MX &x, const std::vector< std::string > &args)
->------------------------------------------------------------------------
->
->Get a string representation for a binary MX, using custom arguments.
->
->>  std::string CasADi::getOperatorRepresentation(const SX &x, const std::vector< std::string > &args)
->------------------------------------------------------------------------
->
->Get a string representation for a binary SX, using custom arguments.
--}
-getOperatorRepresentation
-  :: SX -> Vector String -> IO String
-getOperatorRepresentation x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getOperatorRepresentation x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getFree" c_CasADi__getFree
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Get all the free variables in an expression.
--}
-getFree
-  :: SXMatrix -> IO SXMatrix
-getFree x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getFree x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__extractShared" c_CasADi__extractShared
-  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr StdString' -> Ptr StdString' -> IO ()
-{-|
->Extract shared subexpressions from an set of expressions.
--}
-extractShared
-  :: Vector SX -> Vector SX -> Vector SX -> String -> String -> IO ()
-extractShared x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__extractShared x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__extractShared_TIC" c_CasADi__extractShared_TIC
-  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr StdString' -> IO ()
-extractShared'
-  :: Vector SX -> Vector SX -> Vector SX -> String -> IO ()
-extractShared' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__extractShared_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__extractShared_TIC_TIC" c_CasADi__extractShared_TIC_TIC
-  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO ()
-extractShared''
-  :: Vector SX -> Vector SX -> Vector SX -> IO ()
-extractShared'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__extractShared_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__printCompact_TIC" c_CasADi__printCompact_TIC
-  :: Ptr SXMatrix' -> IO ()
-printCompact'
-  :: SXMatrix -> IO ()
-printCompact' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__printCompact_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__poly_coeff" c_CasADi__poly_coeff
-  :: Ptr SXMatrix' -> Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->extracts polynomial coefficients from an expression
->
->ex Scalar expression that represents a polynomial  x Scalar symbol that th
->epolynomial is build up with
--}
-poly_coeff
-  :: SXMatrix -> SXMatrix -> IO SXMatrix
-poly_coeff x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__poly_coeff x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__poly_roots" c_CasADi__poly_roots
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Attempts to find the roots of a polynomial.
->
->This will only work for polynomials up to order 3 It is assumed that the
->roots are real.
--}
-poly_roots
-  :: SXMatrix -> IO SXMatrix
-poly_roots x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__poly_roots x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__eig_symbolic" c_CasADi__eig_symbolic
-  :: Ptr SXMatrix' -> IO (Ptr SXMatrix')
-{-|
->Attempts to find the eigenvalues of a symbolic matrix This will only work
->for up to 3x3 matrices.
->
->Bring m in block diagonal form, calculating eigenvalues of each block
->seperately 
--}
-eig_symbolic
-  :: SXMatrix -> IO SXMatrix
-eig_symbolic x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__eig_symbolic x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertcat_TIC_TIC_TIC_TIC" c_CasADi__vertcat_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-vertcat''''
-  :: Vector MX -> IO MX
-vertcat'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertcat_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr MX')))
-vertsplit'''''''''
-  :: MX -> Vector Int -> IO (Vector MX)
-vertsplit''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> CInt -> IO (Ptr (CppVec (Ptr MX')))
-vertsplit''''''''''
-  :: MX -> Int -> IO (Vector MX)
-vertsplit'''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr (CppVec (Ptr MX')))
-vertsplit'''''''''''
-  :: MX -> IO (Vector MX)
-vertsplit''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzcat_TIC_TIC_TIC_TIC" c_CasADi__horzcat_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-horzcat''''
-  :: Vector MX -> IO MX
-horzcat'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzcat_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr MX')))
-horzsplit'''''''''
-  :: MX -> Vector Int -> IO (Vector MX)
-horzsplit''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> CInt -> IO (Ptr (CppVec (Ptr MX')))
-horzsplit''''''''''
-  :: MX -> Int -> IO (Vector MX)
-horzsplit'''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr (CppVec (Ptr MX')))
-horzsplit'''''''''''
-  :: MX -> IO (Vector MX)
-horzsplit''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blockcat_TIC_TIC_TIC" c_CasADi__blockcat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> IO (Ptr MX')
-blockcat'''
-  :: Vector (Vector MX) -> IO MX
-blockcat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blockcat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-blocksplit''''''''''''
-  :: MX -> Vector Int -> Vector Int -> IO (Vector (Vector MX))
-blocksplit'''''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-blocksplit'''''''''''''
-  :: MX -> Int -> Int -> IO (Vector (Vector MX))
-blocksplit''''''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-blocksplit''''''''''''''
-  :: MX -> Int -> IO (Vector (Vector MX))
-blocksplit'''''''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-blocksplit'''''''''''''''
-  :: MX -> IO (Vector (Vector MX))
-blocksplit''''''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__veccat_TIC_TIC_TIC" c_CasADi__veccat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-veccat'''
-  :: Vector MX -> IO MX
-veccat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__veccat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattencat_TIC_TIC_TIC" c_CasADi__flattencat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-flattencat'''
-  :: Vector MX -> IO MX
-flattencat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattencat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vecNZcat_TIC_TIC_TIC" c_CasADi__vecNZcat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-vecNZcat'''
-  :: Vector MX -> IO MX
-vecNZcat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vecNZcat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattenNZcat_TIC_TIC_TIC" c_CasADi__flattenNZcat_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-flattenNZcat'''
-  :: Vector MX -> IO MX
-flattenNZcat''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattenNZcat_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_F_TIC_TIC_TIC" c_CasADi__norm_F_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-norm_F'''
-  :: MX -> IO MX
-norm_F''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_F_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_2_TIC_TIC_TIC" c_CasADi__norm_2_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-norm_2'''
-  :: MX -> IO MX
-norm_2''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_2_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_1_TIC_TIC_TIC" c_CasADi__norm_1_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-norm_1'''
-  :: MX -> IO MX
-norm_1''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_1_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__norm_inf_TIC_TIC_TIC" c_CasADi__norm_inf_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-norm_inf'''
-  :: MX -> IO MX
-norm_inf''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__norm_inf_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trans_TIC_TIC_TIC_TIC" c_CasADi__trans_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-trans''''
-  :: MX -> IO MX
-trans'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trans_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> Ptr CRSSparsity' -> IO (Ptr MX')
-mul''''''''''
-  :: MX -> MX -> CRSSparsity -> IO MX
-mul'''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-mul'''''''''''
-  :: MX -> MX -> IO MX
-mul''''''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-mul''''''''''''
-  :: Vector MX -> IO MX
-mul'''''''''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__inner_prod_TIC_TIC_TIC" c_CasADi__inner_prod_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-inner_prod'''
-  :: MX -> MX -> IO MX
-inner_prod''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__inner_prod_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__outer_prod_TIC_TIC_TIC" c_CasADi__outer_prod_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-outer_prod'''
-  :: MX -> MX -> IO MX
-outer_prod''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__outer_prod_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__if_else_TIC" c_CasADi__if_else_TIC
-  :: Ptr MX' -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-if_else'
-  :: MX -> MX -> MX -> IO MX
-if_else' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__if_else_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr CRSSparsity' -> IO (Ptr MX')
-reshape'''''''
-  :: MX -> CRSSparsity -> IO MX
-reshape''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vec_TIC_TIC_TIC_TIC" c_CasADi__vec_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-vec''''
-  :: MX -> IO MX
-vec'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vec_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flatten_TIC_TIC_TIC" c_CasADi__flatten_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-flatten'''
-  :: MX -> IO MX
-flatten''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flatten_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vecNZ_TIC_TIC_TIC" c_CasADi__vecNZ_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-vecNZ'''
-  :: MX -> IO MX
-vecNZ''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vecNZ_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__flattenNZ_TIC_TIC_TIC" c_CasADi__flattenNZ_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-flattenNZ'''
-  :: MX -> IO MX
-flattenNZ''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__flattenNZ_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__unite_TIC_TIC_TIC" c_CasADi__unite_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-unite'''
-  :: MX -> MX -> IO MX
-unite''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__unite_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isSymbolic_TIC" c_CasADi__isSymbolic_TIC
-  :: Ptr MX' -> IO CInt
-isSymbolic'
-  :: MX -> IO Bool
-isSymbolic' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isSymbolic_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isSymbolicSparse_TIC" c_CasADi__isSymbolicSparse_TIC
-  :: Ptr MX' -> IO CInt
-isSymbolicSparse'
-  :: MX -> IO Bool
-isSymbolicSparse' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isSymbolicSparse_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isIdentity_TIC_TIC_TIC" c_CasADi__isIdentity_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isIdentity'''
-  :: MX -> IO Bool
-isIdentity''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isIdentity_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isZero_TIC_TIC_TIC" c_CasADi__isZero_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isZero'''
-  :: MX -> IO Bool
-isZero''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isZero_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isOne_TIC_TIC_TIC" c_CasADi__isOne_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isOne'''
-  :: MX -> IO Bool
-isOne''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isOne_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__simplify_TIC_TIC" c_CasADi__simplify_TIC_TIC
-  :: Ptr MX' -> IO ()
-simplify''
-  :: MX -> IO ()
-simplify'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__simplify_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isTranspose" c_CasADi__isTranspose
-  :: Ptr MX' -> IO CInt
-{-|
->Is the expression a transpose?
--}
-isTranspose
-  :: MX -> IO Bool
-isTranspose x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isTranspose x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isMinusOne_TIC_TIC_TIC" c_CasADi__isMinusOne_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isMinusOne'''
-  :: MX -> IO Bool
-isMinusOne''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isMinusOne_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isVector_TIC_TIC_TIC" c_CasADi__isVector_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isVector'''
-  :: MX -> IO Bool
-isVector''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isVector_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isDense_TIC_TIC_TIC" c_CasADi__isDense_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isDense'''
-  :: MX -> IO Bool
-isDense''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isDense_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isRegular_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__isRegular_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr MX' -> IO CInt
-isRegular''''''
-  :: MX -> IO Bool
-isRegular'''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__isRegular_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__trace_TIC_TIC_TIC" c_CasADi__trace_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-trace'''
-  :: MX -> IO MX
-trace''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__trace_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__repmat_TIC_TIC_TIC" c_CasADi__repmat_TIC_TIC_TIC
-  :: Ptr MX' -> CInt -> CInt -> IO (Ptr MX')
-repmat'''
-  :: MX -> Int -> Int -> IO MX
-repmat''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__repmat_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__makeDense_TIC_TIC_TIC" c_CasADi__makeDense_TIC_TIC_TIC
-  :: Ptr MX' -> IO ()
-makeDense'''
-  :: MX -> IO ()
-makeDense''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__makeDense_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__densify_TIC_TIC_TIC" c_CasADi__densify_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-densify'''
-  :: MX -> IO MX
-densify''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__densify_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__full_TIC_TIC_TIC" c_CasADi__full_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-full'''
-  :: MX -> IO MX
-full''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__full_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__createParent" c_CasADi__createParent
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-{-|
->>  MX CasADi::createParent(std::vector< MX > &deps)
->------------------------------------------------------------------------
->
->Create a parent MX on which all given MX's will depend.
->
->In some sense, this function is the inverse of
->
->Parameters:
->-----------
->
->deps:  Must all be symbolic matrices.
->
->>  std::pair< MX, std::vector< MX > > CasADi::createParent(const std::vector< CRSSparsity > &deps)
->
->>  std::pair< MX, std::vector< MX > > CasADi::createParent(const std::vector< MX > &deps)
->------------------------------------------------------------------------
->
->Create a parent MX on which a bunch of MX's (sizes given as argument) will
->depend.
--}
-createParent
-  :: Vector MX -> IO MX
-createParent x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__createParent x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__countNodes_TIC" c_CasADi__countNodes_TIC
-  :: Ptr MX' -> IO CInt
-countNodes'
-  :: MX -> IO Int
-countNodes' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__countNodes_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__diag_TIC_TIC_TIC" c_CasADi__diag_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-diag'''
-  :: MX -> IO MX
-diag''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__diag_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__blkdiag_TIC_TIC_TIC_TIC" c_CasADi__blkdiag_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-blkdiag''''
-  :: Vector MX -> IO MX
-blkdiag'''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__blkdiag_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumRows_TIC_TIC_TIC" c_CasADi__sumRows_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-sumRows'''
-  :: MX -> IO MX
-sumRows''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumRows_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumCols_TIC_TIC_TIC" c_CasADi__sumCols_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-sumCols'''
-  :: MX -> IO MX
-sumCols''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumCols_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__sumAll_TIC_TIC_TIC" c_CasADi__sumAll_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-sumAll'''
-  :: MX -> IO MX
-sumAll''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__sumAll_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__polyval_TIC_TIC_TIC" c_CasADi__polyval_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-polyval'''
-  :: MX -> MX -> IO MX
-polyval''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__polyval_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym" c_CasADi__msym
-  :: Ptr StdString' -> CInt -> CInt -> IO (Ptr MX')
-{-|
->>  MX CasADi::msym(const std::string &name, int n=1, int m=1)
->------------------------------------------------------------------------
->
->Construct symbolic arrays and variables using CasADi's MX expression graph
->representation The "msym" function is intended to work in a similar way as
->"sym" used in the Symbolic Toolbox for Matlab but instead creating an MX
->object. The MX expression graph is more general but also have considerably
->more overhead than the alternative SX expression graph.
->
->Create a matrix symbolic variable of given sparsity
->
->>  MX CasADi::msym(const std::string &name, const std::pair< int, int > &nm)
->
->>  MX CasADi::msym(const std::string &name, const CRSSparsity &sp)
->------------------------------------------------------------------------
->
->Create a matrix symbolic variable of given sparsity.
->
->>  MX CasADi::msym(const Matrix< double > &x)
->------------------------------------------------------------------------
->
->Create a matrix variable from a constant matrix.
->
->>  std::vector< MX > CasADi::msym(const std::string &name, const CRSSparsity &sp, int p)
->------------------------------------------------------------------------
->
->Create a vector of length p with with matrix symbolic variables of given
->sparsity.
->
->>  std::vector< std::vector< MX > > CasADi::msym(const std::string &name, const CRSSparsity &sp, int p, int r)
->------------------------------------------------------------------------
->
->Create a vector of length r of vectors of length p with matrix symbolic
->variables with given sparsity.
->
->>  std::vector< MX > CasADi::msym(const std::string &name, int n, int m, int p)
->------------------------------------------------------------------------
->
->Create a vector of length p with n-by-m matrix symbolic variables.
->
->>  std::vector< std::vector< MX > > CasADi::msym(const std::string &name, int n, int m, int p, int r)
->------------------------------------------------------------------------
->
->Create a vector of length r of vectors of length p with n-by-m matrices with
->symbolic variables.
--}
-msym
-  :: String -> Int -> Int -> IO MX
-msym x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__msym x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC" c_CasADi__msym_TIC
-  :: Ptr StdString' -> CInt -> IO (Ptr MX')
-msym'
-  :: String -> Int -> IO MX
-msym' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__msym_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC" c_CasADi__msym_TIC_TIC
-  :: Ptr StdString' -> IO (Ptr MX')
-msym''
-  :: String -> IO MX
-msym'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__msym_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC_TIC" c_CasADi__msym_TIC_TIC_TIC
-  :: Ptr DMatrix' -> IO (Ptr MX')
-msym'''
-  :: DMatrix -> IO MX
-msym''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__msym_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC_TIC_TIC" c_CasADi__msym_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> IO (Ptr MX')
-msym''''
-  :: String -> CRSSparsity -> IO MX
-msym'''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__msym_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC_TIC_TIC_TIC" c_CasADi__msym_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> CInt -> IO (Ptr (CppVec (Ptr MX')))
-msym'''''
-  :: String -> CRSSparsity -> Int -> IO (Vector MX)
-msym''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__msym_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr MX')))
-msym''''''
-  :: String -> Int -> Int -> Int -> IO (Vector MX)
-msym'''''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> Ptr CRSSparsity' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-msym'''''''
-  :: String -> CRSSparsity -> Int -> Int -> IO (Vector (Vector MX))
-msym''''''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr StdString' -> CInt -> CInt -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
-msym''''''''
-  :: String -> Int -> Int -> Int -> Int -> IO (Vector (Vector MX))
-msym'''''''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__msym_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__isEqual_TIC_TIC_TIC" c_CasADi__isEqual_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO CInt
-isEqual'''
-  :: MX -> MX -> IO Bool
-isEqual''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__isEqual_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getOperatorRepresentation_TIC" c_CasADi__getOperatorRepresentation_TIC
-  :: Ptr MX' -> Ptr (CppVec (Ptr StdString')) -> IO (Ptr StdString')
-getOperatorRepresentation'
-  :: MX -> Vector String -> IO String
-getOperatorRepresentation' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__getOperatorRepresentation_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substitute_TIC_TIC" c_CasADi__substitute_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-substitute''
-  :: MX -> MX -> MX -> IO MX
-substitute'' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substitute_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substitute_TIC_TIC_TIC" c_CasADi__substitute_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-substitute'''
-  :: Vector MX -> Vector MX -> Vector MX -> IO (Vector MX)
-substitute''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substitute_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__graph_substitute" c_CasADi__graph_substitute
-  :: Ptr MX' -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-{-|
->>  MX CasADi::graph_substitute(const MX &ex, const std::vector< MX > &v, const std::vector< MX > &vdef)
->------------------------------------------------------------------------
->
->Substitute variable v with expression vdef in an expression ex, preserving
->nodes.
->
->>  std::vector< MX > CasADi::graph_substitute(const std::vector< MX > &ex, const std::vector< MX > &v, const std::vector< MX > &vdef)
->------------------------------------------------------------------------
->
->Substitute variable var with expression expr in multiple expressions,
->preserving nodes.
--}
-graph_substitute
-  :: MX -> Vector MX -> Vector MX -> IO MX
-graph_substitute x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__graph_substitute x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__graph_substitute_TIC" c_CasADi__graph_substitute_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-graph_substitute'
-  :: Vector MX -> Vector MX -> Vector MX -> IO (Vector MX)
-graph_substitute' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__graph_substitute_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> CInt -> IO ()
-substituteInPlace''''''
-  :: Vector MX -> Vector MX -> Bool -> IO ()
-substituteInPlace'''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO ()
-substituteInPlace'''''''
-  :: Vector MX -> Vector MX -> IO ()
-substituteInPlace''''''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> CInt -> IO ()
-substituteInPlace''''''''
-  :: Vector MX -> Vector MX -> Vector MX -> Bool -> IO ()
-substituteInPlace'''''''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO ()
-substituteInPlace'''''''''
-  :: Vector MX -> Vector MX -> Vector MX -> IO ()
-substituteInPlace''''''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__extractShared_TIC_TIC_TIC" c_CasADi__extractShared_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr StdString' -> Ptr StdString' -> IO ()
-extractShared'''
-  :: Vector MX -> Vector MX -> Vector MX -> String -> String -> IO ()
-extractShared''' x0 x1 x2 x3 x4 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  withMarshal x4 $ \x4' ->
-  c_CasADi__extractShared_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__extractShared_TIC_TIC_TIC_TIC" c_CasADi__extractShared_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr StdString' -> IO ()
-extractShared''''
-  :: Vector MX -> Vector MX -> Vector MX -> String -> IO ()
-extractShared'''' x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__extractShared_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__extractShared_TIC_TIC_TIC_TIC_TIC" c_CasADi__extractShared_TIC_TIC_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO ()
-extractShared'''''
-  :: Vector MX -> Vector MX -> Vector MX -> IO ()
-extractShared''''' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__extractShared_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__printCompact_TIC_TIC_TIC" c_CasADi__printCompact_TIC_TIC_TIC
-  :: Ptr MX' -> IO ()
-printCompact'''
-  :: MX -> IO ()
-printCompact''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__printCompact_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__jacobian_TIC" c_CasADi__jacobian_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-jacobian'
-  :: MX -> MX -> IO MX
-jacobian' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__jacobian_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__gradient_TIC" c_CasADi__gradient_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-gradient'
-  :: MX -> MX -> IO MX
-gradient' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__gradient_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__tangent_TIC" c_CasADi__tangent_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-tangent'
-  :: MX -> MX -> IO MX
-tangent' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__tangent_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__nullspace_TIC_TIC_TIC" c_CasADi__nullspace_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-nullspace'''
-  :: MX -> IO MX
-nullspace''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__nullspace_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__det_TIC_TIC_TIC" c_CasADi__det_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-det'''
-  :: MX -> IO MX
-det''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__det_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__inv_TIC_TIC_TIC" c_CasADi__inv_TIC_TIC_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-inv'''
-  :: MX -> IO MX
-inv''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__inv_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSymbols_TIC" c_CasADi__getSymbols_TIC
-  :: Ptr MX' -> IO (Ptr (CppVec (Ptr MX')))
-getSymbols'
-  :: MX -> IO (Vector MX)
-getSymbols' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSymbols_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__getSymbols_TIC_TIC" c_CasADi__getSymbols_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-getSymbols''
-  :: Vector MX -> IO (Vector MX)
-getSymbols'' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__getSymbols_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__matrix_expand" c_CasADi__matrix_expand
-  :: Ptr MX' -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
-{-|
->Expand MX graph to SXFunction call.
->
->Expand the given expression e, optionally supplying expressions contained in
->it at which expansion should stop.
--}
-matrix_expand
-  :: MX -> Vector MX -> IO MX
-matrix_expand x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__matrix_expand x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__matrix_expand_TIC" c_CasADi__matrix_expand_TIC
-  :: Ptr MX' -> IO (Ptr MX')
-matrix_expand'
-  :: MX -> IO MX
-matrix_expand' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__matrix_expand_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__matrix_expand_TIC_TIC" c_CasADi__matrix_expand_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-matrix_expand''
-  :: Vector MX -> Vector MX -> IO (Vector MX)
-matrix_expand'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__matrix_expand_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__matrix_expand_TIC_TIC_TIC" c_CasADi__matrix_expand_TIC_TIC_TIC
-  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
-matrix_expand'''
-  :: Vector MX -> IO (Vector MX)
-matrix_expand''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__matrix_expand_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__kron_TIC_TIC_TIC" c_CasADi__kron_TIC_TIC_TIC
-  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
-kron'''
-  :: MX -> MX -> IO MX
-kron''' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__kron_TIC_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__parameterizeTime" c_CasADi__parameterizeTime
-  :: Ptr FX' -> IO (Ptr FX')
-{-|
->make integration start and end time a parameter Applies the conversion t =
->t0 + (tf-t0)*tau to the supplied dae. with tau dimensionless time. The
->Input/OuputScheme of the result is the same as the scheme of the dae, except
->for input(DAE_P), which is extended by t0 and tf at the top.
--}
-parameterizeTime
-  :: FX -> IO FX
-parameterizeTime x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__parameterizeTime x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__parameterizeTimeOutput" c_CasADi__parameterizeTimeOutput
-  :: Ptr FX' -> IO (Ptr FX')
-{-|
->adapts an output function such that start and end time are parameters
->Applies the conversion t = t0 + (tf-t0)*tau to the supplied dae. with tau
->dimensionless time. The InputScheme of the result is the same as the scheme
->of the dae, except for input(DAE_P), which is extended by t0 and tf at the
->top.
--}
-parameterizeTimeOutput
-  :: FX -> IO FX
-parameterizeTimeOutput x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__parameterizeTimeOutput x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__numSample1D" c_CasADi__numSample1D
-  :: Ptr FX' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-{-|
->sample a function on a 1D grid
->
->Parameters:
->-----------
->
->fx:  an initialized function mapping from single p-by-1 to single m-by-n
->
->a:  grid of numbers p-by-N
->
->For each column in the grid, fx is numerically evaluated and the output is
->put in a resulting matrix of size m-by-n*p
->
->If your fx is really multiple output, and you wish to use a particular
->output, use the slice operator on the fx.
->
->See:   evalf
--}
-numSample1D
-  :: FX -> DMatrix -> IO DMatrix
-numSample1D x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__numSample1D x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__numSample1DT" c_CasADi__numSample1DT
-  :: Ptr FX' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-{-|
->sample a function on a 1D grid
->
->Parameters:
->-----------
->
->fx:  an initialized function mapping from single p-by-1 to single m-by-n
->
->a:  grid of numbers p-by-N
->
->For each column in the grid, fx is numerically evaluated and the output is
->put in a resulting matrix of size m*p-by-n
->
->If your fx is really multiple output, and you wish to use a particular
->output, use the slice operator on the fx.
--}
-numSample1DT
-  :: FX -> DMatrix -> IO DMatrix
-numSample1DT x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__numSample1DT x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__numSample2D" c_CasADi__numSample2D
-  :: Ptr FX' -> Ptr DMatrix' -> IO (Ptr DMatrix')
-{-|
->sample a function on a 2D grid
->
->Parameters:
->-----------
->
->fx:  an initialized function mapping from (1-by-1,1-by-1) to single m-by-n
->
->a:  grid of numbers
->
->For each point (i,j) in the grid, fx is numerically evaluated and the output
->is put in a matrix
->
->If your fx is really multiple output, and you wish to use a particular
->output, use the slice operator on the fx.
--}
-numSample2D
-  :: FX -> DMatrix -> IO DMatrix
-numSample2D x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__numSample2D x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vec_TIC_TIC_TIC_TIC_TIC" c_CasADi__vec_TIC_TIC_TIC_TIC_TIC
-  :: Ptr SXFunction' -> IO (Ptr SXFunction')
-vec'''''
-  :: SXFunction -> IO SXFunction
-vec''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vec_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__vec_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vec_TIC_TIC_TIC_TIC_TIC_TIC
-  :: Ptr FX' -> IO (Ptr MXFunction')
-vec''''''
-  :: FX -> IO MXFunction
-vec'''''' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__vec_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__collocationPoints" c_CasADi__collocationPoints
-  :: CInt -> Ptr StdString' -> IO (Ptr (CppVec CDouble))
-{-|
->Obtain collocation points of specific order and scheme.
->
->Parameters:
->-----------
->
->scheme:  'radau' or 'legendre'
--}
-collocationPoints
-  :: Int -> String -> IO (Vector Double)
-collocationPoints x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__collocationPoints x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__collocationPoints_TIC" c_CasADi__collocationPoints_TIC
-  :: CInt -> IO (Ptr (CppVec CDouble))
-collocationPoints'
-  :: Int -> IO (Vector Double)
-collocationPoints' x0 =
-  withMarshal x0 $ \x0' ->
-  c_CasADi__collocationPoints_TIC x0' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__collocationInterpolators" c_CasADi__collocationInterpolators
-  :: Ptr (CppVec CDouble) -> Ptr (CppVec (Ptr (CppVec CDouble))) -> Ptr (CppVec CDouble) -> IO ()
-{-|
->Obtain collocation interpolating matrices.
->
->Parameters:
->-----------
->
->tau_root:  location of collocation points, as obtained from
->collocationPoints
->
->C:  interpolating coefficients to obtain derivatives Length: order+1, order
->+ 1
->
->dX/dt (j) ~ Sum_i C[j][i]*X(i)
->
->Parameters:
->-----------
->
->D:  interpolating coefficients to obtain end state Length: order+1
--}
-collocationInterpolators
-  :: Vector Double -> Vector (Vector Double) -> Vector Double -> IO ()
-collocationInterpolators x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__collocationInterpolators x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__explicitRK" c_CasADi__explicitRK
-  :: Ptr FX' -> Ptr MX' -> CInt -> CInt -> IO (Ptr FX')
-{-|
->Construct an explicit Runge-Kutta integrator.
->
->Parameters:
->-----------
->
->f:  dynamical system
->
->>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
->+-----------+-------+----------------------------+
->| Full name | Short |        Description         |
->+===========+=======+============================+
->| DAE_X     | x     | Differential state .       |
->+-----------+-------+----------------------------+
->| DAE_Z     | z     | Algebraic state .          |
->+-----------+-------+----------------------------+
->| DAE_P     | p     | Parameter .                |
->+-----------+-------+----------------------------+
->| DAE_T     | t     | Explicit time dependence . |
->+-----------+-------+----------------------------+
->
->>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
->+-----------+-------+--------------------------------------------+
->| Full name | Short |                Description                 |
->+===========+=======+============================================+
->| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
->+-----------+-------+--------------------------------------------+
->| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
->+-----------+-------+--------------------------------------------+
->| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
->+-----------+-------+--------------------------------------------+
->
->Parameters:
->-----------
->
->tf:  Integration end time
->
->order:  Order of integration
->
->ne:  Number of times the RK primitive is repeated over the integration
->interval
--}
-explicitRK
-  :: FX -> MX -> Int -> Int -> IO FX
-explicitRK x0 x1 x2 x3 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  withMarshal x3 $ \x3' ->
-  c_CasADi__explicitRK x0' x1' x2' x3' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__explicitRK_TIC" c_CasADi__explicitRK_TIC
-  :: Ptr FX' -> Ptr MX' -> CInt -> IO (Ptr FX')
-explicitRK'
-  :: FX -> MX -> Int -> IO FX
-explicitRK' x0 x1 x2 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  withMarshal x2 $ \x2' ->
-  c_CasADi__explicitRK_TIC x0' x1' x2' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__explicitRK_TIC_TIC" c_CasADi__explicitRK_TIC_TIC
-  :: Ptr FX' -> Ptr MX' -> IO (Ptr FX')
-explicitRK''
-  :: FX -> MX -> IO FX
-explicitRK'' x0 x1 =
-  withMarshal x0 $ \x0' ->
-  withMarshal x1 $ \x1' ->
-  c_CasADi__explicitRK_TIC_TIC x0' x1' >>= wrapReturn
-
-foreign import ccall unsafe "CasADi__explicitRK_TIC_TIC_TIC" c_CasADi__explicitRK_TIC_TIC_TIC
-  :: Ptr FX' -> IO (Ptr FX')
-explicitRK'''
-  :: FX -> IO FX
+         addMultiple,
+         addMultiple',
+         addMultiple'',
+         addMultiple''',
+         addMultiple'''',
+         addMultiple''''',
+         adj,
+         adj',
+         adj'',
+         blkdiag,
+         blkdiag',
+         blkdiag'',
+         blkdiag''',
+         blkdiag'''',
+         blockcat,
+         blockcat',
+         blockcat'',
+         blockcat''',
+         blocksplit,
+         blocksplit',
+         blocksplit'',
+         blocksplit''',
+         blocksplit'''',
+         blocksplit''''',
+         blocksplit'''''',
+         blocksplit''''''',
+         blocksplit'''''''',
+         blocksplit''''''''',
+         blocksplit'''''''''',
+         blocksplit''''''''''',
+         blocksplit'''''''''''',
+         blocksplit''''''''''''',
+         blocksplit'''''''''''''',
+         blocksplit''''''''''''''',
+         cofactor,
+         cofactor',
+         cofactor'',
+         collocationInterpolators,
+         collocationPoints,
+         collocationPoints',
+         complement,
+         compress,
+         compress',
+         countNodes,
+         countNodes',
+         createParent,
+         createParent',
+         createParent'',
+         cross,
+         cross',
+         cross'',
+         cross''',
+         cross'''',
+         cross''''',
+         cross'''''',
+         cross''''''',
+         dense,
+         dense',
+         dense'',
+         dense''',
+         dependsOn,
+         dependsOn',
+         det,
+         det',
+         det'',
+         det''',
+         diag,
+         diag',
+         diag'',
+         diag''',
+         eig_symbolic,
+         evalf,
+         evalf',
+         expand,
+         explicitRK,
+         explicitRK',
+         explicitRK'',
+         explicitRK''',
+         extractShared,
+         extractShared',
+         extractShared'',
+         extractShared''',
+         extractShared'''',
+         extractShared''''',
+         gauss_quadrature,
+         gauss_quadrature',
+         gauss_quadrature'',
+         getFree,
+         getMinor,
+         getMinor',
+         getMinor'',
+         getOperatorRepresentation,
+         getOperatorRepresentation',
+         getSchemeEntryDoc,
+         getSchemeEntryEnum,
+         getSchemeEntryEnumName,
+         getSchemeEntryName,
+         getSchemeEntryNames,
+         getSchemeName,
+         getSchemeSize,
+         getSymbols,
+         getSymbols',
+         getSymbols'',
+         gradient,
+         gradient',
+         graph_substitute,
+         graph_substitute',
+         hash_combine,
+         hash_sparsity,
+         heaviside,
+         hessian,
+         hessian',
+         horzcat,
+         horzcat',
+         horzcat'',
+         horzcat''',
+         horzcat'''',
+         horzsplit,
+         horzsplit',
+         horzsplit'',
+         horzsplit''',
+         horzsplit'''',
+         horzsplit''''',
+         horzsplit'''''',
+         horzsplit''''''',
+         horzsplit'''''''',
+         horzsplit''''''''',
+         horzsplit'''''''''',
+         horzsplit''''''''''',
+         horzsplit'''''''''''',
+         if_else,
+         if_else',
+         inner_prod,
+         inner_prod',
+         inner_prod'',
+         inner_prod''',
+         inv,
+         inv',
+         inv'',
+         inv''',
+         isDecreasing,
+         isDecreasing',
+         isEqual,
+         isEqual',
+         isEqual'',
+         isEqual''',
+         isIncreasing,
+         isIncreasing',
+         isMonotone,
+         isMonotone',
+         isNonDecreasing,
+         isNonDecreasing',
+         isNonIncreasing,
+         isNonIncreasing',
+         isRegular,
+         isRegular',
+         isStrictlyMonotone,
+         isStrictlyMonotone',
+         jacobian,
+         jacobian',
+         jacobianTimesVector,
+         jacobianTimesVector',
+         kron,
+         kron',
+         kron'',
+         kron''',
+         linspace,
+         linspace',
+         linspace'',
+         logic_and,
+         logic_and',
+         logic_and'',
+         logic_and''',
+         logic_and'''',
+         logic_and''''',
+         logic_and'''''',
+         logic_not,
+         logic_not',
+         logic_not'',
+         logic_not''',
+         logic_not'''',
+         logic_not''''',
+         logic_not'''''',
+         logic_or,
+         logic_or',
+         logic_or'',
+         logic_or''',
+         logic_or'''',
+         logic_or''''',
+         logic_or'''''',
+         lookupvector,
+         matrix_expand,
+         matrix_expand',
+         matrix_expand'',
+         matrix_expand''',
+         mtaylor,
+         mtaylor',
+         mtaylor'',
+         mul,
+         mul',
+         mul'',
+         mul''',
+         mul'''',
+         mul''''',
+         mul'''''',
+         mul''''''',
+         mul'''''''',
+         mul''''''''',
+         mul'''''''''',
+         mul''''''''''',
+         mul'''''''''''',
+         norm_1,
+         norm_1',
+         norm_1'',
+         norm_1''',
+         norm_2,
+         norm_2',
+         norm_2'',
+         norm_2''',
+         norm_F,
+         norm_F',
+         norm_F'',
+         norm_F''',
+         norm_inf,
+         norm_inf',
+         norm_inf'',
+         norm_inf''',
+         nullspace,
+         nullspace',
+         nullspace'',
+         nullspace''',
+         outer_prod,
+         outer_prod',
+         outer_prod'',
+         outer_prod''',
+         pinv,
+         pinv',
+         pinv'',
+         poly_coeff,
+         poly_roots,
+         polyval,
+         polyval',
+         polyval'',
+         polyval''',
+         printCompact',
+         printCompact''',
+         project,
+         project',
+         project'',
+         pw_const,
+         pw_lin,
+         qr,
+         qr',
+         qr'',
+         ramp,
+         rank,
+         rectangle,
+         repmat,
+         repmat',
+         repmat'',
+         repmat''',
+         reshape,
+         reshape',
+         reshape'',
+         reshape''',
+         reshape'''',
+         reshape''''',
+         reshape'''''',
+         reshape''''''',
+         simplify,
+         simplify',
+         simplify'',
+         solve,
+         solve',
+         solve'',
+         solve''',
+         sparse,
+         sparse',
+         sparse'',
+         sparse''',
+         sparse'''',
+         sparse''''',
+         sprank,
+         sprank',
+         sprank'',
+         spy,
+         substitute,
+         substitute',
+         substitute'',
+         substitute''',
+         substituteInPlace,
+         substituteInPlace',
+         substituteInPlace'',
+         substituteInPlace''',
+         substituteInPlace'''',
+         substituteInPlace''''',
+         substituteInPlace'''''',
+         substituteInPlace''''''',
+         substituteInPlace'''''''',
+         substituteInPlace''''''''',
+         sumAll,
+         sumAll',
+         sumAll'',
+         sumAll''',
+         sumCols,
+         sumCols',
+         sumCols'',
+         sumCols''',
+         sumRows,
+         sumRows',
+         sumRows'',
+         sumRows''',
+         tangent,
+         tangent',
+         taylor,
+         taylor',
+         taylor'',
+         trace,
+         trace',
+         trace'',
+         trace''',
+         transpose,
+         transpose',
+         transpose'',
+         transpose''',
+         transpose'''',
+         triangle,
+         tril,
+         tril',
+         tril'',
+         tril''',
+         tril'''',
+         tril''''',
+         tril2symm,
+         tril2symm',
+         tril2symm'',
+         tril2symm''',
+         triu,
+         triu',
+         triu'',
+         triu''',
+         triu'''',
+         triu''''',
+         triu2symm,
+         triu2symm',
+         triu2symm'',
+         triu2symm''',
+         unite,
+         unite',
+         unite'',
+         unite''',
+         vec,
+         vec',
+         vec'',
+         vec''',
+         vec'''',
+         vecNZ,
+         vecNZ',
+         vecNZ'',
+         vecNZ''',
+         vecNZcat,
+         vecNZcat',
+         vecNZcat'',
+         vecNZcat''',
+         veccat,
+         veccat',
+         veccat'',
+         veccat''',
+         vertcat,
+         vertcat',
+         vertcat'',
+         vertcat''',
+         vertcat'''',
+         vertsplit,
+         vertsplit',
+         vertsplit'',
+         vertsplit''',
+         vertsplit'''',
+         vertsplit''''',
+         vertsplit'''''',
+         vertsplit''''''',
+         vertsplit'''''''',
+         vertsplit''''''''',
+         vertsplit'''''''''',
+         vertsplit''''''''''',
+         vertsplit'''''''''''',
+       ) where
+
+
+import Data.Vector ( Vector )
+import Foreign.C.Types
+import Foreign.Ptr ( Ptr )
+
+import Casadi.Wrappers.Data
+import Casadi.Wrappers.Enums
+import Casadi.Wrappers.CToolsInstances ( )
+import Casadi.MarshalTypes ( CppVec, StdString' )
+import Casadi.Marshal ( withMarshal )
+import Casadi.WrapReturn ( WrapReturn(..) )
+
+foreign import ccall unsafe "CasADi__getSchemeEntryName" c_CasADi__getSchemeEntryName
+  :: CInt -> CInt -> IO (Ptr StdString')
+getSchemeEntryName
+  :: InputOutputScheme -> Int -> IO String
+getSchemeEntryName x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__getSchemeEntryName x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSchemeEntryDoc" c_CasADi__getSchemeEntryDoc
+  :: CInt -> CInt -> IO (Ptr StdString')
+getSchemeEntryDoc
+  :: InputOutputScheme -> Int -> IO String
+getSchemeEntryDoc x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__getSchemeEntryDoc x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSchemeEntryEnumName" c_CasADi__getSchemeEntryEnumName
+  :: CInt -> CInt -> IO (Ptr StdString')
+getSchemeEntryEnumName
+  :: InputOutputScheme -> Int -> IO String
+getSchemeEntryEnumName x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__getSchemeEntryEnumName x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSchemeEntryEnum" c_CasADi__getSchemeEntryEnum
+  :: CInt -> Ptr StdString' -> IO CInt
+getSchemeEntryEnum
+  :: InputOutputScheme -> String -> IO Int
+getSchemeEntryEnum x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__getSchemeEntryEnum x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSchemeSize" c_CasADi__getSchemeSize
+  :: CInt -> IO CInt
+getSchemeSize
+  :: InputOutputScheme -> IO Int
+getSchemeSize x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getSchemeSize x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSchemeName" c_CasADi__getSchemeName
+  :: CInt -> IO (Ptr StdString')
+getSchemeName
+  :: InputOutputScheme -> IO String
+getSchemeName x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getSchemeName x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSchemeEntryNames" c_CasADi__getSchemeEntryNames
+  :: CInt -> IO (Ptr StdString')
+getSchemeEntryNames
+  :: InputOutputScheme -> IO String
+getSchemeEntryNames x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getSchemeEntryNames x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__complement" c_CasADi__complement
+  :: Ptr (CppVec CInt) -> CInt -> IO (Ptr (CppVec CInt))
+{-|
+>Returns the list of all i in [0,size[ not found in supplied list.
+>
+>The supplied vector may contain duplicates and may be non-monotonous The
+>supplied vector will be checked for bounds The result vector is guaranteed
+>to be monotonously increasing
+-}
+complement
+  :: Vector Int -> Int -> IO (Vector Int)
+complement x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__complement x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__lookupvector" c_CasADi__lookupvector
+  :: Ptr (CppVec CInt) -> CInt -> IO (Ptr (CppVec CInt))
+{-|
+>Returns a vector for quickly looking up entries of supplied list.
+>
+>lookupvector[i]!=-1 <=> v contains i v[lookupvector[i]] == i <=> v contains
+>i
+>
+>Duplicates are treated by looking up last occurence
+-}
+lookupvector
+  :: Vector Int -> Int -> IO (Vector Int)
+lookupvector x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__lookupvector x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isIncreasing" c_CasADi__isIncreasing
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>Check if the vector is strictly increasing.
+-}
+isIncreasing
+  :: Vector Int -> IO Bool
+isIncreasing x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isIncreasing x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isDecreasing" c_CasADi__isDecreasing
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>Check if the vector is strictly decreasing.
+-}
+isDecreasing
+  :: Vector Int -> IO Bool
+isDecreasing x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isDecreasing x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isNonIncreasing" c_CasADi__isNonIncreasing
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>Check if the vector is non-increasing.
+-}
+isNonIncreasing
+  :: Vector Int -> IO Bool
+isNonIncreasing x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isNonIncreasing x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isNonDecreasing" c_CasADi__isNonDecreasing
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>Check if the vector is non-decreasing.
+-}
+isNonDecreasing
+  :: Vector Int -> IO Bool
+isNonDecreasing x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isNonDecreasing x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isMonotone" c_CasADi__isMonotone
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>Check if the vector is monotone.
+-}
+isMonotone
+  :: Vector Int -> IO Bool
+isMonotone x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isMonotone x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isStrictlyMonotone" c_CasADi__isStrictlyMonotone
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>Check if the vector is strictly monotone.
+-}
+isStrictlyMonotone
+  :: Vector Int -> IO Bool
+isStrictlyMonotone x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isStrictlyMonotone x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isRegular" c_CasADi__isRegular
+  :: Ptr (CppVec CInt) -> IO CInt
+{-|
+>>  bool CasADi::isRegular(const Matrix< DataType > &ex)
+>
+>>  bool CasADi::isRegular(const MX &ex)
+>
+>>  bool CasADi::isRegular(const SXElement &ex)
+>
+>>  bool CasADi::isRegular(const SX &ex)
+>------------------------------------------------------------------------
+>
+>[DEPRECATED]
+>
+>>  bool CasADi::isRegular(const std::vector< T > &v)
+>------------------------------------------------------------------------
+>
+>Checks if vector does not contain NaN or Inf.
+-}
+isRegular
+  :: Vector Int -> IO Bool
+isRegular x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isRegular x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isIncreasing_TIC" c_CasADi__isIncreasing_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isIncreasing'
+  :: Vector Double -> IO Bool
+isIncreasing' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isIncreasing_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isDecreasing_TIC" c_CasADi__isDecreasing_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isDecreasing'
+  :: Vector Double -> IO Bool
+isDecreasing' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isDecreasing_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isNonIncreasing_TIC" c_CasADi__isNonIncreasing_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isNonIncreasing'
+  :: Vector Double -> IO Bool
+isNonIncreasing' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isNonIncreasing_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isNonDecreasing_TIC" c_CasADi__isNonDecreasing_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isNonDecreasing'
+  :: Vector Double -> IO Bool
+isNonDecreasing' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isNonDecreasing_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isMonotone_TIC" c_CasADi__isMonotone_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isMonotone'
+  :: Vector Double -> IO Bool
+isMonotone' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isMonotone_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isStrictlyMonotone_TIC" c_CasADi__isStrictlyMonotone_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isStrictlyMonotone'
+  :: Vector Double -> IO Bool
+isStrictlyMonotone' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isStrictlyMonotone_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isRegular_TIC" c_CasADi__isRegular_TIC
+  :: Ptr (CppVec CDouble) -> IO CInt
+isRegular'
+  :: Vector Double -> IO Bool
+isRegular' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__isRegular_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__hash_combine" c_CasADi__hash_combine
+  :: CSize -> Ptr (CppVec CInt) -> IO ()
+{-|
+>[INTERNAL]  Generate a hash
+>value incrementally (function taken from boost)
+-}
+hash_combine
+  :: CSize -> Vector Int -> IO ()
+hash_combine x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__hash_combine x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__hash_sparsity" c_CasADi__hash_sparsity
+  :: CInt -> CInt -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO CSize
+{-|
+>Hash a sparsity pattern.
+-}
+hash_sparsity
+  :: Int -> Int -> Vector Int -> Vector Int -> IO CSize
+hash_sparsity x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__hash_sparsity x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__transpose" c_CasADi__transpose
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::transpose(const MX &x)
+>------------------------------------------------------------------------
+>
+>Transpose an expression.
+>
+>>  Matrix< DataType > CasADi::transpose(const Matrix< DataType > &x)
+>------------------------------------------------------------------------
+>
+>Transpose of a matrix.
+>
+>>  Sparsity CasADi::transpose(const Sparsity &a)
+>------------------------------------------------------------------------
+>
+>Transpose the pattern.
+-}
+transpose
+  :: IMatrix -> IO IMatrix
+transpose x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__transpose x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul" c_CasADi__mul
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::mul(const MX &x, const MX &y, const Sparsity &sp_z=Sparsity())
+>------------------------------------------------------------------------
+>
+>Take the matrix product of 2 MX objects.
+>
+>With optional sp_z you can specify the sparsity of the result A typical use
+>case might be where the product is only constructed to inspect the trace of
+>it. sp_z diagonal will be more efficient then.
+>
+>>  MX CasADi::mul(const std::vector< MX > &x)
+>------------------------------------------------------------------------
+>
+>Take the matrix product of n MX objects.
+>
+>>  Matrix< DataType > CasADi::mul(const Matrix< DataType > &x, const Matrix< DataType > &y, const Sparsity &sp_z=Sparsity())
+>------------------------------------------------------------------------
+>
+>Matrix product of two matrices.
+>
+>With optional sp_z you can specify the sparsity of the result A typical use
+>case might be where the product is only constructed to inspect the trace of
+>it. sp_z diagonal will be more efficient then.
+>
+>>  Matrix< DataType > CasADi::mul(const std::vector< Matrix< DataType > > &args)
+>------------------------------------------------------------------------
+>
+>Matrix product of n matrices.
+>
+>>  Sparsity CasADi::mul(const Sparsity &a, const Sparsity &b)
+>------------------------------------------------------------------------
+>
+>Get the sparsity resulting from a matrix multiplication.
+-}
+mul
+  :: IMatrix -> IMatrix -> Sparsity -> IO IMatrix
+mul x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__mul x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC" c_CasADi__mul_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+mul'
+  :: IMatrix -> IMatrix -> IO IMatrix
+mul' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__mul_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC" c_CasADi__mul_TIC_TIC
+  :: Ptr (CppVec (Ptr IMatrix')) -> IO (Ptr IMatrix')
+mul''
+  :: Vector IMatrix -> IO IMatrix
+mul'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__mul_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__det" c_CasADi__det
+  :: Ptr IMatrix' -> IO CInt
+{-|
+>>  MX CasADi::det(const MX &A)
+>------------------------------------------------------------------------
+>
+>Matrix determinant (experimental)
+-}
+det
+  :: IMatrix -> IO Int
+det x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__det x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getMinor" c_CasADi__getMinor
+  :: Ptr IMatrix' -> CInt -> CInt -> IO CInt
+getMinor
+  :: IMatrix -> Int -> Int -> IO Int
+getMinor x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__getMinor x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cofactor" c_CasADi__cofactor
+  :: Ptr IMatrix' -> CInt -> CInt -> IO CInt
+cofactor
+  :: IMatrix -> Int -> Int -> IO Int
+cofactor x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cofactor x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__adj" c_CasADi__adj
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+adj
+  :: IMatrix -> IO IMatrix
+adj x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__adj x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inv" c_CasADi__inv
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::inv(const MX &A)
+>------------------------------------------------------------------------
+>
+>Matrix inverse (experimental)
+-}
+inv
+  :: IMatrix -> IO IMatrix
+inv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__inv x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape" c_CasADi__reshape
+  :: Ptr IMatrix' -> CInt -> CInt -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::reshape(const MX &x, std::pair< int, int > rc)
+>------------------------------------------------------------------------
+>
+>Returns a reshaped version of the MX, dimensions as a vector.
+>
+>>  MX CasADi::reshape(const MX &x, int nrow, int ncol)
+>------------------------------------------------------------------------
+>
+>Returns a reshaped version of the MX.
+>
+>>  MX CasADi::reshape(const MX &x, const Sparsity &sp)
+>------------------------------------------------------------------------
+>
+>Reshape the MX.
+>
+>>  Sparsity CasADi::reshape(const Sparsity &a, int nrow, int ncol)
+>------------------------------------------------------------------------
+>
+>Reshape the sparsity pattern keeping the relative location of the nonzeros.
+-}
+reshape
+  :: IMatrix -> Int -> Int -> IO IMatrix
+reshape x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__reshape x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC" c_CasADi__reshape_TIC
+  :: Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+reshape'
+  :: IMatrix -> Sparsity -> IO IMatrix
+reshape' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__reshape_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vec" c_CasADi__vec
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::vec(const MX &x)
+>------------------------------------------------------------------------
+>
+>Returns a vectorized version of the MX Same as reshape(x, x.numel(),1)
+>
+>a c b d
+>
+>turns into
+>
+>a b c d
+>
+>>  Matrix< DataType > CasADi::vec(const Matrix< DataType > &a)
+>------------------------------------------------------------------------
+>
+>make a vector Reshapes/vectorizes the Matrix<DataType> such that the shape
+>becomes (expr.numel(),1). Columns are stacked on top of each other. Same as
+>reshape(expr, expr.numel(),1)
+>
+>a c b d  turns into
+>
+>a b c d
+>
+>>  Sparsity CasADi::vec(const Sparsity &a)
+>------------------------------------------------------------------------
+>
+>Vectorize the pattern.
+-}
+vec
+  :: IMatrix -> IO IMatrix
+vec x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vec x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZ" c_CasADi__vecNZ
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::vecNZ(const MX &x)
+>------------------------------------------------------------------------
+>
+>Returns a vectorized version of the MX, prseverving only nonzeros.
+>
+>>  Matrix< DataType > CasADi::vecNZ(const Matrix< DataType > &a)
+>------------------------------------------------------------------------
+>
+>Returns a flattened version of the Matrix, preserving only nonzeros.
+-}
+vecNZ
+  :: IMatrix -> IO IMatrix
+vecNZ x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZ x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blockcat" c_CasADi__blockcat
+  :: Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))) -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::blockcat(const std::vector< std::vector< MX > > &v)
+>------------------------------------------------------------------------
+>
+>Construct a matrix from a list of list of blocks.
+>
+>blockcat(blocksplit(x,...,...)) = x
+>
+>>  MX CasADi::blockcat(const MX &A, const MX &B, const MX &C, const MX &D)
+>
+>>  Matrix< DataType > CasADi::blockcat(const std::vector< std::vector< Matrix< DataType > > > &v)
+>------------------------------------------------------------------------
+>
+>Construct a matrix from a list of list of blocks.
+>
+>>  Matrix< DataType > CasADi::blockcat(const Matrix< DataType > &A, const Matrix< DataType > &B, const Matrix< DataType > &C, const Matrix< DataType > &D)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Construct a matrix from 4 blocks.
+-}
+blockcat
+  :: Vector (Vector IMatrix) -> IO IMatrix
+blockcat x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blockcat x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit" c_CasADi__blocksplit
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))))
+{-|
+>>  std::vector< std::vector< MX > > CasADi::blocksplit(const MX &x, const std::vector< int > &vert_offset, const std::vector< int > &horz_offset)
+>------------------------------------------------------------------------
+>
+>chop up into blocks
+>
+>vert_offset Defines the boundaries of the block cols horz_offset Defines the
+>boundaries of the block rows
+>
+>blockcat(blocksplit(x,...,...)) = x
+>
+>>  std::vector< std::vector< MX > > CasADi::blocksplit(const MX &x, int vert_incr=1, int horz_incr=1)
+>------------------------------------------------------------------------
+>
+>chop up into blocks
+>
+>vert_incr Defines the increment for block boundaries in col dimension
+>horz_incr Defines the increment for block boundaries in row dimension
+>
+>blockcat(blocksplit(x,...,...)) = x
+>
+>>  std::vector< std::vector< Matrix< DataType > > > CasADi::blocksplit(const Matrix< DataType > &x, const std::vector< int > &vert_offset, const std::vector< int > &horz_offset)
+>------------------------------------------------------------------------
+>
+>chop up into blocks
+>
+>vert_offset Defines the boundaries of the block rows horz_offset Defines the
+>boundaries of the block columns
+>
+>blockcat(blocksplit(x,...,...)) = x
+>
+>>  std::vector< std::vector< Matrix< DataType > > > CasADi::blocksplit(const Matrix< DataType > &x, int vert_incr=1, int horz_incr=1)
+>------------------------------------------------------------------------
+>
+>chop up into blocks
+>
+>vert_incr Defines the increment for block boundaries in row dimension
+>horz_incr Defines the increment for block boundaries in column dimension
+>
+>blockcat(blocksplit(x,...,...)) = x
+-}
+blocksplit
+  :: IMatrix -> Vector Int -> Vector Int -> IO (Vector (Vector IMatrix))
+blocksplit x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC" c_CasADi__blocksplit_TIC
+  :: Ptr IMatrix' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))))
+blocksplit'
+  :: IMatrix -> Int -> Int -> IO (Vector (Vector IMatrix))
+blocksplit' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC" c_CasADi__blocksplit_TIC_TIC
+  :: Ptr IMatrix' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))))
+blocksplit''
+  :: IMatrix -> Int -> IO (Vector (Vector IMatrix))
+blocksplit'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__blocksplit_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC
+  :: Ptr IMatrix' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr IMatrix')))))
+blocksplit'''
+  :: IMatrix -> IO (Vector (Vector IMatrix))
+blocksplit''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertcat" c_CasADi__vertcat
+  :: Ptr (CppVec (Ptr IMatrix')) -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::vertcat(const MX &a, const MX &b)
+>------------------------------------------------------------------------
+>
+>concatenate horizontally, two matrices
+>
+>>  MX CasADi::vertcat(const std::vector< MX > &comp)
+>------------------------------------------------------------------------
+>
+>concatenate horizontally
+>
+>vertcat(vertsplit(x,...)) = x
+>
+>>  Matrix< DataType > CasADi::vertcat(const std::vector< Matrix< DataType > > &v)
+>------------------------------------------------------------------------
+>
+>Concatenate a list of matrices horizontally Alternative terminology:
+>horizontal stack, hstack, horizontal append, [a b].
+>
+>vertcat(vertsplit(x,...)) = x
+>
+>>  Matrix< DataType > CasADi::vertcat(const Matrix< DataType > &x, const Matrix< DataType > &y)
+>------------------------------------------------------------------------
+>[INTERNAL]
+>
+>>  Sparsity CasADi::vertcat(const std::vector< Sparsity > &v)
+>------------------------------------------------------------------------
+>
+>Concatenate a list of sparsities vertically Alternative terminology:
+>vertical stack, vstack, vertical append, [a;b].
+-}
+vertcat
+  :: Vector IMatrix -> IO IMatrix
+vertcat x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertcat x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit" c_CasADi__vertsplit
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr IMatrix')))
+{-|
+>>  std::vector< MX > CasADi::vertsplit(const MX &x, const std::vector< int > &output_offset)
+>
+>>  std::vector< Matrix< DataType > > CasADi::vertsplit(const Matrix< DataType > &v, const std::vector< int > &offset)
+>------------------------------------------------------------------------
+>
+>split horizontally, retaining groups of rows
+>
+>Parameters:
+>-----------
+>
+>output_offset:  List of all start rows for each group the last row group
+>will run to the end.
+>
+>vertcat(vertsplit(x,...)) = x
+>
+>>  std::vector< MX > CasADi::vertsplit(const MX &x, int incr=1)
+>
+>>  std::vector< Matrix< DataType > > CasADi::vertsplit(const Matrix< DataType > &v, int incr=1)
+>------------------------------------------------------------------------
+>
+>split horizontally, retaining fixed-sized groups of rows
+>
+>Parameters:
+>-----------
+>
+>incr:  Size of each group of rows
+>
+>vertcat(vertsplit(x,...)) = x
+>
+>>  std::vector< Sparsity > CasADi::vertsplit(const Sparsity &sp, const std::vector< int > &output_offset)
+>------------------------------------------------------------------------
+>
+>Split up a sparsity pattern vertically.
+-}
+vertsplit
+  :: IMatrix -> Vector Int -> IO (Vector IMatrix)
+vertsplit x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC" c_CasADi__vertsplit_TIC
+  :: Ptr IMatrix' -> CInt -> IO (Ptr (CppVec (Ptr IMatrix')))
+vertsplit'
+  :: IMatrix -> Int -> IO (Vector IMatrix)
+vertsplit' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC" c_CasADi__vertsplit_TIC_TIC
+  :: Ptr IMatrix' -> IO (Ptr (CppVec (Ptr IMatrix')))
+vertsplit''
+  :: IMatrix -> IO (Vector IMatrix)
+vertsplit'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertsplit_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzcat" c_CasADi__horzcat
+  :: Ptr (CppVec (Ptr IMatrix')) -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::horzcat(const MX &a, const MX &b)
+>------------------------------------------------------------------------
+>
+>concatenate vertically, two matrices
+>
+>>  MX CasADi::horzcat(const std::vector< MX > &x)
+>------------------------------------------------------------------------
+>
+>concatenate vertically
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  Matrix< DataType > CasADi::horzcat(const std::vector< Matrix< DataType > > &v)
+>------------------------------------------------------------------------
+>
+>Concatenate a list of matrices vertically Alternative terminology: vertical
+>stack, vstack, vertical append, [a;b].
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  Matrix< DataType > CasADi::horzcat(const Matrix< DataType > &x, const Matrix< DataType > &y)
+>------------------------------------------------------------------------
+>[INTERNAL]
+>
+>>  Sparsity CasADi::horzcat(const std::vector< Sparsity > &v)
+>------------------------------------------------------------------------
+>
+>Concatenate a list of sparsities horizontally Alternative terminology:
+>horizontal stack, hstack, horizontal append, [a b].
+-}
+horzcat
+  :: Vector IMatrix -> IO IMatrix
+horzcat x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzcat x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit" c_CasADi__horzsplit
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr IMatrix')))
+{-|
+>>  std::vector< MX > CasADi::horzsplit(const MX &x, const std::vector< int > &output_offset)
+>------------------------------------------------------------------------
+>
+>split vertically, retaining groups of cols
+>
+>Parameters:
+>-----------
+>
+>output_offset:  List of all start cols for each group the last col group
+>will run to the end.
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  std::vector< MX > CasADi::horzsplit(const MX &x, int incr=1)
+>
+>>  std::vector< Matrix< DataType > > CasADi::horzsplit(const Matrix< DataType > &v, int incr=1)
+>------------------------------------------------------------------------
+>
+>split vertically, retaining fixed-sized groups of cols
+>
+>Parameters:
+>-----------
+>
+>incr:  Size of each group of cols
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  std::vector< Matrix< DataType > > CasADi::horzsplit(const Matrix< DataType > &v, const std::vector< int > &offset)
+>------------------------------------------------------------------------
+>
+>split vertically, retaining groups of cols
+>
+>Parameters:
+>-----------
+>
+>offset:  List of all start cols for each group the last col group will run
+>to the end.
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  std::vector< Sparsity > CasADi::horzsplit(const Sparsity &sp, const std::vector< int > &output_offset)
+>------------------------------------------------------------------------
+>
+>Split up a sparsity pattern horizontally.
+-}
+horzsplit
+  :: IMatrix -> Vector Int -> IO (Vector IMatrix)
+horzsplit x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC" c_CasADi__horzsplit_TIC
+  :: Ptr IMatrix' -> CInt -> IO (Ptr (CppVec (Ptr IMatrix')))
+horzsplit'
+  :: IMatrix -> Int -> IO (Vector IMatrix)
+horzsplit' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC" c_CasADi__horzsplit_TIC_TIC
+  :: Ptr IMatrix' -> IO (Ptr (CppVec (Ptr IMatrix')))
+horzsplit''
+  :: IMatrix -> IO (Vector IMatrix)
+horzsplit'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzsplit_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inner_prod" c_CasADi__inner_prod
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::inner_prod(const MX &x, const MX &y)
+>------------------------------------------------------------------------
+>
+>Take the inner product of two vectors Equals.
+>
+>with x and y vectors
+>
+>>  Matrix< DataType > CasADi::inner_prod(const Matrix< DataType > &x, const Matrix< DataType > &y)
+>------------------------------------------------------------------------
+>
+>Inner product of two matrices Equals.
+>
+>with x and y matrices of the same dimension
+>
+>>  T CasADi::inner_prod(const std::vector< T > &a, const std::vector< T > &b)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+inner_prod
+  :: IMatrix -> IMatrix -> IO IMatrix
+inner_prod x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__inner_prod x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__outer_prod" c_CasADi__outer_prod
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::outer_prod(const MX &x, const MX &y)
+>------------------------------------------------------------------------
+>
+>Take the outer product of two vectors Equals.
+>
+>with x and y vectors
+>
+>>  Matrix< DataType > CasADi::outer_prod(const Matrix< DataType > &x, const Matrix< DataType > &y)
+>------------------------------------------------------------------------
+>
+>Outer product of two vectors Equals.
+>
+>with x and y vectors
+-}
+outer_prod
+  :: IMatrix -> IMatrix -> IO IMatrix
+outer_prod x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__outer_prod x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_1" c_CasADi__norm_1
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::norm_1(const MX &x)
+>
+>>  Matrix< DataType > CasADi::norm_1(const Matrix< DataType > &x)
+>------------------------------------------------------------------------
+>
+>1-norm
+>
+>>  T CasADi::norm_1(const std::vector< T > &x)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+norm_1
+  :: IMatrix -> IO IMatrix
+norm_1 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_1 x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_2" c_CasADi__norm_2
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::norm_2(const MX &x)
+>
+>>  Matrix< DataType > CasADi::norm_2(const Matrix< DataType > &x)
+>------------------------------------------------------------------------
+>
+>2-norm
+>
+>>  T CasADi::norm_2(const std::vector< T > &x)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+norm_2
+  :: IMatrix -> IO IMatrix
+norm_2 x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_2 x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_inf" c_CasADi__norm_inf
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::norm_inf(const MX &x)
+>
+>>  Matrix< DataType > CasADi::norm_inf(const Matrix< DataType > &x)
+>------------------------------------------------------------------------
+>
+>Infinity-norm.
+>
+>>  T CasADi::norm_inf(const std::vector< T > &x)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+norm_inf
+  :: IMatrix -> IO IMatrix
+norm_inf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_inf x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_F" c_CasADi__norm_F
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Frobenius norm.
+-}
+norm_F
+  :: IMatrix -> IO IMatrix
+norm_F x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_F x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__qr" c_CasADi__qr
+  :: Ptr IMatrix' -> Ptr IMatrix' -> Ptr IMatrix' -> IO ()
+{-|
+>[INTERNAL]  QR factorization using the
+>modified Gram-Schmidt algorithm More stable than the classical Gram-Schmidt,
+>but may break down if the rows of A are nearly linearly dependent See J.
+>Demmel: Applied Numerical Linear Algebra (algorithm 3.1.). Note that in
+>SWIG, Q and R are returned by value.
+-}
+qr
+  :: IMatrix -> IMatrix -> IMatrix -> IO ()
+qr x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__qr x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__nullspace" c_CasADi__nullspace
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Computes the nullspace of a matrix A.
+>
+>Finds Z m-by-(m-n) such that AZ = 0 with A n-by-m with m > n
+>
+>Assumes A is full rank
+>
+>Inspired by Numerical Methods in Scientific Computing by Ake Bjorck
+-}
+nullspace
+  :: IMatrix -> IO IMatrix
+nullspace x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__nullspace x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__solve" c_CasADi__solve
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  Matrix< double > CasADi::solve(const Matrix< double > &A, const Matrix< double > &b, linearSolverCreator lsolver, const Dictionary &dict=Dictionary())
+>
+>>  MX CasADi::solve(const MX &A, const MX &b, linearSolverCreator lsolver=SymbolicQR::creator, const Dictionary &dict=Dictionary())
+>------------------------------------------------------------------------
+>
+>Solve a system of equations: A*x = b.
+>
+>>  Matrix< DataType > CasADi::solve(const Matrix< DataType > &A, const Matrix< DataType > &b)
+>------------------------------------------------------------------------
+>
+>Solve a system of equations: A*x = b The solve routine works similar to
+>Matlab's backslash when A is square and nonsingular. The algorithm used is
+>the following:
+>
+>A simple forward or backward substitution if A is upper or lower triangular
+>
+>If the linear system is at most 3-by-3, form the inverse via minor expansion
+>and multiply
+>
+>Permute the variables and equations as to get a (structurally) nonzero
+>diagonal, then perform a QR factorization without pivoting and solve the
+>factorized system.
+>
+>Note 1: If there are entries of the linear system known to be zero, these
+>will be removed. Elements that are very small, or will evaluate to be zero,
+>can still cause numerical errors, due to the lack of pivoting (which is not
+>possible since cannot compare the size of entries)
+>
+>Note 2: When permuting the linear system, a BLT (block lower triangular)
+>transformation is formed. Only the permutation part of this is however used.
+>An improvement would be to solve block-by-block if there are multiple BLT
+>blocks.
+-}
+solve
+  :: IMatrix -> IMatrix -> IO IMatrix
+solve x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__solve x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__pinv" c_CasADi__pinv
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  Matrix< double > CasADi::pinv(const Matrix< double > &A, linearSolverCreator lsolver, const Dictionary &dict=Dictionary())
+>
+>>  MX CasADi::pinv(const MX &A, linearSolverCreator lsolver, const Dictionary &dict=Dictionary())
+>------------------------------------------------------------------------
+>
+>Computes the Moore-Penrose pseudo-inverse.
+>
+>If the matrix A is fat (size1>size2), mul(A,pinv(A)) is unity. If the matrix
+>A is slender (size2<size1), mul(pinv(A),A) is unity.
+>
+>>  Matrix< DataType > CasADi::pinv(const Matrix< DataType > &A)
+>------------------------------------------------------------------------
+>
+>Computes the Moore-Penrose pseudo-inverse.
+>
+>If the matrix A is fat (size2>size1), mul(A,pinv(A)) is unity. If the matrix
+>A is slender (size1<size2), mul(pinv(A),A) is unity.
+-}
+pinv
+  :: IMatrix -> IO IMatrix
+pinv x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__pinv x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__repmat" c_CasADi__repmat
+  :: Ptr IMatrix' -> CInt -> CInt -> IO (Ptr IMatrix')
+{-|
+>Repeat matrix A n times vertically and m times horizontally.
+-}
+repmat
+  :: IMatrix -> Int -> Int -> IO IMatrix
+repmat x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__repmat x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__unite" c_CasADi__unite
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Unite two matrices no overlapping sparsity.
+-}
+unite
+  :: IMatrix -> IMatrix -> IO IMatrix
+unite x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__unite x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumRows" c_CasADi__sumRows
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Return a row-wise summation of elements.
+-}
+sumRows
+  :: IMatrix -> IO IMatrix
+sumRows x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumRows x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumCols" c_CasADi__sumCols
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Return a col-wise summation of elements.
+-}
+sumCols
+  :: IMatrix -> IO IMatrix
+sumCols x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumCols x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumAll" c_CasADi__sumAll
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Return summation of all elements.
+-}
+sumAll
+  :: IMatrix -> IO IMatrix
+sumAll x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumAll x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__trace" c_CasADi__trace
+  :: Ptr IMatrix' -> IO CInt
+{-|
+>>  MX CasADi::trace(const MX &A)
+>------------------------------------------------------------------------
+>
+>Matrix trace.
+-}
+trace
+  :: IMatrix -> IO Int
+trace x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__trace x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__diag" c_CasADi__diag
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::diag(const MX &x)
+>------------------------------------------------------------------------
+>
+>Get the diagonal of a matrix or construct a diagonal.
+>
+>When the input is square, the diagonal elements are returned. If the input
+>is vector-like, a diagonal matrix is constructed with it.
+>
+>>  Matrix< DataType > CasADi::diag(const Matrix< DataType > &A)
+>------------------------------------------------------------------------
+>
+>Get the diagonal of a matrix or construct a diagonal When the input is
+>square, the diagonal elements are returned. If the input is vector- like, a
+>diagonal matrix is constructed with it.
+-}
+diag
+  :: IMatrix -> IO IMatrix
+diag x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__diag x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blkdiag" c_CasADi__blkdiag
+  :: Ptr (CppVec (Ptr IMatrix')) -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::blkdiag(const std::vector< MX > &A)
+>
+>>  MX CasADi::blkdiag(const MX &A, const MX &B)
+>------------------------------------------------------------------------
+>
+>Construct a matrix with given blocks on the diagonal.
+>
+>>  Matrix< DataType > CasADi::blkdiag(const std::vector< Matrix< DataType > > &A)
+>------------------------------------------------------------------------
+>
+>Construct a matrix with given block on the diagonal.
+>
+>>  Sparsity CasADi::blkdiag(const std::vector< Sparsity > &v)
+>------------------------------------------------------------------------
+>
+>Construct a Sparsity with given blocks on the diagonal.
+-}
+blkdiag
+  :: Vector IMatrix -> IO IMatrix
+blkdiag x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blkdiag x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__polyval" c_CasADi__polyval
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Evaluate a polynomial with coefficeints p in x.
+-}
+polyval
+  :: IMatrix -> IMatrix -> IO IMatrix
+polyval x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__polyval x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__addMultiple" c_CasADi__addMultiple
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> CInt -> IO ()
+{-|
+>same as: res += mul(A,v)
+-}
+addMultiple
+  :: IMatrix -> Vector Int -> Vector Int -> Bool -> IO ()
+addMultiple x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__addMultiple x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__addMultiple_TIC" c_CasADi__addMultiple_TIC
+  :: Ptr IMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO ()
+addMultiple'
+  :: IMatrix -> Vector Int -> Vector Int -> IO ()
+addMultiple' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__addMultiple_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__veccat" c_CasADi__veccat
+  :: Ptr (CppVec (Ptr IMatrix')) -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::veccat(const std::vector< MX > &comp)
+>------------------------------------------------------------------------
+>
+>Concatenate vertically while vectorizing all arguments.
+>
+>>  Matrix< DataType > CasADi::veccat(const std::vector< Matrix< DataType > > &comp)
+>------------------------------------------------------------------------
+>
+>concatenate vertically while vectorizing all arguments with vec
+-}
+veccat
+  :: Vector IMatrix -> IO IMatrix
+veccat x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__veccat x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZcat" c_CasADi__vecNZcat
+  :: Ptr (CppVec (Ptr IMatrix')) -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::vecNZcat(const std::vector< MX > &comp)
+>------------------------------------------------------------------------
+>
+>concatenate vertically while vecing all arguments with vecNZ
+>
+>>  Matrix< DataType > CasADi::vecNZcat(const std::vector< Matrix< DataType > > &comp)
+>------------------------------------------------------------------------
+>
+>concatenate vertically while vectorizing all arguments with vecNZ
+-}
+vecNZcat
+  :: Vector IMatrix -> IO IMatrix
+vecNZcat x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZcat x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__project" c_CasADi__project
+  :: Ptr IMatrix' -> Ptr Sparsity' -> IO (Ptr IMatrix')
+{-|
+>Create a new matrix with a given sparsity pattern but with the nonzeros
+>taken from an existing matrix.
+-}
+project
+  :: IMatrix -> Sparsity -> IO IMatrix
+project x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__project x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sprank" c_CasADi__sprank
+  :: Ptr IMatrix' -> IO CInt
+{-|
+>Obtain the structural rank of a sparsity-pattern.
+-}
+sprank
+  :: IMatrix -> IO Int
+sprank x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sprank x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__kron" c_CasADi__kron
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>Kronecker tensor product.
+>
+>Creates a block matrix in which each element (i,j) is a_ij*b
+-}
+kron
+  :: IMatrix -> IMatrix -> IO IMatrix
+kron x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__kron x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sparse" c_CasADi__sparse
+  :: Ptr IMatrix' -> CDouble -> IO (Ptr IMatrix')
+{-|
+>Make a matrix sparse by removing numerical zeros.
+-}
+sparse
+  :: IMatrix -> Double -> IO IMatrix
+sparse x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__sparse x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sparse_TIC" c_CasADi__sparse_TIC
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+sparse'
+  :: IMatrix -> IO IMatrix
+sparse' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sparse_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__dense" c_CasADi__dense
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MX CasADi::dense(const MX &x)
+>------------------------------------------------------------------------
+>
+>create a clipped view into a matrix Create a sparse matrix from a dense
+>matrix A, with sparsity pattern sp
+>
+>MX clip(const MX& A, const Sparsity& sp) { Join the sparsity patterns
+>std::vector<int> mapping; Sparsity sp =
+>A.sparsity().patternIntersection(sp,mapping);
+>
+>Split up the mapping std::vector<int> nzA,nzB;
+>
+>Copy sparsity for(int k=0; k<mapping.size(); ++k){ if(mapping[k]<0){
+>nzA.push_back(k); } else if(mapping[k]>0){ nzB.push_back(k); } else { throw
+>CasadiException("Pattern intersection not empty"); } }
+>
+>Create mapping MX ret; ret.assignNode(new Mapping(sp));
+>ret->assign(A,range(nzA.size()),nzA); ret->assign(B,range(nzB.size()),nzB);
+>return ret;
+>
+>}
+>
+>Make the matrix dense if not already
+>
+>>  Matrix< DataType > CasADi::dense(const Matrix< DataType > &A)
+>------------------------------------------------------------------------
+>
+>Make a matrix dense.
+-}
+dense
+  :: IMatrix -> IO IMatrix
+dense x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__dense x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__transpose_TIC" c_CasADi__transpose_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+transpose'
+  :: DMatrix -> IO DMatrix
+transpose' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__transpose_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+mul'''
+  :: DMatrix -> DMatrix -> Sparsity -> IO DMatrix
+mul''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__mul_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+mul''''
+  :: DMatrix -> DMatrix -> IO DMatrix
+mul'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
+mul'''''
+  :: Vector DMatrix -> IO DMatrix
+mul''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__det_TIC" c_CasADi__det_TIC
+  :: Ptr DMatrix' -> IO CDouble
+det'
+  :: DMatrix -> IO Double
+det' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__det_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getMinor_TIC" c_CasADi__getMinor_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO CDouble
+getMinor'
+  :: DMatrix -> Int -> Int -> IO Double
+getMinor' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__getMinor_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cofactor_TIC" c_CasADi__cofactor_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO CDouble
+cofactor'
+  :: DMatrix -> Int -> Int -> IO Double
+cofactor' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cofactor_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__adj_TIC" c_CasADi__adj_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+adj'
+  :: DMatrix -> IO DMatrix
+adj' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__adj_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inv_TIC" c_CasADi__inv_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+inv'
+  :: DMatrix -> IO DMatrix
+inv' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__inv_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC_TIC" c_CasADi__reshape_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr DMatrix')
+reshape''
+  :: DMatrix -> Int -> Int -> IO DMatrix
+reshape'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__reshape_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+reshape'''
+  :: DMatrix -> Sparsity -> IO DMatrix
+reshape''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__reshape_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vec_TIC" c_CasADi__vec_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+vec'
+  :: DMatrix -> IO DMatrix
+vec' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vec_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZ_TIC" c_CasADi__vecNZ_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+vecNZ'
+  :: DMatrix -> IO DMatrix
+vecNZ' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZ_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blockcat_TIC" c_CasADi__blockcat_TIC
+  :: Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))) -> IO (Ptr DMatrix')
+blockcat'
+  :: Vector (Vector DMatrix) -> IO DMatrix
+blockcat' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blockcat_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
+blocksplit''''
+  :: DMatrix -> Vector Int -> Vector Int -> IO (Vector (Vector DMatrix))
+blocksplit'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
+blocksplit'''''
+  :: DMatrix -> Int -> Int -> IO (Vector (Vector DMatrix))
+blocksplit''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
+blocksplit''''''
+  :: DMatrix -> Int -> IO (Vector (Vector DMatrix))
+blocksplit'''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr DMatrix')))))
+blocksplit'''''''
+  :: DMatrix -> IO (Vector (Vector DMatrix))
+blocksplit''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertcat_TIC" c_CasADi__vertcat_TIC
+  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
+vertcat'
+  :: Vector DMatrix -> IO DMatrix
+vertcat' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertcat_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr DMatrix')))
+vertsplit'''
+  :: DMatrix -> Vector Int -> IO (Vector DMatrix)
+vertsplit''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
+vertsplit''''
+  :: DMatrix -> Int -> IO (Vector DMatrix)
+vertsplit'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr DMatrix')))
+vertsplit'''''
+  :: DMatrix -> IO (Vector DMatrix)
+vertsplit''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzcat_TIC" c_CasADi__horzcat_TIC
+  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
+horzcat'
+  :: Vector DMatrix -> IO DMatrix
+horzcat' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzcat_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr DMatrix')))
+horzsplit'''
+  :: DMatrix -> Vector Int -> IO (Vector DMatrix)
+horzsplit''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> CInt -> IO (Ptr (CppVec (Ptr DMatrix')))
+horzsplit''''
+  :: DMatrix -> Int -> IO (Vector DMatrix)
+horzsplit'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr (CppVec (Ptr DMatrix')))
+horzsplit'''''
+  :: DMatrix -> IO (Vector DMatrix)
+horzsplit''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inner_prod_TIC" c_CasADi__inner_prod_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+inner_prod'
+  :: DMatrix -> DMatrix -> IO DMatrix
+inner_prod' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__inner_prod_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__outer_prod_TIC" c_CasADi__outer_prod_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+outer_prod'
+  :: DMatrix -> DMatrix -> IO DMatrix
+outer_prod' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__outer_prod_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_1_TIC" c_CasADi__norm_1_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+norm_1'
+  :: DMatrix -> IO DMatrix
+norm_1' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_1_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_2_TIC" c_CasADi__norm_2_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+norm_2'
+  :: DMatrix -> IO DMatrix
+norm_2' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_2_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_inf_TIC" c_CasADi__norm_inf_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+norm_inf'
+  :: DMatrix -> IO DMatrix
+norm_inf' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_inf_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_F_TIC" c_CasADi__norm_F_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+norm_F'
+  :: DMatrix -> IO DMatrix
+norm_F' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_F_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__qr_TIC" c_CasADi__qr_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> Ptr DMatrix' -> IO ()
+qr'
+  :: DMatrix -> DMatrix -> DMatrix -> IO ()
+qr' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__qr_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__nullspace_TIC" c_CasADi__nullspace_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+nullspace'
+  :: DMatrix -> IO DMatrix
+nullspace' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__nullspace_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__solve_TIC" c_CasADi__solve_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+solve'
+  :: DMatrix -> DMatrix -> IO DMatrix
+solve' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__solve_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__pinv_TIC" c_CasADi__pinv_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+pinv'
+  :: DMatrix -> IO DMatrix
+pinv' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__pinv_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__repmat_TIC" c_CasADi__repmat_TIC
+  :: Ptr DMatrix' -> CInt -> CInt -> IO (Ptr DMatrix')
+repmat'
+  :: DMatrix -> Int -> Int -> IO DMatrix
+repmat' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__repmat_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__unite_TIC" c_CasADi__unite_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+unite'
+  :: DMatrix -> DMatrix -> IO DMatrix
+unite' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__unite_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumRows_TIC" c_CasADi__sumRows_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+sumRows'
+  :: DMatrix -> IO DMatrix
+sumRows' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumRows_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumCols_TIC" c_CasADi__sumCols_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+sumCols'
+  :: DMatrix -> IO DMatrix
+sumCols' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumCols_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumAll_TIC" c_CasADi__sumAll_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+sumAll'
+  :: DMatrix -> IO DMatrix
+sumAll' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumAll_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__trace_TIC" c_CasADi__trace_TIC
+  :: Ptr DMatrix' -> IO CDouble
+trace'
+  :: DMatrix -> IO Double
+trace' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__trace_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__diag_TIC" c_CasADi__diag_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+diag'
+  :: DMatrix -> IO DMatrix
+diag' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__diag_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blkdiag_TIC" c_CasADi__blkdiag_TIC
+  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
+blkdiag'
+  :: Vector DMatrix -> IO DMatrix
+blkdiag' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blkdiag_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__polyval_TIC" c_CasADi__polyval_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+polyval'
+  :: DMatrix -> DMatrix -> IO DMatrix
+polyval' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__polyval_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC" c_CasADi__addMultiple_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> CInt -> IO ()
+addMultiple''
+  :: DMatrix -> Vector Double -> Vector Double -> Bool -> IO ()
+addMultiple'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__addMultiple_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC_TIC" c_CasADi__addMultiple_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr (CppVec CDouble) -> Ptr (CppVec CDouble) -> IO ()
+addMultiple'''
+  :: DMatrix -> Vector Double -> Vector Double -> IO ()
+addMultiple''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__addMultiple_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__veccat_TIC" c_CasADi__veccat_TIC
+  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
+veccat'
+  :: Vector DMatrix -> IO DMatrix
+veccat' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__veccat_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZcat_TIC" c_CasADi__vecNZcat_TIC
+  :: Ptr (CppVec (Ptr DMatrix')) -> IO (Ptr DMatrix')
+vecNZcat'
+  :: Vector DMatrix -> IO DMatrix
+vecNZcat' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZcat_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__project_TIC" c_CasADi__project_TIC
+  :: Ptr DMatrix' -> Ptr Sparsity' -> IO (Ptr DMatrix')
+project'
+  :: DMatrix -> Sparsity -> IO DMatrix
+project' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__project_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sprank_TIC" c_CasADi__sprank_TIC
+  :: Ptr DMatrix' -> IO CInt
+sprank'
+  :: DMatrix -> IO Int
+sprank' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sprank_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__kron_TIC" c_CasADi__kron_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+kron'
+  :: DMatrix -> DMatrix -> IO DMatrix
+kron' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__kron_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sparse_TIC_TIC" c_CasADi__sparse_TIC_TIC
+  :: Ptr DMatrix' -> CDouble -> IO (Ptr DMatrix')
+sparse''
+  :: DMatrix -> Double -> IO DMatrix
+sparse'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__sparse_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sparse_TIC_TIC_TIC" c_CasADi__sparse_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+sparse'''
+  :: DMatrix -> IO DMatrix
+sparse''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sparse_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__dense_TIC" c_CasADi__dense_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+dense'
+  :: DMatrix -> IO DMatrix
+dense' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__dense_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__transpose_TIC_TIC" c_CasADi__transpose_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+transpose''
+  :: SX -> IO SX
+transpose'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__transpose_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+mul''''''
+  :: SX -> SX -> Sparsity -> IO SX
+mul'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+mul'''''''
+  :: SX -> SX -> IO SX
+mul''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
+mul''''''''
+  :: Vector SX -> IO SX
+mul'''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__det_TIC_TIC" c_CasADi__det_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SXElement')
+det''
+  :: SX -> IO SXElement
+det'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__det_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getMinor_TIC_TIC" c_CasADi__getMinor_TIC_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr SXElement')
+getMinor''
+  :: SX -> Int -> Int -> IO SXElement
+getMinor'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__getMinor_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cofactor_TIC_TIC" c_CasADi__cofactor_TIC_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr SXElement')
+cofactor''
+  :: SX -> Int -> Int -> IO SXElement
+cofactor'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cofactor_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__adj_TIC_TIC" c_CasADi__adj_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+adj''
+  :: SX -> IO SX
+adj'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__adj_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inv_TIC_TIC" c_CasADi__inv_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+inv''
+  :: SX -> IO SX
+inv'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__inv_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr SX')
+reshape''''
+  :: SX -> Int -> Int -> IO SX
+reshape'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__reshape_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+reshape'''''
+  :: SX -> Sparsity -> IO SX
+reshape''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vec_TIC_TIC" c_CasADi__vec_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+vec''
+  :: SX -> IO SX
+vec'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vec_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZ_TIC_TIC" c_CasADi__vecNZ_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+vecNZ''
+  :: SX -> IO SX
+vecNZ'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZ_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blockcat_TIC_TIC" c_CasADi__blockcat_TIC_TIC
+  :: Ptr (CppVec (Ptr (CppVec (Ptr SX')))) -> IO (Ptr SX')
+blockcat''
+  :: Vector (Vector SX) -> IO SX
+blockcat'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blockcat_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SX')))))
+blocksplit''''''''
+  :: SX -> Vector Int -> Vector Int -> IO (Vector (Vector SX))
+blocksplit'''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SX')))))
+blocksplit'''''''''
+  :: SX -> Int -> Int -> IO (Vector (Vector SX))
+blocksplit''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SX')))))
+blocksplit''''''''''
+  :: SX -> Int -> IO (Vector (Vector SX))
+blocksplit'''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr SX')))))
+blocksplit'''''''''''
+  :: SX -> IO (Vector (Vector SX))
+blocksplit''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertcat_TIC_TIC" c_CasADi__vertcat_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
+vertcat''
+  :: Vector SX -> IO SX
+vertcat'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertcat_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr SX')))
+vertsplit''''''
+  :: SX -> Vector Int -> IO (Vector SX)
+vertsplit'''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> CInt -> IO (Ptr (CppVec (Ptr SX')))
+vertsplit'''''''
+  :: SX -> Int -> IO (Vector SX)
+vertsplit''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> IO (Ptr (CppVec (Ptr SX')))
+vertsplit''''''''
+  :: SX -> IO (Vector SX)
+vertsplit'''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzcat_TIC_TIC" c_CasADi__horzcat_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
+horzcat''
+  :: Vector SX -> IO SX
+horzcat'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzcat_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr SX')))
+horzsplit''''''
+  :: SX -> Vector Int -> IO (Vector SX)
+horzsplit'''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> CInt -> IO (Ptr (CppVec (Ptr SX')))
+horzsplit'''''''
+  :: SX -> Int -> IO (Vector SX)
+horzsplit''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> IO (Ptr (CppVec (Ptr SX')))
+horzsplit''''''''
+  :: SX -> IO (Vector SX)
+horzsplit'''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inner_prod_TIC_TIC" c_CasADi__inner_prod_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+inner_prod''
+  :: SX -> SX -> IO SX
+inner_prod'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__inner_prod_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__outer_prod_TIC_TIC" c_CasADi__outer_prod_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+outer_prod''
+  :: SX -> SX -> IO SX
+outer_prod'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__outer_prod_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_1_TIC_TIC" c_CasADi__norm_1_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+norm_1''
+  :: SX -> IO SX
+norm_1'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_1_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_2_TIC_TIC" c_CasADi__norm_2_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+norm_2''
+  :: SX -> IO SX
+norm_2'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_2_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_inf_TIC_TIC" c_CasADi__norm_inf_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+norm_inf''
+  :: SX -> IO SX
+norm_inf'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_inf_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_F_TIC_TIC" c_CasADi__norm_F_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+norm_F''
+  :: SX -> IO SX
+norm_F'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_F_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__qr_TIC_TIC" c_CasADi__qr_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO ()
+qr''
+  :: SX -> SX -> SX -> IO ()
+qr'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__qr_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__nullspace_TIC_TIC" c_CasADi__nullspace_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+nullspace''
+  :: SX -> IO SX
+nullspace'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__nullspace_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__solve_TIC_TIC" c_CasADi__solve_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+solve''
+  :: SX -> SX -> IO SX
+solve'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__solve_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__pinv_TIC_TIC" c_CasADi__pinv_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+pinv''
+  :: SX -> IO SX
+pinv'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__pinv_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__repmat_TIC_TIC" c_CasADi__repmat_TIC_TIC
+  :: Ptr SX' -> CInt -> CInt -> IO (Ptr SX')
+repmat''
+  :: SX -> Int -> Int -> IO SX
+repmat'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__repmat_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__unite_TIC_TIC" c_CasADi__unite_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+unite''
+  :: SX -> SX -> IO SX
+unite'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__unite_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumRows_TIC_TIC" c_CasADi__sumRows_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+sumRows''
+  :: SX -> IO SX
+sumRows'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumRows_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumCols_TIC_TIC" c_CasADi__sumCols_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+sumCols''
+  :: SX -> IO SX
+sumCols'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumCols_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumAll_TIC_TIC" c_CasADi__sumAll_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+sumAll''
+  :: SX -> IO SX
+sumAll'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumAll_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__trace_TIC_TIC" c_CasADi__trace_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SXElement')
+trace''
+  :: SX -> IO SXElement
+trace'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__trace_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__diag_TIC_TIC" c_CasADi__diag_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+diag''
+  :: SX -> IO SX
+diag'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__diag_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blkdiag_TIC_TIC" c_CasADi__blkdiag_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
+blkdiag''
+  :: Vector SX -> IO SX
+blkdiag'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blkdiag_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__polyval_TIC_TIC" c_CasADi__polyval_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+polyval''
+  :: SX -> SX -> IO SX
+polyval'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__polyval_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC_TIC_TIC" c_CasADi__addMultiple_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> CInt -> IO ()
+addMultiple''''
+  :: SX -> Vector SXElement -> Vector SXElement -> Bool -> IO ()
+addMultiple'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__addMultiple_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__addMultiple_TIC_TIC_TIC_TIC_TIC" c_CasADi__addMultiple_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> IO ()
+addMultiple'''''
+  :: SX -> Vector SXElement -> Vector SXElement -> IO ()
+addMultiple''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__addMultiple_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__veccat_TIC_TIC" c_CasADi__veccat_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
+veccat''
+  :: Vector SX -> IO SX
+veccat'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__veccat_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZcat_TIC_TIC" c_CasADi__vecNZcat_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> IO (Ptr SX')
+vecNZcat''
+  :: Vector SX -> IO SX
+vecNZcat'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZcat_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__project_TIC_TIC" c_CasADi__project_TIC_TIC
+  :: Ptr SX' -> Ptr Sparsity' -> IO (Ptr SX')
+project''
+  :: SX -> Sparsity -> IO SX
+project'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__project_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sprank_TIC_TIC" c_CasADi__sprank_TIC_TIC
+  :: Ptr SX' -> IO CInt
+sprank''
+  :: SX -> IO Int
+sprank'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sprank_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__kron_TIC_TIC" c_CasADi__kron_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+kron''
+  :: SX -> SX -> IO SX
+kron'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__kron_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sparse_TIC_TIC_TIC_TIC" c_CasADi__sparse_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> CDouble -> IO (Ptr SX')
+sparse''''
+  :: SX -> Double -> IO SX
+sparse'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__sparse_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sparse_TIC_TIC_TIC_TIC_TIC" c_CasADi__sparse_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+sparse'''''
+  :: SX -> IO SX
+sparse''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sparse_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__dense_TIC_TIC" c_CasADi__dense_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+dense''
+  :: SX -> IO SX
+dense'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__dense_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross" c_CasADi__cross
+  :: Ptr GenIMatrix' -> Ptr GenIMatrix' -> CInt -> IO (Ptr IMatrix')
+{-|
+>Matlab's cross command.
+-}
+cross
+  :: GenIMatrix -> GenIMatrix -> Int -> IO IMatrix
+cross x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cross x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC" c_CasADi__cross_TIC
+  :: Ptr GenIMatrix' -> Ptr GenIMatrix' -> IO (Ptr IMatrix')
+cross'
+  :: GenIMatrix -> GenIMatrix -> IO IMatrix
+cross' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__cross_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril2symm" c_CasADi__tril2symm
+  :: Ptr GenIMatrix' -> IO (Ptr IMatrix')
+{-|
+>Convert a lower triangular matrix to a symmetric one.
+-}
+tril2symm
+  :: GenIMatrix -> IO IMatrix
+tril2symm x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril2symm x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu2symm" c_CasADi__triu2symm
+  :: Ptr GenIMatrix' -> IO (Ptr IMatrix')
+{-|
+>Convert a upper triangular matrix to a symmetric one.
+-}
+triu2symm
+  :: GenIMatrix -> IO IMatrix
+triu2symm x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu2symm x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu" c_CasADi__triu
+  :: Ptr GenIMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MatType CasADi::triu(const GenericMatrix< MatType > &a)
+>------------------------------------------------------------------------
+>
+>Get the upper triangular part of a matrix.
+>
+>>  Sparsity CasADi::triu(const Sparsity &sp, bool includeDiagonal=true)
+>------------------------------------------------------------------------
+>
+>Get upper triangular part.
+-}
+triu
+  :: GenIMatrix -> IO IMatrix
+triu x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril" c_CasADi__tril
+  :: Ptr GenIMatrix' -> IO (Ptr IMatrix')
+{-|
+>>  MatType CasADi::tril(const GenericMatrix< MatType > &a)
+>------------------------------------------------------------------------
+>
+>Get the lower triangular part of a matrix.
+>
+>>  Sparsity CasADi::tril(const Sparsity &sp, bool includeDiagonal=true)
+>------------------------------------------------------------------------
+>
+>Get lower triangular part.
+-}
+tril
+  :: GenIMatrix -> IO IMatrix
+tril x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isEqual" c_CasADi__isEqual
+  :: Ptr GenIMatrix' -> Ptr GenIMatrix' -> IO CInt
+{-|
+>>  bool CasADi::isEqual(const GenericMatrix< MatType > &x, const GenericMatrix< MatType > &y)
+>------------------------------------------------------------------------
+>
+>Check if two expressions are equal, assuming that they are comparible.
+>
+>>  bool CasADi::isEqual(const MX &ex1, const MX &ex2)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+-}
+isEqual
+  :: GenIMatrix -> GenIMatrix -> IO Bool
+isEqual x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__isEqual x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC_TIC" c_CasADi__cross_TIC_TIC
+  :: Ptr GenDMatrix' -> Ptr GenDMatrix' -> CInt -> IO (Ptr DMatrix')
+cross''
+  :: GenDMatrix -> GenDMatrix -> Int -> IO DMatrix
+cross'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cross_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC_TIC_TIC" c_CasADi__cross_TIC_TIC_TIC
+  :: Ptr GenDMatrix' -> Ptr GenDMatrix' -> IO (Ptr DMatrix')
+cross'''
+  :: GenDMatrix -> GenDMatrix -> IO DMatrix
+cross''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__cross_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril2symm_TIC" c_CasADi__tril2symm_TIC
+  :: Ptr GenDMatrix' -> IO (Ptr DMatrix')
+tril2symm'
+  :: GenDMatrix -> IO DMatrix
+tril2symm' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril2symm_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu2symm_TIC" c_CasADi__triu2symm_TIC
+  :: Ptr GenDMatrix' -> IO (Ptr DMatrix')
+triu2symm'
+  :: GenDMatrix -> IO DMatrix
+triu2symm' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu2symm_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu_TIC" c_CasADi__triu_TIC
+  :: Ptr GenDMatrix' -> IO (Ptr DMatrix')
+triu'
+  :: GenDMatrix -> IO DMatrix
+triu' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril_TIC" c_CasADi__tril_TIC
+  :: Ptr GenDMatrix' -> IO (Ptr DMatrix')
+tril'
+  :: GenDMatrix -> IO DMatrix
+tril' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isEqual_TIC" c_CasADi__isEqual_TIC
+  :: Ptr GenDMatrix' -> Ptr GenDMatrix' -> IO CInt
+isEqual'
+  :: GenDMatrix -> GenDMatrix -> IO Bool
+isEqual' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__isEqual_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC_TIC_TIC_TIC" c_CasADi__cross_TIC_TIC_TIC_TIC
+  :: Ptr GenSX' -> Ptr GenSX' -> CInt -> IO (Ptr SX')
+cross''''
+  :: GenSX -> GenSX -> Int -> IO SX
+cross'''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cross_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC_TIC_TIC_TIC_TIC" c_CasADi__cross_TIC_TIC_TIC_TIC_TIC
+  :: Ptr GenSX' -> Ptr GenSX' -> IO (Ptr SX')
+cross'''''
+  :: GenSX -> GenSX -> IO SX
+cross''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__cross_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril2symm_TIC_TIC" c_CasADi__tril2symm_TIC_TIC
+  :: Ptr GenSX' -> IO (Ptr SX')
+tril2symm''
+  :: GenSX -> IO SX
+tril2symm'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril2symm_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu2symm_TIC_TIC" c_CasADi__triu2symm_TIC_TIC
+  :: Ptr GenSX' -> IO (Ptr SX')
+triu2symm''
+  :: GenSX -> IO SX
+triu2symm'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu2symm_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu_TIC_TIC" c_CasADi__triu_TIC_TIC
+  :: Ptr GenSX' -> IO (Ptr SX')
+triu''
+  :: GenSX -> IO SX
+triu'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril_TIC_TIC" c_CasADi__tril_TIC_TIC
+  :: Ptr GenSX' -> IO (Ptr SX')
+tril''
+  :: GenSX -> IO SX
+tril'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isEqual_TIC_TIC" c_CasADi__isEqual_TIC_TIC
+  :: Ptr GenSX' -> Ptr GenSX' -> IO CInt
+isEqual''
+  :: GenSX -> GenSX -> IO Bool
+isEqual'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__isEqual_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__cross_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr GenMX' -> Ptr GenMX' -> CInt -> IO (Ptr MX')
+cross''''''
+  :: GenMX -> GenMX -> Int -> IO MX
+cross'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__cross_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__cross_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__cross_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr GenMX' -> Ptr GenMX' -> IO (Ptr MX')
+cross'''''''
+  :: GenMX -> GenMX -> IO MX
+cross''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__cross_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril2symm_TIC_TIC_TIC" c_CasADi__tril2symm_TIC_TIC_TIC
+  :: Ptr GenMX' -> IO (Ptr MX')
+tril2symm'''
+  :: GenMX -> IO MX
+tril2symm''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril2symm_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu2symm_TIC_TIC_TIC" c_CasADi__triu2symm_TIC_TIC_TIC
+  :: Ptr GenMX' -> IO (Ptr MX')
+triu2symm'''
+  :: GenMX -> IO MX
+triu2symm''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu2symm_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu_TIC_TIC_TIC" c_CasADi__triu_TIC_TIC_TIC
+  :: Ptr GenMX' -> IO (Ptr MX')
+triu'''
+  :: GenMX -> IO MX
+triu''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril_TIC_TIC_TIC" c_CasADi__tril_TIC_TIC_TIC
+  :: Ptr GenMX' -> IO (Ptr MX')
+tril'''
+  :: GenMX -> IO MX
+tril''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__isEqual_TIC_TIC_TIC" c_CasADi__isEqual_TIC_TIC_TIC
+  :: Ptr GenMX' -> Ptr GenMX' -> IO CInt
+isEqual'''
+  :: GenMX -> GenMX -> IO Bool
+isEqual''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__isEqual_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__linspace" c_CasADi__linspace
+  :: Ptr GenDMatrix' -> Ptr GenDMatrix' -> CInt -> IO (Ptr DMatrix')
+{-|
+>>  MatType CasADi::linspace(const GenericMatrix< MatType > &a, const GenericMatrix< MatType > &b, int nsteps)
+>------------------------------------------------------------------------
+>
+>Matlab's linspace command.
+>
+>>  void CasADi::linspace(std::vector< T > &v, const F &first, const L &last)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Matlab's linspace.
+-}
+linspace
+  :: GenDMatrix -> GenDMatrix -> Int -> IO DMatrix
+linspace x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__linspace x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__linspace_TIC" c_CasADi__linspace_TIC
+  :: Ptr GenSX' -> Ptr GenSX' -> CInt -> IO (Ptr SX')
+linspace'
+  :: GenSX -> GenSX -> Int -> IO SX
+linspace' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__linspace_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__linspace_TIC_TIC" c_CasADi__linspace_TIC_TIC
+  :: Ptr GenMX' -> Ptr GenMX' -> CInt -> IO (Ptr MX')
+linspace''
+  :: GenMX -> GenMX -> Int -> IO MX
+linspace'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__linspace_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and" c_CasADi__logic_and
+  :: CInt -> CInt -> IO CInt
+{-|
+>Logical and, returns (an expression evaluating to) 1 if both expressions are
+>nonzero and 0 otherwise.
+-}
+logic_and
+  :: Int -> Int -> IO Int
+logic_and x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or" c_CasADi__logic_or
+  :: CInt -> CInt -> IO CInt
+{-|
+>Logical or, returns (an expression evaluating to) 1 if at least one
+>expression is nonzero and 0 otherwise.
+-}
+logic_or
+  :: Int -> Int -> IO Int
+logic_or x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not" c_CasADi__logic_not
+  :: CInt -> IO CInt
+{-|
+>Logical not, returns (an expression evaluating to) 1 if expression is zero
+>and 0 otherwise.
+-}
+logic_not
+  :: Int -> IO Int
+logic_not x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and_TIC" c_CasADi__logic_and_TIC
+  :: CDouble -> CDouble -> IO CDouble
+logic_and'
+  :: Double -> Double -> IO Double
+logic_and' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or_TIC" c_CasADi__logic_or_TIC
+  :: CDouble -> CDouble -> IO CDouble
+logic_or'
+  :: Double -> Double -> IO Double
+logic_or' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not_TIC" c_CasADi__logic_not_TIC
+  :: CDouble -> IO CDouble
+logic_not'
+  :: Double -> IO Double
+logic_not' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and_TIC_TIC" c_CasADi__logic_and_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+logic_and''
+  :: IMatrix -> IMatrix -> IO IMatrix
+logic_and'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or_TIC_TIC" c_CasADi__logic_or_TIC_TIC
+  :: Ptr IMatrix' -> Ptr IMatrix' -> IO (Ptr IMatrix')
+logic_or''
+  :: IMatrix -> IMatrix -> IO IMatrix
+logic_or'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not_TIC_TIC" c_CasADi__logic_not_TIC_TIC
+  :: Ptr IMatrix' -> IO (Ptr IMatrix')
+logic_not''
+  :: IMatrix -> IO IMatrix
+logic_not'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+logic_and'''
+  :: DMatrix -> DMatrix -> IO DMatrix
+logic_and''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC
+  :: Ptr DMatrix' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+logic_or'''
+  :: DMatrix -> DMatrix -> IO DMatrix
+logic_or''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC
+  :: Ptr DMatrix' -> IO (Ptr DMatrix')
+logic_not'''
+  :: DMatrix -> IO DMatrix
+logic_not''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+logic_and''''
+  :: SX -> SX -> IO SX
+logic_and'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+logic_or''''
+  :: SX -> SX -> IO SX
+logic_or'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC_TIC
+  :: Ptr SX' -> IO (Ptr SX')
+logic_not''''
+  :: SX -> IO SX
+logic_not'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+logic_and'''''
+  :: MX -> MX -> IO MX
+logic_and''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+logic_or'''''
+  :: MX -> MX -> IO MX
+logic_or''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+logic_not'''''
+  :: MX -> IO MX
+logic_not''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_and_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+logic_and''''''
+  :: SXElement -> SXElement -> IO SXElement
+logic_and'''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_and_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_or_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXElement' -> Ptr SXElement' -> IO (Ptr SXElement')
+logic_or''''''
+  :: SXElement -> SXElement -> IO SXElement
+logic_or'''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__logic_or_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__logic_not_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr SXElement' -> IO (Ptr SXElement')
+logic_not''''''
+  :: SXElement -> IO SXElement
+logic_not'''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__logic_not_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> CInt -> CInt -> IO (Ptr Sparsity')
+reshape''''''
+  :: Sparsity -> Int -> Int -> IO Sparsity
+reshape'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__transpose_TIC_TIC_TIC" c_CasADi__transpose_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+transpose'''
+  :: Sparsity -> IO Sparsity
+transpose''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__transpose_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vec_TIC_TIC_TIC" c_CasADi__vec_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+vec'''
+  :: Sparsity -> IO Sparsity
+vec''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vec_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr Sparsity' -> IO (Ptr Sparsity')
+mul'''''''''
+  :: Sparsity -> Sparsity -> IO Sparsity
+mul''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertcat_TIC_TIC_TIC" c_CasADi__vertcat_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr Sparsity')
+vertcat'''
+  :: Vector Sparsity -> IO Sparsity
+vertcat''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertcat_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzcat_TIC_TIC_TIC" c_CasADi__horzcat_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr Sparsity')
+horzcat'''
+  :: Vector Sparsity -> IO Sparsity
+horzcat''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzcat_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blkdiag_TIC_TIC_TIC" c_CasADi__blkdiag_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr Sparsity')) -> IO (Ptr Sparsity')
+blkdiag'''
+  :: Vector Sparsity -> IO Sparsity
+blkdiag''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blkdiag_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr Sparsity')))
+horzsplit'''''''''
+  :: Sparsity -> Vector Int -> IO (Vector Sparsity)
+horzsplit''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr Sparsity')))
+vertsplit'''''''''
+  :: Sparsity -> Vector Int -> IO (Vector Sparsity)
+vertsplit''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__rank" c_CasADi__rank
+  :: Ptr Sparsity' -> IO CInt
+{-|
+>Obtain the structural rank of a sparsity-pattern.
+-}
+rank
+  :: Sparsity -> IO Int
+rank x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__rank x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu_TIC_TIC_TIC_TIC" c_CasADi__triu_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+triu''''
+  :: Sparsity -> Bool -> IO Sparsity
+triu'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__triu_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triu_TIC_TIC_TIC_TIC_TIC" c_CasADi__triu_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+triu'''''
+  :: Sparsity -> IO Sparsity
+triu''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triu_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril_TIC_TIC_TIC_TIC" c_CasADi__tril_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> CInt -> IO (Ptr Sparsity')
+tril''''
+  :: Sparsity -> Bool -> IO Sparsity
+tril'''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__tril_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tril_TIC_TIC_TIC_TIC_TIC" c_CasADi__tril_TIC_TIC_TIC_TIC_TIC
+  :: Ptr Sparsity' -> IO (Ptr Sparsity')
+tril'''''
+  :: Sparsity -> IO Sparsity
+tril''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__tril_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__expand" c_CasADi__expand
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO ()
+{-|
+>Expand the expression as a weighted sum (with constant weights)
+-}
+expand
+  :: SX -> SX -> SX -> IO ()
+expand x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__expand x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__simplify" c_CasADi__simplify
+  :: Ptr SXElement' -> IO ()
+{-|
+>>  void CasADi::simplify(MX &ex)
+>
+>>  void CasADi::simplify(SX &ex)
+>------------------------------------------------------------------------
+>
+>Simplify an expression.
+>
+>>  void CasADi::simplify(SXElement &ex)
+>------------------------------------------------------------------------
+>
+>Simplify the expression: formulates the expression as and eliminates terms.
+-}
+simplify
+  :: SXElement -> IO ()
+simplify x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__simplify x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__pw_const" c_CasADi__pw_const
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>Create a piecewise constant function Create a piecewise constant function
+>with n=val.size() intervals.
+>
+>Inputs:
+>
+>Parameters:
+>-----------
+>
+>t:  a scalar variable (e.g. time)
+>
+>tval:  vector with the discrete values of t at the interval transitions
+>(length n-1)
+>
+>val:  vector with the value of the function for each interval (length n)
+-}
+pw_const
+  :: SX -> SX -> SX -> IO SX
+pw_const x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__pw_const x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__pw_lin" c_CasADi__pw_lin
+  :: Ptr SXElement' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>t a scalar variable (e.g. time)
+>
+>Create a piecewise linear function Create a piecewise linear function:
+>
+>Inputs: tval vector with the the discrete values of t (monotonically
+>increasing) val vector with the corresponding function values (same length
+>as tval)
+-}
+pw_lin
+  :: SXElement -> SX -> SX -> IO SX
+pw_lin x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__pw_lin x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__if_else" c_CasADi__if_else
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>>  MX CasADi::if_else(const MX &cond, const MX &if_true, const MX &if_false)
+>------------------------------------------------------------------------
+>
+>Branching on MX nodes Ternary operator, "cond ? if_true : if_false".
+>
+>>  SX CasADi::if_else(const SX &cond, const SX &if_true, const SX &if_false)
+>------------------------------------------------------------------------
+>
+>Integrate f from a to b using Gaussian quadrature with n points.
+>
+>>  T CasADi::if_else(const SXElement &cond, const T &if_true, const T &if_false)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Expand the expression as a weighted sum (with constant weights)
+-}
+if_else
+  :: SX -> SX -> SX -> IO SX
+if_else x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__if_else x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__heaviside" c_CasADi__heaviside
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>Heaviside function.
+>
+>\\[ \\begin{cases} H(x) = 0 & x<0 \\\\ H(x) = 1/2 & x=0 \\\\
+>H(x) = 1 & x>0 \\\\ \\end{cases} \\]
+-}
+heaviside
+  :: SX -> IO SX
+heaviside x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__heaviside x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__rectangle" c_CasADi__rectangle
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>rectangle function
+>
+>\\[ \\begin{cases} \\Pi(x) = 1 & |x| < 1/2 \\\\ \\Pi(x) = 1/2 &
+>|x| = 1/2 \\\\ \\Pi(x) = 0 & |x| > 1/2 \\\\ \\end{cases} \\]
+>
+>Also called: gate function, block function, band function, pulse function,
+>window function
+-}
+rectangle
+  :: SX -> IO SX
+rectangle x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__rectangle x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__triangle" c_CasADi__triangle
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>triangle function
+>
+>\\[ \\begin{cases} \\Lambda(x) = 0 & |x| >= 1 \\\\ \\Lambda(x) =
+>1-|x| & |x| < 1 \\end{cases} \\]
+-}
+triangle
+  :: SX -> IO SX
+triangle x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__triangle x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__ramp" c_CasADi__ramp
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>ramp function
+>
+>\\[ \\begin{cases} R(x) = 0 & x <= 1 \\\\ R(x) = x & x > 1 \\\\
+>\\end{cases} \\]
+>
+>Also called: slope function
+-}
+ramp
+  :: SX -> IO SX
+ramp x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__ramp x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__gauss_quadrature" c_CasADi__gauss_quadrature
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> Ptr SX' -> CInt -> Ptr SX' -> IO (Ptr SX')
+{-|
+>Integrate f from a to b using Gaussian quadrature with n points.
+-}
+gauss_quadrature
+  :: SX -> SX -> SX -> SX -> Int -> SX -> IO SX
+gauss_quadrature x0 x1 x2 x3 x4 x5 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  withMarshal x5 $ \x5' ->
+  c_CasADi__gauss_quadrature x0' x1' x2' x3' x4' x5' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__gauss_quadrature_TIC" c_CasADi__gauss_quadrature_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> Ptr SX' -> CInt -> IO (Ptr SX')
+gauss_quadrature'
+  :: SX -> SX -> SX -> SX -> Int -> IO SX
+gauss_quadrature' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__gauss_quadrature_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__gauss_quadrature_TIC_TIC" c_CasADi__gauss_quadrature_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+gauss_quadrature''
+  :: SX -> SX -> SX -> SX -> IO SX
+gauss_quadrature'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__gauss_quadrature_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__simplify_TIC" c_CasADi__simplify_TIC
+  :: Ptr SX' -> IO ()
+simplify'
+  :: SX -> IO ()
+simplify' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__simplify_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__compress" c_CasADi__compress
+  :: Ptr SX' -> CInt -> IO ()
+{-|
+>Remove identical calculations.
+-}
+compress
+  :: SX -> Int -> IO ()
+compress x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__compress x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__compress_TIC" c_CasADi__compress_TIC
+  :: Ptr SX' -> IO ()
+compress'
+  :: SX -> IO ()
+compress' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__compress_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substitute" c_CasADi__substitute
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>>  MX CasADi::substitute(const MX &ex, const MX &v, const MX &vdef)
+>
+>>  SX CasADi::substitute(const SX &ex, const SX &v, const SX &vdef)
+>------------------------------------------------------------------------
+>
+>Substitute variable v with expression vdef in an expression ex.
+>
+>>  std::vector< MX > CasADi::substitute(const std::vector< MX > &ex, const std::vector< MX > &v, const std::vector< MX > &vdef)
+>
+>>  std::vector< SX > CasADi::substitute(const std::vector< SX > &ex, const std::vector< SX > &v, const std::vector< SX > &vdef)
+>------------------------------------------------------------------------
+>
+>Substitute variable var with expression expr in multiple expressions.
+-}
+substitute
+  :: SX -> SX -> SX -> IO SX
+substitute x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substitute x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substitute_TIC" c_CasADi__substitute_TIC
+  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO (Ptr (CppVec (Ptr SX')))
+substitute'
+  :: Vector SX -> Vector SX -> Vector SX -> IO (Vector SX)
+substitute' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substitute_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace" c_CasADi__substituteInPlace
+  :: Ptr SX' -> Ptr SX' -> CInt -> IO ()
+{-|
+>>  void CasADi::substituteInPlace(const std::vector< MX > &v, std::vector< MX > &vdef, bool reverse=false)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Inplace substitution Substitute variables v out of the expressions
+>vdef sequentially.
+>
+>>  void CasADi::substituteInPlace(const std::vector< MX > &v, std::vector< MX > &vdef, std::vector< MX > &ex, bool reverse=false)
+>------------------------------------------------------------------------
+>[INTERNAL] 
+>Inplace substitution with piggyback expressions Substitute variables v
+>out of the expressions vdef sequentially, as well as out of a number
+>of other expressions piggyback.
+>
+>>  void CasADi::substituteInPlace(const SX &v, SX &vdef, bool reverse=false)
+>------------------------------------------------------------------------
+>
+>Substitute variable var out of or into an expression expr.
+>
+>>  void CasADi::substituteInPlace(const SX &v, SX &vdef, std::vector< SX > &ex, bool reverse=false)
+>------------------------------------------------------------------------
+>
+>Substitute variable var out of or into an expression expr, with an arbitrary
+>number of other expressions piggyback.
+>
+>>  void CasADi::substituteInPlace(const std::vector< SX > &v, std::vector< SX > &vdef, std::vector< SX > &ex, bool reverse=false)
+>------------------------------------------------------------------------
+>
+>Substitute variable var out of or into an expression expr, with an arbitrary
+>number of other expressions piggyback (vector version)
+-}
+substituteInPlace
+  :: SX -> SX -> Bool -> IO ()
+substituteInPlace x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substituteInPlace x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC" c_CasADi__substituteInPlace_TIC
+  :: Ptr SX' -> Ptr SX' -> IO ()
+substituteInPlace'
+  :: SX -> SX -> IO ()
+substituteInPlace' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__substituteInPlace_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr (CppVec (Ptr SX')) -> CInt -> IO ()
+substituteInPlace''
+  :: SX -> SX -> Vector SX -> Bool -> IO ()
+substituteInPlace'' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__substituteInPlace_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr (CppVec (Ptr SX')) -> IO ()
+substituteInPlace'''
+  :: SX -> SX -> Vector SX -> IO ()
+substituteInPlace''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> CInt -> IO ()
+substituteInPlace''''
+  :: Vector SX -> Vector SX -> Vector SX -> Bool -> IO ()
+substituteInPlace'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> Ptr (CppVec (Ptr SX')) -> IO ()
+substituteInPlace'''''
+  :: Vector SX -> Vector SX -> Vector SX -> IO ()
+substituteInPlace''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__evalf" c_CasADi__evalf
+  :: Ptr SX' -> IO (Ptr DMatrix')
+{-|
+>>  Matrix< double > CasADi::evalf(const SX &ex, const SX &v, const Matrix< double > &vdef)
+>------------------------------------------------------------------------
+>
+>Substitute variable v with value vdef in an expression ex, and evaluate
+>numerically Note: this is not efficient. For critical parts (loops) of your
+>code, always use SXFunction.
+>
+>>  Matrix< double > CasADi::evalf(const SX &ex)
+>------------------------------------------------------------------------
+>
+>Evaluate an SX graph numerically Note: this is not efficient. For critical
+>parts (loops) of your code, always use SXFunction.
+-}
+evalf
+  :: SX -> IO DMatrix
+evalf x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__evalf x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__evalf_TIC" c_CasADi__evalf_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr DMatrix' -> IO (Ptr DMatrix')
+evalf'
+  :: SX -> SX -> DMatrix -> IO DMatrix
+evalf' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__evalf_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__spy" c_CasADi__spy
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>Get the sparsity pattern of a matrix.
+-}
+spy
+  :: SX -> IO SX
+spy x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__spy x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__dependsOn" c_CasADi__dependsOn
+  :: Ptr SX' -> Ptr SX' -> IO CInt
+{-|
+>>  bool CasADi::dependsOn(const SX &f, const SX &arg)
+>------------------------------------------------------------------------
+>
+>Check if expression depends on the argument The argument must be symbolic.
+>
+>>  bool CasADi::dependsOn(const MX &ex, const std::vector< MX > &arg)
+>------------------------------------------------------------------------
+>
+>Check if expression depends on any of the arguments The arguments must be
+>symbolic.
+-}
+dependsOn
+  :: SX -> SX -> IO Bool
+dependsOn x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__dependsOn x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSymbols" c_CasADi__getSymbols
+  :: Ptr SX' -> IO (Ptr (CppVec (Ptr SXElement')))
+{-|
+>>  std::vector< SXElement > CasADi::getSymbols(const SX &e)
+>------------------------------------------------------------------------
+>
+>Get all symbols contained in the supplied expression Get all symbols on
+>which the supplied expression depends.
+>
+>See:   SXFunction::getFree()
+>
+>>  std::vector< MX > CasADi::getSymbols(const MX &e)
+>
+>>  std::vector< MX > CasADi::getSymbols(const std::vector< MX > &e)
+>------------------------------------------------------------------------
+>
+>Get all symbols contained in the supplied expression Get all symbols on
+>which the supplied expression depends.
+>
+>See:   MXFunction::getFree()
+-}
+getSymbols
+  :: SX -> IO (Vector SXElement)
+getSymbols x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getSymbols x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__jacobian" c_CasADi__jacobian
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>>  MX CasADi::jacobian(const MX &ex, const MX &arg)
+>------------------------------------------------------------------------
+>
+>Calculate jacobian via source code transformation.
+>
+>Uses CasADi::MXFunction::jac
+>
+>>  SX CasADi::jacobian(const SX &ex, const SX &arg)
+>------------------------------------------------------------------------
+>
+>Calculate jacobian via source code transformation.
+>
+>Uses CasADi::SXFunction::jac
+-}
+jacobian
+  :: SX -> SX -> IO SX
+jacobian x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__jacobian x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__gradient" c_CasADi__gradient
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>>  MX CasADi::gradient(const MX &ex, const MX &arg)
+>------------------------------------------------------------------------
+>
+>split vertically, retaining groups of cols
+>
+>Parameters:
+>-----------
+>
+>output_offset:  List of all start cols for each group the last col group
+>will run to the end.
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  SX CasADi::gradient(const SX &ex, const SX &arg)
+>------------------------------------------------------------------------
+>
+>Integrate f from a to b using Gaussian quadrature with n points.
+-}
+gradient
+  :: SX -> SX -> IO SX
+gradient x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__gradient x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tangent" c_CasADi__tangent
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>>  MX CasADi::tangent(const MX &ex, const MX &arg)
+>------------------------------------------------------------------------
+>
+>split vertically, retaining groups of cols
+>
+>Parameters:
+>-----------
+>
+>output_offset:  List of all start cols for each group the last col group
+>will run to the end.
+>
+>horzcat(horzsplit(x,...)) = x
+>
+>>  SX CasADi::tangent(const SX &ex, const SX &arg)
+>------------------------------------------------------------------------
+>
+>Integrate f from a to b using Gaussian quadrature with n points.
+-}
+tangent
+  :: SX -> SX -> IO SX
+tangent x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__tangent x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__hessian" c_CasADi__hessian
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>Integrate f from a to b using Gaussian quadrature with n points.
+-}
+hessian
+  :: SX -> SX -> IO SX
+hessian x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__hessian x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__hessian_TIC" c_CasADi__hessian_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> Ptr SX' -> IO ()
+hessian'
+  :: SX -> SX -> SX -> SX -> IO ()
+hessian' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__hessian_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__jacobianTimesVector" c_CasADi__jacobianTimesVector
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> CInt -> IO (Ptr SX')
+{-|
+>Calculate the Jacobian and multiply by a vector from the left This is
+>equivalent to mul(jacobian(ex,arg),v) or mul(jacobian(ex,arg).T,v) for
+>transpose_jacobian set to false and true respectively. If contrast to these
+>expressions, it will use directional derivatives which is typically (but not
+>necessarily) more efficient if the complete Jacobian is not needed and v has
+>few rows.
+-}
+jacobianTimesVector
+  :: SX -> SX -> SX -> Bool -> IO SX
+jacobianTimesVector x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__jacobianTimesVector x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__jacobianTimesVector_TIC" c_CasADi__jacobianTimesVector_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+jacobianTimesVector'
+  :: SX -> SX -> SX -> IO SX
+jacobianTimesVector' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__jacobianTimesVector_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__taylor" c_CasADi__taylor
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> CInt -> IO (Ptr SX')
+{-|
+>univariate taylor series expansion
+>
+>Calculate the taylor expansion of expression 'ex' up to order 'order' with
+>repsect to variable 'x' around the point 'a'
+>
+>$(x)=f(a)+f'(a)(x-a)+f''(a)\\frac{(x-a)^2}{2!}+f'''(a)\\frac{(x-a)^3}{3!}+\\ldots$
+>
+>Example usage:>>   x
+-}
+taylor
+  :: SX -> SX -> SX -> Int -> IO SX
+taylor x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__taylor x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__taylor_TIC" c_CasADi__taylor_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+taylor'
+  :: SX -> SX -> SX -> IO SX
+taylor' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__taylor_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__taylor_TIC_TIC" c_CasADi__taylor_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+taylor''
+  :: SX -> SX -> IO SX
+taylor'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__taylor_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mtaylor" c_CasADi__mtaylor
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> CInt -> IO (Ptr SX')
+{-|
+>>  SX CasADi::mtaylor(const SX &ex, const SX &x, const SX &a, int order=1)
+>------------------------------------------------------------------------
+>
+>multivariate taylor series expansion
+>
+>Do taylor expansions until the aggregated order of a term is equal to
+>'order'. The aggregated order of $x^n y^m$ equals $n+m$.
+>
+>>  SX CasADi::mtaylor(const SX &ex, const SX &x, const SX &a, int order, const std::vector< int > &order_contributions)
+>------------------------------------------------------------------------
+>
+>multivariate taylor series expansion
+>
+>Do taylor expansions until the aggregated order of a term is equal to
+>'order'. The aggregated order of $x^n y^m$ equals $n+m$.
+>
+>The argument order_contributions can denote how match each variable
+>contributes to the aggregated order. If x=[x,y] and
+>order_contributions=[1,2], then the aggregated order of $x^n y^m$ equals
+>$1n+2m$.
+>
+>Example usage
+>
+>$ \\sin(b+a)+\\cos(b+a)(x-a)+\\cos(b+a)(y-b) $ $ y+x-(x^3+3y x^2+3 y^2
+>x+y^3)/6 $ $ (-3 x^2 y-x^3)/6+y+x $
+-}
+mtaylor
+  :: SX -> SX -> SX -> Int -> IO SX
+mtaylor x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__mtaylor x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mtaylor_TIC" c_CasADi__mtaylor_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+mtaylor'
+  :: SX -> SX -> SX -> IO SX
+mtaylor' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__mtaylor_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mtaylor_TIC_TIC" c_CasADi__mtaylor_TIC_TIC
+  :: Ptr SX' -> Ptr SX' -> Ptr SX' -> CInt -> Ptr (CppVec CInt) -> IO (Ptr SX')
+mtaylor''
+  :: SX -> SX -> SX -> Int -> Vector Int -> IO SX
+mtaylor'' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__mtaylor_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__countNodes" c_CasADi__countNodes
+  :: Ptr SX' -> IO CInt
+{-|
+>>  int CasADi::countNodes(const MX &A)
+>------------------------------------------------------------------------
+>
+>Count number of nodes
+>
+>>  int CasADi::countNodes(const SX &A)
+>------------------------------------------------------------------------
+>
+>Count number of nodes.
+-}
+countNodes
+  :: SX -> IO Int
+countNodes x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__countNodes x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getOperatorRepresentation" c_CasADi__getOperatorRepresentation
+  :: Ptr SXElement' -> Ptr (CppVec (Ptr StdString')) -> IO (Ptr StdString')
+{-|
+>>  std::string CasADi::getOperatorRepresentation(const MX &x, const std::vector< std::string > &args)
+>------------------------------------------------------------------------
+>
+>Get a string representation for a binary MX, using custom arguments.
+>
+>>  std::string CasADi::getOperatorRepresentation(const SXElement &x, const std::vector< std::string > &args)
+>------------------------------------------------------------------------
+>
+>Get a string representation for a binary SX, using custom arguments.
+-}
+getOperatorRepresentation
+  :: SXElement -> Vector String -> IO String
+getOperatorRepresentation x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__getOperatorRepresentation x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getFree" c_CasADi__getFree
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>Get all the free variables in an expression.
+-}
+getFree
+  :: SX -> IO SX
+getFree x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getFree x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__extractShared" c_CasADi__extractShared
+  :: Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> Ptr StdString' -> Ptr StdString' -> IO ()
+{-|
+>Extract shared subexpressions from an set of expressions.
+-}
+extractShared
+  :: Vector SXElement -> Vector SXElement -> Vector SXElement -> String -> String -> IO ()
+extractShared x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__extractShared x0' x1' x2' x3' x4' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__extractShared_TIC" c_CasADi__extractShared_TIC
+  :: Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> Ptr StdString' -> IO ()
+extractShared'
+  :: Vector SXElement -> Vector SXElement -> Vector SXElement -> String -> IO ()
+extractShared' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__extractShared_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__extractShared_TIC_TIC" c_CasADi__extractShared_TIC_TIC
+  :: Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> Ptr (CppVec (Ptr SXElement')) -> IO ()
+extractShared''
+  :: Vector SXElement -> Vector SXElement -> Vector SXElement -> IO ()
+extractShared'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__extractShared_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__printCompact_TIC" c_CasADi__printCompact_TIC
+  :: Ptr SX' -> IO ()
+printCompact'
+  :: SX -> IO ()
+printCompact' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__printCompact_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__poly_coeff" c_CasADi__poly_coeff
+  :: Ptr SX' -> Ptr SX' -> IO (Ptr SX')
+{-|
+>extracts polynomial coefficients from an expression
+>
+>ex Scalar expression that represents a polynomial  x Scalar symbol that th
+>epolynomial is build up with
+-}
+poly_coeff
+  :: SX -> SX -> IO SX
+poly_coeff x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__poly_coeff x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__poly_roots" c_CasADi__poly_roots
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>Attempts to find the roots of a polynomial.
+>
+>This will only work for polynomials up to order 3 It is assumed that the
+>roots are real.
+-}
+poly_roots
+  :: SX -> IO SX
+poly_roots x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__poly_roots x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__eig_symbolic" c_CasADi__eig_symbolic
+  :: Ptr SX' -> IO (Ptr SX')
+{-|
+>Attempts to find the eigenvalues of a symbolic matrix This will only work
+>for up to 3x3 matrices.
+>
+>Bring m in block diagonal form, calculating eigenvalues of each block
+>seperately 
+-}
+eig_symbolic
+  :: SX -> IO SX
+eig_symbolic x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__eig_symbolic x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzcat_TIC_TIC_TIC_TIC" c_CasADi__horzcat_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+horzcat''''
+  :: Vector MX -> IO MX
+horzcat'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzcat_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr MX')))
+horzsplit''''''''''
+  :: MX -> Vector Int -> IO (Vector MX)
+horzsplit'''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> CInt -> IO (Ptr (CppVec (Ptr MX')))
+horzsplit'''''''''''
+  :: MX -> Int -> IO (Vector MX)
+horzsplit''''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr (CppVec (Ptr MX')))
+horzsplit''''''''''''
+  :: MX -> IO (Vector MX)
+horzsplit'''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__horzsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertcat_TIC_TIC_TIC_TIC" c_CasADi__vertcat_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+vertcat''''
+  :: Vector MX -> IO MX
+vertcat'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertcat_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr MX')))
+vertsplit''''''''''
+  :: MX -> Vector Int -> IO (Vector MX)
+vertsplit'''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> CInt -> IO (Ptr (CppVec (Ptr MX')))
+vertsplit'''''''''''
+  :: MX -> Int -> IO (Vector MX)
+vertsplit''''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr (CppVec (Ptr MX')))
+vertsplit''''''''''''
+  :: MX -> IO (Vector MX)
+vertsplit'''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vertsplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blockcat_TIC_TIC_TIC" c_CasADi__blockcat_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr (CppVec (Ptr MX')))) -> IO (Ptr MX')
+blockcat'''
+  :: Vector (Vector MX) -> IO MX
+blockcat''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blockcat_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr (CppVec CInt) -> Ptr (CppVec CInt) -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+blocksplit''''''''''''
+  :: MX -> Vector Int -> Vector Int -> IO (Vector (Vector MX))
+blocksplit'''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> CInt -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+blocksplit'''''''''''''
+  :: MX -> Int -> Int -> IO (Vector (Vector MX))
+blocksplit''''''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> CInt -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+blocksplit''''''''''''''
+  :: MX -> Int -> IO (Vector (Vector MX))
+blocksplit'''''''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr (CppVec (Ptr (CppVec (Ptr MX')))))
+blocksplit'''''''''''''''
+  :: MX -> IO (Vector (Vector MX))
+blocksplit''''''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blocksplit_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__veccat_TIC_TIC_TIC" c_CasADi__veccat_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+veccat'''
+  :: Vector MX -> IO MX
+veccat''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__veccat_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZcat_TIC_TIC_TIC" c_CasADi__vecNZcat_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+vecNZcat'''
+  :: Vector MX -> IO MX
+vecNZcat''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZcat_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_F_TIC_TIC_TIC" c_CasADi__norm_F_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+norm_F'''
+  :: MX -> IO MX
+norm_F''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_F_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_2_TIC_TIC_TIC" c_CasADi__norm_2_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+norm_2'''
+  :: MX -> IO MX
+norm_2''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_2_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_1_TIC_TIC_TIC" c_CasADi__norm_1_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+norm_1'''
+  :: MX -> IO MX
+norm_1''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_1_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__norm_inf_TIC_TIC_TIC" c_CasADi__norm_inf_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+norm_inf'''
+  :: MX -> IO MX
+norm_inf''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__norm_inf_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__transpose_TIC_TIC_TIC_TIC" c_CasADi__transpose_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+transpose''''
+  :: MX -> IO MX
+transpose'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__transpose_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+mul''''''''''
+  :: MX -> MX -> Sparsity -> IO MX
+mul'''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+mul'''''''''''
+  :: MX -> MX -> IO MX
+mul''''''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+mul''''''''''''
+  :: Vector MX -> IO MX
+mul'''''''''''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__mul_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inner_prod_TIC_TIC_TIC" c_CasADi__inner_prod_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+inner_prod'''
+  :: MX -> MX -> IO MX
+inner_prod''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__inner_prod_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__outer_prod_TIC_TIC_TIC" c_CasADi__outer_prod_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+outer_prod'''
+  :: MX -> MX -> IO MX
+outer_prod''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__outer_prod_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__if_else_TIC" c_CasADi__if_else_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+if_else'
+  :: MX -> MX -> MX -> IO MX
+if_else' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__if_else_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr Sparsity' -> IO (Ptr MX')
+reshape'''''''
+  :: MX -> Sparsity -> IO MX
+reshape''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__reshape_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vec_TIC_TIC_TIC_TIC" c_CasADi__vec_TIC_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+vec''''
+  :: MX -> IO MX
+vec'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vec_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__vecNZ_TIC_TIC_TIC" c_CasADi__vecNZ_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+vecNZ'''
+  :: MX -> IO MX
+vecNZ''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__vecNZ_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__unite_TIC_TIC_TIC" c_CasADi__unite_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+unite'''
+  :: MX -> MX -> IO MX
+unite''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__unite_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__simplify_TIC_TIC" c_CasADi__simplify_TIC_TIC
+  :: Ptr MX' -> IO ()
+simplify''
+  :: MX -> IO ()
+simplify'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__simplify_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__trace_TIC_TIC_TIC" c_CasADi__trace_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+trace'''
+  :: MX -> IO MX
+trace''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__trace_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__repmat_TIC_TIC_TIC" c_CasADi__repmat_TIC_TIC_TIC
+  :: Ptr MX' -> CInt -> CInt -> IO (Ptr MX')
+repmat'''
+  :: MX -> Int -> Int -> IO MX
+repmat''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__repmat_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__dense_TIC_TIC_TIC" c_CasADi__dense_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+dense'''
+  :: MX -> IO MX
+dense''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__dense_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__createParent" c_CasADi__createParent
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+{-|
+>>  MX CasADi::createParent(std::vector< MX > &deps)
+>------------------------------------------------------------------------
+>
+>Create a parent MX on which all given MX's will depend.
+>
+>In some sense, this function is the inverse of
+>
+>Parameters:
+>-----------
+>
+>deps:  Must all be symbolic matrices.
+>
+>>  MX CasADi::createParent(const std::vector< Sparsity > &deps, std::vector< MX > &output_children)
+>
+>>  MX CasADi::createParent(const std::vector< MX > &deps, std::vector< MX > &output_children)
+>------------------------------------------------------------------------
+>
+>Create a parent MX on which a bunch of MX's (sizes given as argument) will
+>depend.
+-}
+createParent
+  :: Vector MX -> IO MX
+createParent x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__createParent x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__createParent_TIC" c_CasADi__createParent_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+createParent'
+  :: Vector MX -> Vector MX -> IO MX
+createParent' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__createParent_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__createParent_TIC_TIC" c_CasADi__createParent_TIC_TIC
+  :: Ptr (CppVec (Ptr Sparsity')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+createParent''
+  :: Vector Sparsity -> Vector MX -> IO MX
+createParent'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__createParent_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__countNodes_TIC" c_CasADi__countNodes_TIC
+  :: Ptr MX' -> IO CInt
+countNodes'
+  :: MX -> IO Int
+countNodes' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__countNodes_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__diag_TIC_TIC_TIC" c_CasADi__diag_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+diag'''
+  :: MX -> IO MX
+diag''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__diag_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__blkdiag_TIC_TIC_TIC_TIC" c_CasADi__blkdiag_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+blkdiag''''
+  :: Vector MX -> IO MX
+blkdiag'''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__blkdiag_TIC_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumCols_TIC_TIC_TIC" c_CasADi__sumCols_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+sumCols'''
+  :: MX -> IO MX
+sumCols''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumCols_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumRows_TIC_TIC_TIC" c_CasADi__sumRows_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+sumRows'''
+  :: MX -> IO MX
+sumRows''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumRows_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__sumAll_TIC_TIC_TIC" c_CasADi__sumAll_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+sumAll'''
+  :: MX -> IO MX
+sumAll''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__sumAll_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__polyval_TIC_TIC_TIC" c_CasADi__polyval_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+polyval'''
+  :: MX -> MX -> IO MX
+polyval''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__polyval_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getOperatorRepresentation_TIC" c_CasADi__getOperatorRepresentation_TIC
+  :: Ptr MX' -> Ptr (CppVec (Ptr StdString')) -> IO (Ptr StdString')
+getOperatorRepresentation'
+  :: MX -> Vector String -> IO String
+getOperatorRepresentation' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__getOperatorRepresentation_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substitute_TIC_TIC" c_CasADi__substitute_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+substitute''
+  :: MX -> MX -> MX -> IO MX
+substitute'' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substitute_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substitute_TIC_TIC_TIC" c_CasADi__substitute_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+substitute'''
+  :: Vector MX -> Vector MX -> Vector MX -> IO (Vector MX)
+substitute''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substitute_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__graph_substitute" c_CasADi__graph_substitute
+  :: Ptr MX' -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+{-|
+>>  MX CasADi::graph_substitute(const MX &ex, const std::vector< MX > &v, const std::vector< MX > &vdef)
+>------------------------------------------------------------------------
+>
+>Substitute variable v with expression vdef in an expression ex, preserving
+>nodes.
+>
+>>  std::vector< MX > CasADi::graph_substitute(const std::vector< MX > &ex, const std::vector< MX > &v, const std::vector< MX > &vdef)
+>------------------------------------------------------------------------
+>
+>Substitute variable var with expression expr in multiple expressions,
+>preserving nodes.
+-}
+graph_substitute
+  :: MX -> Vector MX -> Vector MX -> IO MX
+graph_substitute x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__graph_substitute x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__graph_substitute_TIC" c_CasADi__graph_substitute_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+graph_substitute'
+  :: Vector MX -> Vector MX -> Vector MX -> IO (Vector MX)
+graph_substitute' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__graph_substitute_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> CInt -> IO ()
+substituteInPlace''''''
+  :: Vector MX -> Vector MX -> Bool -> IO ()
+substituteInPlace'''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO ()
+substituteInPlace'''''''
+  :: Vector MX -> Vector MX -> IO ()
+substituteInPlace''''''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> CInt -> IO ()
+substituteInPlace''''''''
+  :: Vector MX -> Vector MX -> Vector MX -> Bool -> IO ()
+substituteInPlace'''''''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC" c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO ()
+substituteInPlace'''''''''
+  :: Vector MX -> Vector MX -> Vector MX -> IO ()
+substituteInPlace''''''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__substituteInPlace_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__extractShared_TIC_TIC_TIC" c_CasADi__extractShared_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr StdString' -> Ptr StdString' -> IO ()
+extractShared'''
+  :: Vector MX -> Vector MX -> Vector MX -> String -> String -> IO ()
+extractShared''' x0 x1 x2 x3 x4 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  withMarshal x4 $ \x4' ->
+  c_CasADi__extractShared_TIC_TIC_TIC x0' x1' x2' x3' x4' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__extractShared_TIC_TIC_TIC_TIC" c_CasADi__extractShared_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr StdString' -> IO ()
+extractShared''''
+  :: Vector MX -> Vector MX -> Vector MX -> String -> IO ()
+extractShared'''' x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__extractShared_TIC_TIC_TIC_TIC x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__extractShared_TIC_TIC_TIC_TIC_TIC" c_CasADi__extractShared_TIC_TIC_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO ()
+extractShared'''''
+  :: Vector MX -> Vector MX -> Vector MX -> IO ()
+extractShared''''' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__extractShared_TIC_TIC_TIC_TIC_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__printCompact_TIC_TIC_TIC" c_CasADi__printCompact_TIC_TIC_TIC
+  :: Ptr MX' -> IO ()
+printCompact'''
+  :: MX -> IO ()
+printCompact''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__printCompact_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__jacobian_TIC" c_CasADi__jacobian_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+jacobian'
+  :: MX -> MX -> IO MX
+jacobian' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__jacobian_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__gradient_TIC" c_CasADi__gradient_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+gradient'
+  :: MX -> MX -> IO MX
+gradient' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__gradient_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__tangent_TIC" c_CasADi__tangent_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+tangent'
+  :: MX -> MX -> IO MX
+tangent' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__tangent_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__nullspace_TIC_TIC_TIC" c_CasADi__nullspace_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+nullspace'''
+  :: MX -> IO MX
+nullspace''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__nullspace_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__det_TIC_TIC_TIC" c_CasADi__det_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+det'''
+  :: MX -> IO MX
+det''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__det_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__inv_TIC_TIC_TIC" c_CasADi__inv_TIC_TIC_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+inv'''
+  :: MX -> IO MX
+inv''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__inv_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSymbols_TIC" c_CasADi__getSymbols_TIC
+  :: Ptr MX' -> IO (Ptr (CppVec (Ptr MX')))
+getSymbols'
+  :: MX -> IO (Vector MX)
+getSymbols' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getSymbols_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__getSymbols_TIC_TIC" c_CasADi__getSymbols_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+getSymbols''
+  :: Vector MX -> IO (Vector MX)
+getSymbols'' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__getSymbols_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__dependsOn_TIC" c_CasADi__dependsOn_TIC
+  :: Ptr MX' -> Ptr (CppVec (Ptr MX')) -> IO CInt
+dependsOn'
+  :: MX -> Vector MX -> IO Bool
+dependsOn' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__dependsOn_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__matrix_expand" c_CasADi__matrix_expand
+  :: Ptr MX' -> Ptr (CppVec (Ptr MX')) -> IO (Ptr MX')
+{-|
+>Expand MX graph to SXFunction call.
+>
+>Expand the given expression e, optionally supplying expressions contained in
+>it at which expansion should stop.
+-}
+matrix_expand
+  :: MX -> Vector MX -> IO MX
+matrix_expand x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__matrix_expand x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__matrix_expand_TIC" c_CasADi__matrix_expand_TIC
+  :: Ptr MX' -> IO (Ptr MX')
+matrix_expand'
+  :: MX -> IO MX
+matrix_expand' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__matrix_expand_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__matrix_expand_TIC_TIC" c_CasADi__matrix_expand_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+matrix_expand''
+  :: Vector MX -> Vector MX -> IO (Vector MX)
+matrix_expand'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__matrix_expand_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__matrix_expand_TIC_TIC_TIC" c_CasADi__matrix_expand_TIC_TIC_TIC
+  :: Ptr (CppVec (Ptr MX')) -> IO (Ptr (CppVec (Ptr MX')))
+matrix_expand'''
+  :: Vector MX -> IO (Vector MX)
+matrix_expand''' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__matrix_expand_TIC_TIC_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__kron_TIC_TIC_TIC" c_CasADi__kron_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+kron'''
+  :: MX -> MX -> IO MX
+kron''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__kron_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__solve_TIC_TIC_TIC" c_CasADi__solve_TIC_TIC_TIC
+  :: Ptr MX' -> Ptr MX' -> IO (Ptr MX')
+solve'''
+  :: MX -> MX -> IO MX
+solve''' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__solve_TIC_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__collocationPoints" c_CasADi__collocationPoints
+  :: CInt -> Ptr StdString' -> IO (Ptr (CppVec CDouble))
+{-|
+>Obtain collocation points of specific order and scheme.
+>
+>Parameters:
+>-----------
+>
+>scheme:  'radau' or 'legendre'
+-}
+collocationPoints
+  :: Int -> String -> IO (Vector Double)
+collocationPoints x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__collocationPoints x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__collocationPoints_TIC" c_CasADi__collocationPoints_TIC
+  :: CInt -> IO (Ptr (CppVec CDouble))
+collocationPoints'
+  :: Int -> IO (Vector Double)
+collocationPoints' x0 =
+  withMarshal x0 $ \x0' ->
+  c_CasADi__collocationPoints_TIC x0' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__collocationInterpolators" c_CasADi__collocationInterpolators
+  :: Ptr (CppVec CDouble) -> Ptr (CppVec (Ptr (CppVec CDouble))) -> Ptr (CppVec CDouble) -> IO ()
+{-|
+>[INTERNAL]  Obtain
+>collocation interpolating matrices.
+>
+>Parameters:
+>-----------
+>
+>tau_root:  location of collocation points, as obtained from
+>collocationPoints
+>
+>C:  interpolating coefficients to obtain derivatives Length: order+1, order
+>+ 1
+>
+>dX/dt (j) ~ Sum_i C[j][i]*X(i)
+>
+>Parameters:
+>-----------
+>
+>D:  interpolating coefficients to obtain end state Length: order+1
+-}
+collocationInterpolators
+  :: Vector Double -> Vector (Vector Double) -> Vector Double -> IO ()
+collocationInterpolators x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__collocationInterpolators x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__explicitRK" c_CasADi__explicitRK
+  :: Ptr Function' -> Ptr MX' -> CInt -> CInt -> IO (Ptr Function')
+{-|
+>Construct an explicit Runge-Kutta integrator.
+>
+>Parameters:
+>-----------
+>
+>f:  dynamical system
+>
+>>Input scheme: CasADi::DAEInput (DAE_NUM_IN = 5) [daeIn]
+>+-----------+-------+----------------------------+
+>| Full name | Short |        Description         |
+>+===========+=======+============================+
+>| DAE_X     | x     | Differential state .       |
+>+-----------+-------+----------------------------+
+>| DAE_Z     | z     | Algebraic state .          |
+>+-----------+-------+----------------------------+
+>| DAE_P     | p     | Parameter .                |
+>+-----------+-------+----------------------------+
+>| DAE_T     | t     | Explicit time dependence . |
+>+-----------+-------+----------------------------+
+>
+>>Output scheme: CasADi::DAEOutput (DAE_NUM_OUT = 4) [daeOut]
+>+-----------+-------+--------------------------------------------+
+>| Full name | Short |                Description                 |
+>+===========+=======+============================================+
+>| DAE_ODE   | ode   | Right hand side of the implicit ODE .      |
+>+-----------+-------+--------------------------------------------+
+>| DAE_ALG   | alg   | Right hand side of algebraic equations .   |
+>+-----------+-------+--------------------------------------------+
+>| DAE_QUAD  | quad  | Right hand side of quadratures equations . |
+>+-----------+-------+--------------------------------------------+
+>
+>Parameters:
+>-----------
+>
+>tf:  Integration end time
+>
+>order:  Order of integration
+>
+>ne:  Number of times the RK primitive is repeated over the integration
+>interval
+-}
+explicitRK
+  :: Function -> MX -> Int -> Int -> IO Function
+explicitRK x0 x1 x2 x3 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  withMarshal x3 $ \x3' ->
+  c_CasADi__explicitRK x0' x1' x2' x3' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__explicitRK_TIC" c_CasADi__explicitRK_TIC
+  :: Ptr Function' -> Ptr MX' -> CInt -> IO (Ptr Function')
+explicitRK'
+  :: Function -> MX -> Int -> IO Function
+explicitRK' x0 x1 x2 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  withMarshal x2 $ \x2' ->
+  c_CasADi__explicitRK_TIC x0' x1' x2' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__explicitRK_TIC_TIC" c_CasADi__explicitRK_TIC_TIC
+  :: Ptr Function' -> Ptr MX' -> IO (Ptr Function')
+explicitRK''
+  :: Function -> MX -> IO Function
+explicitRK'' x0 x1 =
+  withMarshal x0 $ \x0' ->
+  withMarshal x1 $ \x1' ->
+  c_CasADi__explicitRK_TIC_TIC x0' x1' >>= wrapReturn
+
+foreign import ccall unsafe "CasADi__explicitRK_TIC_TIC_TIC" c_CasADi__explicitRK_TIC_TIC_TIC
+  :: Ptr Function' -> IO (Ptr Function')
+explicitRK'''
+  :: Function -> IO Function
 explicitRK''' x0 =
   withMarshal x0 $ \x0' ->
   c_CasADi__explicitRK_TIC_TIC_TIC x0' >>= wrapReturn
diff --git a/casadi-bindings.cabal b/casadi-bindings.cabal
--- a/casadi-bindings.cabal
+++ b/casadi-bindings.cabal
@@ -1,7 +1,5 @@
 name:                casadi-bindings
-version:             1.8.2.1
-synopsis:            low level bindings to CasADi
-description:         See the readme on github for installation instructions. Version numbers correspond to the C++ library version numbers. This only works on Debian/Ubuntu at the moment (sorry).
+version:             1.9.0.0
 license:             LGPL-3
 license-file:        LICENSE
 copyright:           (c) 2013-2014 Greg Horn
@@ -9,7 +7,23 @@
 maintainer:          gregmainland@gmail.com
 build-type:          Simple
 cabal-version:       >=1.10
+synopsis:            low level bindings to CasADi
+description:
+    Debian/Ubuntu instructions
+    .
+    Version numbers correspond to the C++ library version numbers except the very last number which may indicate breaking changes.
+    .
+    This only works on Debian/Ubuntu at the moment (sorry).
+    .
+    Install libcasadi from a .deb package here: https://github.com/casadi/casadi/releases, I use libcasadi-shared. (Get the version corresponding to the current casadi-bindings version, for example casadi-bindings-1.9.0.0 is libcasadi 1.9.0)
+    .
+    Then,
+    - `cabal update; cabal install casadi-bindings`
+    .
+    Temporary note: there is something wrong with casadi and ipopt related to http://list.coin-or.org/pipermail/ipopt/2014-April/003670.html, and https://github.com/casadi/casadi/issues/1075. At the moment this .cabal package works for me as is, but YMMV
 
+
+
 extra-source-files:  cbits/marshal.hpp
 extra-tmp-files:     Casadi/Callback_stub.h
 
@@ -20,25 +34,57 @@
 
   Include-dirs:   /usr/include/casadi
                   /usr/share/casadi
+--  Include-dirs:   /home/ghorn/casadi
+--                  /home/ghorn/casadi/build/swig
 
   extra-lib-dirs:   /usr/lib
+--  extra-lib-dirs:   /home/ghorn/casadi/build/lib
+--  Extra-lib-dirs:  /home/ghorn/snopt7/install_here_pls/lib
+
+--  extra-libraries:
+--                    casadi_ipopt_interface
+--                    ipopt
+--                    dl
+--                    coinmumps
+--                    pthread
+--                    coinlapack
+--                    coinmetis
+--                    coinblas
+--                    gfortran
+--                    m
+--                    gcc_s
+--                    quadmath
+--                    casadi_sundials_interface
+--                    casadi_sundials
+--                    casadi_csparse_interface
+--                    casadi_csparse
+--                    casadi_optimal_control
+--                    casadi_control
+--                    casadi_tinyxml
+--                    casadi_integration
+--                    casadi_convex_programming
+--                    casadi_nonlinear_programming
+--                    casadi
+--                    dl
+--                    /usr/lib/x86_64-linux-gnu/librt.so
+
   extra-libraries:  stdc++
+--                    gfortran
+--                    casadi_snopt_interface
+--                    snopt_fortran_c_bridge
+--                    snopt7
+--                    snprint7
+--                    snblas
                     casadi_ipopt_interface
-                    casadi_ipopt
-                    dl
-                    casadi_coinmumps
-                    pthread
-                    casadi_coinlapack
-                    casadi_coinmetis
-                    casadi_coinblas
-                    gfortran
-                    m
-                    gcc_s
-                    quadmath
                     casadi_sundials_interface
                     casadi_sundials
+--                    casadi_qpoases_interface
+--                    casadi_qpoases
+--                    casadi_dsdp_interface
+--                    casadi_dsdp
                     casadi_csparse_interface
                     casadi_csparse
+--                    casadi_lapack_interface
                     casadi_optimal_control
                     casadi_control
                     casadi_tinyxml
@@ -47,11 +93,12 @@
                     casadi_nonlinear_programming
                     casadi
                     dl
---                    /usr/lib/x86_64-linux-gnu/librt.so
 
+  pkgconfig-depends: ipopt
+
   ghc-prof-options: -O2 -prof -fprof-auto -fprof-cafs -rtsopts
   ghc-options: -O2
-  cc-options: -O2 -Wall -Wno-delete-non-virtual-dtor
+  cc-options: -Wall -Wno-delete-non-virtual-dtor
 
   C-sources:        cbits/hs_tools.cpp
                     cbits/callback.cpp
@@ -68,29 +115,103 @@
   exposed-modules:     Casadi.Callback
                        Casadi.Wrappers.Tools
                        Casadi.Wrappers.Enums
+
                        Casadi.Wrappers.Classes.SXFunction
-                       Casadi.Wrappers.Classes.MXFunction
-                       Casadi.Wrappers.Classes.FX
+                       Casadi.Wrappers.Classes.RKIntegrator
+                       Casadi.Wrappers.Classes.SQPMethod
                        Casadi.Wrappers.Classes.SharedObject
+                       Casadi.Wrappers.Classes.MXFunction
+                       Casadi.Wrappers.Classes.HomotopyNLPSolver
+                       Casadi.Wrappers.Classes.StabilizedQPSolver
+                       Casadi.Wrappers.Classes.SymbolicNLP
+                       Casadi.Wrappers.Classes.CSparse
                        Casadi.Wrappers.Classes.PrintableObject
-                       Casadi.Wrappers.Classes.CRSSparsity
+                       Casadi.Wrappers.Classes.ExpDMatrix
+                       Casadi.Wrappers.Classes.QCQPSolver
+                       Casadi.Wrappers.Classes.NLPSolver
                        Casadi.Wrappers.Classes.GenericType
-                       Casadi.Wrappers.Classes.IOInterfaceFX
+                       Casadi.Wrappers.Classes.NLPQPSolver
+                       Casadi.Wrappers.Classes.Variable
+                       Casadi.Wrappers.Classes.LPStructure
+                       Casadi.Wrappers.Classes.ImplicitFixedStepIntegrator
+                       Casadi.Wrappers.Classes.CSparseCholesky
+                       Casadi.Wrappers.Classes.SDPSOCPSolver
                        Casadi.Wrappers.Classes.OptionsFunctionality
+                       Casadi.Wrappers.Classes.OldCollocationIntegrator
+                       Casadi.Wrappers.Classes.FixedStepIntegrator
+                       Casadi.Wrappers.Classes.CollocationIntegrator
+                       Casadi.Wrappers.Classes.GenSX
                        Casadi.Wrappers.Classes.IpoptSolver
-                       Casadi.Wrappers.Classes.SXMatrix
-                       Casadi.Wrappers.Classes.IOScheme
                        Casadi.Wrappers.Classes.DMatrix
+--                       Casadi.Wrappers.Classes.QPOasesSolver
+                       Casadi.Wrappers.Classes.Sparsity
+                       Casadi.Wrappers.Classes.ExpMX
                        Casadi.Wrappers.Classes.MX
+                       Casadi.Wrappers.Classes.QCQPStructure
+                       Casadi.Wrappers.Classes.DpleSolver
+                       Casadi.Wrappers.Classes.SDQPSolver
+                       Casadi.Wrappers.Classes.QPLPSolver
+                       Casadi.Wrappers.Classes.SDPSDQPSolver
+--                       Casadi.Wrappers.Classes.DSDPSolver
+                       Casadi.Wrappers.Classes.SDPSolver
                        Casadi.Wrappers.Classes.CasadiOptions
-                       Casadi.Wrappers.Classes.Callback
+                       Casadi.Wrappers.Classes.Slice
                        Casadi.Wrappers.Classes.CustomEvaluate
+                       Casadi.Wrappers.Classes.GenMX
+                       Casadi.Wrappers.Classes.ControlSimulator
+--                       Casadi.Wrappers.Classes.LapackQRDense
+                       Casadi.Wrappers.Classes.IMatrix
+                       Casadi.Wrappers.Classes.SXElement
+                       Casadi.Wrappers.Classes.SCPgen
+                       Casadi.Wrappers.Classes.NLPImplicitSolver
                        Casadi.Wrappers.Classes.ExternalFunction
-                       Casadi.Wrappers.Classes.CSparse
-                       Casadi.Wrappers.Classes.SX
+                       Casadi.Wrappers.Classes.SimpleIndefDpleSolver
+                       Casadi.Wrappers.Classes.DirectCollocation
+                       Casadi.Wrappers.Classes.QPStabilizer
+                       Casadi.Wrappers.Classes.GenIMatrix
+                       Casadi.Wrappers.Classes.Callback
+                       Casadi.Wrappers.Classes.SOCPQCQPSolver
+                       Casadi.Wrappers.Classes.QCQPQPSolver
+                       Casadi.Wrappers.Classes.ExpSX
+                       Casadi.Wrappers.Classes.Integrator
+                       Casadi.Wrappers.Classes.WeakRef
+                       Casadi.Wrappers.Classes.Simulator
+                       Casadi.Wrappers.Classes.Parallelizer
+                       Casadi.Wrappers.Classes.SimpleHomotopyNLPSolver
+                       Casadi.Wrappers.Classes.SundialsIntegrator
+                       Casadi.Wrappers.Classes.QPSolver
+                       Casadi.Wrappers.Classes.Nullspace
+                       Casadi.Wrappers.Classes.IdasIntegrator
+                       Casadi.Wrappers.Classes.ExpSXElement
+                       Casadi.Wrappers.Classes.NewtonImplicitSolver
+--                       Casadi.Wrappers.Classes.SnoptSolver
+                       Casadi.Wrappers.Classes.KinsolSolver
+                       Casadi.Wrappers.Classes.QPStructure
                        Casadi.Wrappers.Classes.CasadiMeta
-                       Casadi.Wrappers.Classes.Functor
+                       Casadi.Wrappers.Classes.SymbolicQR
+                       Casadi.Wrappers.Classes.DirectSingleShooting
+                       Casadi.Wrappers.Classes.SX
+                       Casadi.Wrappers.Classes.DirectMultipleShooting
+                       Casadi.Wrappers.Classes.IOInterfaceFunction
+                       Casadi.Wrappers.Classes.SDQPStructure
+                       Casadi.Wrappers.Classes.SDPStructure
+                       Casadi.Wrappers.Classes.GenDMatrix
+                       Casadi.Wrappers.Classes.ExpIMatrix
                        Casadi.Wrappers.Classes.CustomFunction
+                       Casadi.Wrappers.Classes.LPSolver
+                       Casadi.Wrappers.Classes.OCPSolver
+                       Casadi.Wrappers.Classes.LinearSolver
+                       Casadi.Wrappers.Classes.SymbolicOCP
+                       Casadi.Wrappers.Classes.Function
+--                       Casadi.Wrappers.Classes.LapackLUDense
+                       Casadi.Wrappers.Classes.SOCPSolver
+                       Casadi.Wrappers.Classes.DerivativeGenerator
+                       Casadi.Wrappers.Classes.SOCPStructure
+                       Casadi.Wrappers.Classes.ImplicitFunction
+                       Casadi.Wrappers.Classes.CVodesIntegrator
+                       Casadi.Wrappers.Classes.IndexList
+                       Casadi.Wrappers.Classes.StabilizedSQPMethod
+                       Casadi.Wrappers.Classes.IOScheme
 
 source-repository head
   type: git
diff --git a/cbits/autogen/all.cpp b/cbits/autogen/all.cpp
# file too large to diff: cbits/autogen/all.cpp
diff --git a/cbits/callback.cpp b/cbits/callback.cpp
--- a/cbits/callback.cpp
+++ b/cbits/callback.cpp
@@ -1,6 +1,6 @@
 #include <iostream>
 #include <symbolic/casadi.hpp>
-#include "symbolic/fx/custom_function.hpp"
+#include "symbolic/function/custom_function.hpp"
 #include "symbolic/functor_internal.hpp"
 
 #include "HsFFI.h"
@@ -9,7 +9,7 @@
 using namespace CasADi;
 
 extern "C" {
-typedef int (*hs_callback_t)(FX &f);
+typedef int (*hs_callback_t)(Function &f);
 }
 
 namespace CasADi {
@@ -31,7 +31,7 @@
     friend class CallbackHaskell;
 
       CallbackHaskellInternal(hs_callback_t hscb) : FunctorHaskellInternal(hscb) {}
-    virtual int call(FX& fcn, void* user_data);
+    virtual int call(Function& fcn, void* user_data);
     virtual CallbackHaskellInternal* clone() const { return new CallbackHaskellInternal(hs_callback); }
   };
 
@@ -40,7 +40,7 @@
       CallbackHaskell(hs_callback_t hscb) { assignNode(new CallbackHaskellInternal(hscb)); }
   };
 
-  int CallbackHaskellInternal::call(FX& fcn, void* user_data) {
+  int CallbackHaskellInternal::call(Function& fcn, void* user_data) {
       return hs_callback(fcn);
   }
 }
