packages feed

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