{-# INCLUDE <bindings.macros.h> #-}
{-# INCLUDE <ffi.h> #-}
{-# LINE 1 "src/Bindings/Libffi.hsc" #-}

{-# LINE 2 "src/Bindings/Libffi.hsc" #-}

{-# LINE 3 "src/Bindings/Libffi.hsc" #-}

-- | <http://sourceware.org/libffi>.

module Bindings.Libffi where
import Foreign
import Foreign.C

foreign import ccall "ffi_prep_cif" c'ffi_prep_cif
  :: Ptr C'ffi_cif -> C'ffi_abi -> CUInt -> Ptr C'ffi_type -> Ptr (Ptr C'ffi_type) -> IO C'ffi_status
foreign import ccall "&ffi_prep_cif" p'ffi_prep_cif
  :: FunPtr (Ptr C'ffi_cif -> C'ffi_abi -> CUInt -> Ptr C'ffi_type -> Ptr (Ptr C'ffi_type) -> IO C'ffi_status)

{-# LINE 12 "src/Bindings/Libffi.hsc" #-}

foreign import ccall "ffi_call" c'ffi_call
  :: Ptr C'ffi_cif -> FunPtr (IO ()) -> Ptr () -> Ptr (Ptr ()) -> IO ()
foreign import ccall "&ffi_call" p'ffi_call
  :: FunPtr (Ptr C'ffi_cif -> FunPtr (IO ()) -> Ptr () -> Ptr (Ptr ()) -> IO ())

{-# LINE 15 "src/Bindings/Libffi.hsc" #-}

data C'ffi_cif = C'ffi_cif{
{-# LINE 17 "src/Bindings/Libffi.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'ffi_cif where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    return $ C'ffi_cif
  poke p (C'ffi_cif) = do
    return ()

{-# LINE 18 "src/Bindings/Libffi.hsc" #-}

type C'ffi_abi = Word32

{-# LINE 20 "src/Bindings/Libffi.hsc" #-}
type C'ffi_arg = Word32

{-# LINE 21 "src/Bindings/Libffi.hsc" #-}
type C'ffi_sarg = Int32

{-# LINE 22 "src/Bindings/Libffi.hsc" #-}
type C'ffi_status = Word32

{-# LINE 23 "src/Bindings/Libffi.hsc" #-}

data C'ffi_type = C'ffi_type

{-# LINE 25 "src/Bindings/Libffi.hsc" #-}

c'FFI_OK = 0
c'FFI_OK :: (Num a) => a

{-# LINE 27 "src/Bindings/Libffi.hsc" #-}
c'FFI_BAD_TYPEDEF = 1
c'FFI_BAD_TYPEDEF :: (Num a) => a

{-# LINE 28 "src/Bindings/Libffi.hsc" #-}
c'FFI_BAD_ABI = 2
c'FFI_BAD_ABI :: (Num a) => a

{-# LINE 29 "src/Bindings/Libffi.hsc" #-}
c'FFI_FIRST_ABI = 0
c'FFI_FIRST_ABI :: (Num a) => a

{-# LINE 30 "src/Bindings/Libffi.hsc" #-}
c'FFI_DEFAULT_ABI = 1
c'FFI_DEFAULT_ABI :: (Num a) => a

{-# LINE 31 "src/Bindings/Libffi.hsc" #-}
c'FFI_LAST_ABI = 2
c'FFI_LAST_ABI :: (Num a) => a

{-# LINE 32 "src/Bindings/Libffi.hsc" #-}


foreign import ccall "&ffi_type_void" p'ffi_type_void
  :: Ptr (C'ffi_type)

{-# LINE 35 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_uint8" p'ffi_type_uint8
  :: Ptr (C'ffi_type)

{-# LINE 36 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_sint8" p'ffi_type_sint8
  :: Ptr (C'ffi_type)

{-# LINE 37 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_uint16" p'ffi_type_uint16
  :: Ptr (C'ffi_type)

{-# LINE 38 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_sint16" p'ffi_type_sint16
  :: Ptr (C'ffi_type)

{-# LINE 39 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_uint32" p'ffi_type_uint32
  :: Ptr (C'ffi_type)

{-# LINE 40 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_sint32" p'ffi_type_sint32
  :: Ptr (C'ffi_type)

{-# LINE 41 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_uint64" p'ffi_type_uint64
  :: Ptr (C'ffi_type)

{-# LINE 42 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_sint64" p'ffi_type_sint64
  :: Ptr (C'ffi_type)

{-# LINE 43 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_float" p'ffi_type_float
  :: Ptr (C'ffi_type)

{-# LINE 44 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_double" p'ffi_type_double
  :: Ptr (C'ffi_type)

{-# LINE 45 "src/Bindings/Libffi.hsc" #-}
foreign import ccall "&ffi_type_pointer" p'ffi_type_pointer
  :: Ptr (C'ffi_type)

{-# LINE 46 "src/Bindings/Libffi.hsc" #-}