Flint2-Examples-0.1.0.0: app/real_roots/FFI.hsc
module FFI where
import Data.Number.Flint
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.Marshal.Array
import Foreign.C.Types
import Foreign.Storable
#include "z_param.h"
data ZParam = ZParam {-# UNPACK #-} !(ForeignPtr CZParam)
data CZParam = CZParam (Ptr CDirichletGroup) (Ptr CDirichletChar)
instance Storable CZParam where
{-# INLINE sizeOf #-}
sizeOf _ = #{size z_param_t}
{-# INLINE alignment #-}
alignment _ = #{alignment z_param_t}
peek ptr = CZParam
<$> #{peek z_param_struct, G } ptr
<*> #{peek z_param_struct, chi} ptr
poke ptr (CZParam g c) = do
#{poke z_param_struct, G } ptr g
#{poke z_param_struct, chi} ptr c