{-# LINE 1 "src/Data/Number/Flint/Fq/Types/FFI.hsc" #-}
{-|
module      :  Data.Number.Flint.Fq.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.Types.FFI where

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

import Data.Number.Flint.Flint
import Data.Number.Flint.Fmpz.Poly

data Fq = Fq {-# UNPACK #-} !(ForeignPtr CFq)
type CFq = CFmpzPoly

-- fq_poly_t -------------------------------------------------------------------

data FqPoly = FqPoly {-# UNPACK #-} !(ForeignPtr CFqPoly)
type CFqPoly = CFlint FqPoly

-- fq_mat_t --------------------------------------------------------------------

data FqMat = FqMat {-# UNPACK #-} !(ForeignPtr CFqMat)
data CFqMat = CFqMat (Ptr CFq) CLong CLong (Ptr (Ptr CFq))