packages feed

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

{-# OPTIONS_GHC -Wall -fno-warn-orphans #-}
{-# Language FlexibleInstances #-}
{-# Language MultiParamTypeClasses #-}

module Casadi.Wrappers.ForeignToolsInstances where

import Foreign.C.Types
import Foreign.Ptr ( Ptr )
import qualified Data.Vector as V

import Casadi.MarshalTypes
import Casadi.Marshal
import Casadi.Wrappers.ForeignToolsImports

instance Marshal (V.Vector CInt) (Ptr (CppVec CInt)) where
  withMarshal = withMarshalStorableVec c_newVecCInt c_deleteVecCInt
instance Marshal (V.Vector Int) (Ptr (CppVec CInt)) where
  withMarshal x = withMarshalStorableVec c_newVecCInt c_deleteVecCInt (V.map hsToC x)
instance Marshal (V.Vector (V.Vector Int)) (Ptr (CppVecVec CInt)) where
  withMarshal x = withMarshalStorableVecVec c_newVecVecCInt c_deleteVecVecCInt (V.map (V.map hsToC) x)
instance Marshal (V.Vector (Ptr a)) (Ptr (CppVec (Ptr a))) where
  withMarshal = withMarshalStorableVec c_newVecVoidP c_deleteVecVoidP
instance Marshal (V.Vector CUChar) (Ptr (CppVec CUChar)) where
  withMarshal = withMarshalStorableVec c_newVecCUChar c_deleteVecCUChar
instance Marshal (V.Vector CDouble) (Ptr (CppVec CDouble)) where
  withMarshal = withMarshalStorableVec c_newVecCDouble c_deleteVecCDouble
instance Marshal (V.Vector Double) (Ptr (CppVec CDouble)) where
  withMarshal x = withMarshalStorableVec c_newVecCDouble c_deleteVecCDouble (V.map hsToC x)
instance Marshal (V.Vector (V.Vector Double)) (Ptr (CppVecVec CDouble)) where
  withMarshal x = withMarshalStorableVecVec c_newVecVecCDouble c_deleteVecVecCDouble (V.map (V.map hsToC) x)