{-# LINE 1 "src/Data/Number/Flint/Fq/Zech/Types/FFI.hsc" #-}
{-|
module      :  Data.Number.Flint.Fq.Zech.Types.FFI
copyright   :  (c) 2022 Hartmut Monien
license     :  GNU GPL, version 2 or above (see LICENSE)
maintainer  :  hmonien@uni-bonn.de
-}
module Data.Number.Flint.Fq.Zech.Types.FFI where

import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.C.Types

import Data.Number.Flint.Flint

-- fq_zech_t -------------------------------------------------------------------

data FqZech = FqZech {-# UNPACK #-} !(ForeignPtr CFqZech)
type CFqZech = CFlint FqZech

-- fq_zech_ctx_t ---------------------------------------------------------------

data FqZechCtx = FqZechCtx {-# UNPACK #-} !(ForeignPtr CFqZechCtx)
type CFqZechCtx = CFlint FqZechCtx

-- fq_zech_poly_t --------------------------------------------------------------

data FqZechPoly = FqZechPoly {-# UNPACK #-} !(ForeignPtr CFqZechPoly)
type CFqZechPoly = CFlint FqZechPoly

-- fq_zech_poly_factor_t -------------------------------------------------------

data FqZechPolyFactor = FqZechPolyFactor {-# UNPACK #-} !(ForeignPtr CFqZechPolyFactor)
data CFqZechPolyFactor = CFqZechPolyFactor (Ptr CFqZechPoly) (Ptr CLong) CLong CLong

-- fq_zech_mat_t ---------------------------------------------------------------

data FqZechMat = FqZechMat {-# UNPACK #-} !(ForeignPtr CFqZechMat)
data CFqZechMat = CFqZechMat (Ptr CFqZech) CLong CLong (Ptr (Ptr CFqZech))