packages feed

casadi-bindings-internal-0.1: src/Casadi/Internal/CToolsInstances.hs

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

module Casadi.Internal.CToolsInstances where

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

import Casadi.Internal.MarshalTypes
import Casadi.Internal.Marshal
import Casadi.Internal.CToolsImports


-- ("int","CInt",Nothing,["Int","Bool"])
instance Marshal (V.Vector CInt) (Ptr (StdVec CInt)) where
  marshal = newStorableVec c_newVecCInt
  marshalFree = const c_deleteVecCInt
instance Marshal (V.Vector Int) (Ptr (StdVec CInt)) where
  marshal = newStorableVec c_newVecCInt . (V.map hsToC)
  marshalFree = const c_deleteVecCInt
instance Marshal (V.Vector Bool) (Ptr (StdVec CInt)) where
  marshal = newStorableVec c_newVecCInt . (V.map hsToC)
  marshalFree = const c_deleteVecCInt

-- ("voidp","VoidP",Just "(Ptr a)",[])
instance Marshal (V.Vector (Ptr a)) (Ptr (StdVec (Ptr a))) where
  marshal = newStorableVec c_newVecVoidP
  marshalFree = const c_deleteVecVoidP

-- ("uchar","CUChar",Nothing,[])
instance Marshal (V.Vector CUChar) (Ptr (StdVec CUChar)) where
  marshal = newStorableVec c_newVecCUChar
  marshalFree = const c_deleteVecCUChar

-- ("double","CDouble",Nothing,["Double"])
instance Marshal (V.Vector CDouble) (Ptr (StdVec CDouble)) where
  marshal = newStorableVec c_newVecCDouble
  marshalFree = const c_deleteVecCDouble
instance Marshal (V.Vector Double) (Ptr (StdVec CDouble)) where
  marshal = newStorableVec c_newVecCDouble . (V.map hsToC)
  marshalFree = const c_deleteVecCDouble