-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | LibFFI interface with dynamic bidirectional -- type-driven binding generation -- -- LibFFI interface with support for importing and exporting function -- types inferred at compile time, constructed at runtime, or a -- combination of both. @package libffi-dynamic @version 0.0.0.2 module Foreign.LibFFI.Dynamic.Base sizeOfClosure :: CSize newtype FFI_Status FFI_Status :: CInt -> FFI_Status module Foreign.LibFFI.Dynamic.Type newtype SomeType SomeType :: Ptr SomeType -> SomeType newtype Type t Type :: SomeType -> Type t toSomeType :: Type a -> SomeType castType :: Type a -> Type b void :: Type () pointer :: Type (Ptr a) float :: Type Float double :: Type Double longdouble :: Type Double floating :: Storable a => Type a sint8 :: Type Int8 sint16 :: Type Int16 sint32 :: Type Int32 sint64 :: Type Int64 sint :: Storable a => Type a uint8 :: Type Word8 uint16 :: Type Word16 uint32 :: Type Word32 uint64 :: Type Word64 uint :: Storable a => Type a struct :: [SomeType] -> SomeType typeSize :: SomeType -> CSize typeAlignment :: SomeType -> CUShort typeType :: SomeType -> CUShort typeIsStruct :: SomeType -> Bool structElements :: SomeType -> [SomeType] data TypeDescription Prim :: SomeType -> TypeDescription Struct :: [TypeDescription] -> TypeDescription describeType :: SomeType -> TypeDescription getType :: TypeDescription -> SomeType instance GHC.Show.Show Foreign.LibFFI.Dynamic.Type.TypeDescription instance GHC.Classes.Ord Foreign.LibFFI.Dynamic.Type.TypeDescription instance GHC.Classes.Eq Foreign.LibFFI.Dynamic.Type.TypeDescription instance GHC.Show.Show Foreign.LibFFI.Dynamic.Type.StructType instance GHC.Classes.Ord Foreign.LibFFI.Dynamic.Type.StructType instance GHC.Classes.Eq Foreign.LibFFI.Dynamic.Type.StructType instance Foreign.Storable.Storable (Foreign.LibFFI.Dynamic.Type.Type t) instance GHC.Show.Show (Foreign.LibFFI.Dynamic.Type.Type t) instance GHC.Classes.Ord (Foreign.LibFFI.Dynamic.Type.Type t) instance GHC.Classes.Eq (Foreign.LibFFI.Dynamic.Type.Type t) instance Foreign.Storable.Storable Foreign.LibFFI.Dynamic.Type.SomeType instance GHC.Show.Show Foreign.LibFFI.Dynamic.Type.SomeType instance GHC.Classes.Ord Foreign.LibFFI.Dynamic.Type.SomeType instance GHC.Classes.Eq Foreign.LibFFI.Dynamic.Type.SomeType instance GHC.Show.Show (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.Type.StructType) instance GHC.Classes.Ord (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.Type.StructType) instance GHC.Classes.Eq (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.Type.StructType) instance Data.Interned.Internal.Interned Foreign.LibFFI.Dynamic.Type.StructType instance Data.Interned.Internal.Uninternable Foreign.LibFFI.Dynamic.Type.StructType instance Data.Hashable.Class.Hashable (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.Type.StructType) instance Data.Hashable.Class.Hashable Foreign.LibFFI.Dynamic.Type.SomeType module Foreign.LibFFI.Dynamic.FFIType class FFIType a ffiType :: FFIType a => Type a ffiTypeOf :: FFIType a => p a -> Type a ffiTypeOf_ :: FFIType a => p a -> SomeType newtype InArg a b InArg :: (Ptr a -> IO b) -> InArg a b [peekArg] :: InArg a b -> Ptr a -> IO b castInArg :: InArg a c -> InArg b c withInArg :: InArg a b -> Ptr a -> (b -> IO t) -> IO t newtype OutArg a b OutArg :: (forall t. b -> (Ptr a -> IO t) -> IO t) -> OutArg a b [withOutArg] :: OutArg a b -> forall t. b -> (Ptr a -> IO t) -> IO t castOutArg :: OutArg a c -> OutArg b c composeInArgs :: InArg a (Ptr b) -> InArg b c -> InArg a c composeOutArgs :: OutArg b c -> OutArg a (Ptr b) -> OutArg a c class FFIType a => ArgType a inArg :: ArgType a => InArg a a inArg :: (ArgType a, Storable a) => InArg a a outArg :: ArgType a => OutArg a a outArg :: (ArgType a, Storable a) => OutArg a a data InRet a b InRet :: !forall t. (Ptr a -> IO t) -> IO t -> !Ptr a -> IO b -> InRet a b [allocaRet] :: InRet a b -> !forall t. (Ptr a -> IO t) -> IO t [peekRet] :: InRet a b -> !Ptr a -> IO b castInRet :: InRet a c -> InRet b c withInRet :: InRet a b -> (Ptr a -> IO t) -> IO b newtype OutRet a b OutRet :: (Ptr a -> b -> IO ()) -> OutRet a b [pokeRet] :: OutRet a b -> Ptr a -> b -> IO () castOutRet :: OutRet a c -> OutRet b c class FFIType a => RetType a inRet :: RetType a => InRet a a inRet :: (RetType a, Storable a) => InRet a a outRet :: RetType a => OutRet a a outRet :: (RetType a, Storable a) => OutRet a a type BoolRepr = (Word8) inRetViaInt :: Integral a => InRet a a inRetViaWord :: Integral a => InRet a a outRetViaInt :: Integral a => OutRet a a outRetViaWord :: Integral a => OutRet a a outByRef :: OutArg a b -> OutArg (Ptr a) b stringArg :: OutArg CString String instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CChar instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CChar instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CChar instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CSChar instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CSChar instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CSChar instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CUChar instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CUChar instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CUChar instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CShort instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CShort instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CShort instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CUShort instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CUShort instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CUShort instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CInt instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CInt instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CInt instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CUInt instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CUInt instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CUInt instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CLong instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CLong instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CLong instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CULong instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CULong instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CULong instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CPtrdiff instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CPtrdiff instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CPtrdiff instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CSize instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CSize instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CSize instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CWchar instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CWchar instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CWchar instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CSigAtomic instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CSigAtomic instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CSigAtomic instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CLLong instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CLLong instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CLLong instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CULLong instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CULLong instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CULLong instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CIntPtr instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CIntPtr instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CIntPtr instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CUIntPtr instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CUIntPtr instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CUIntPtr instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CIntMax instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CIntMax instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CIntMax instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CUIntMax instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CUIntMax instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CUIntMax instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CClock instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CClock instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CClock instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CTime instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CTime instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CTime instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CUSeconds instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CUSeconds instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CUSeconds instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CSUSeconds instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CSUSeconds instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CSUSeconds instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CFloat instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CFloat instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CFloat instance Foreign.LibFFI.Dynamic.FFIType.FFIType Foreign.C.Types.CDouble instance Foreign.LibFFI.Dynamic.FFIType.ArgType Foreign.C.Types.CDouble instance Foreign.LibFFI.Dynamic.FFIType.RetType Foreign.C.Types.CDouble instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Types.Bool instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Types.Bool instance Foreign.LibFFI.Dynamic.FFIType.RetType () instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Types.Bool instance Foreign.LibFFI.Dynamic.FFIType.RetType (GHC.Ptr.Ptr a) instance Foreign.LibFFI.Dynamic.FFIType.RetType (GHC.Ptr.FunPtr a) instance Foreign.LibFFI.Dynamic.FFIType.RetType (GHC.Stable.StablePtr a) instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Types.Float instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Types.Double instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Types.Int instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Int.Int8 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Int.Int16 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Int.Int32 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Int.Int64 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Types.Word instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Word.Word8 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Word.Word16 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Word.Word32 instance Foreign.LibFFI.Dynamic.FFIType.RetType GHC.Word.Word64 instance Data.Functor.Contravariant.Contravariant (Foreign.LibFFI.Dynamic.FFIType.OutRet a) instance GHC.Base.Functor (Foreign.LibFFI.Dynamic.FFIType.InRet a) instance Foreign.LibFFI.Dynamic.FFIType.ArgType (GHC.Ptr.Ptr a) instance Foreign.LibFFI.Dynamic.FFIType.ArgType (GHC.Ptr.FunPtr a) instance Foreign.LibFFI.Dynamic.FFIType.ArgType (GHC.Stable.StablePtr a) instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Types.Float instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Types.Double instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Types.Int instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Int.Int8 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Int.Int16 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Int.Int32 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Int.Int64 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Types.Word instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Word.Word8 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Word.Word16 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Word.Word32 instance Foreign.LibFFI.Dynamic.FFIType.ArgType GHC.Word.Word64 instance Data.Functor.Contravariant.Contravariant (Foreign.LibFFI.Dynamic.FFIType.OutArg a) instance GHC.Base.Functor (Foreign.LibFFI.Dynamic.FFIType.InArg a) instance Foreign.LibFFI.Dynamic.FFIType.FFIType () instance Foreign.LibFFI.Dynamic.FFIType.FFIType (GHC.Ptr.Ptr a) instance Foreign.LibFFI.Dynamic.FFIType.FFIType (GHC.Ptr.FunPtr a) instance Foreign.LibFFI.Dynamic.FFIType.FFIType (GHC.Stable.StablePtr a) instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Types.Float instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Types.Double instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Types.Int instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Int.Int8 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Int.Int16 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Int.Int32 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Int.Int64 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Types.Word instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Word.Word8 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Word.Word16 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Word.Word32 instance Foreign.LibFFI.Dynamic.FFIType.FFIType GHC.Word.Word64 instance (Foreign.LibFFI.Dynamic.FFIType.FFIType a, Foreign.LibFFI.Dynamic.FFIType.FFIType b) => Foreign.LibFFI.Dynamic.FFIType.FFIType (a, b) instance (Foreign.LibFFI.Dynamic.FFIType.FFIType a, Foreign.LibFFI.Dynamic.FFIType.FFIType b, Foreign.LibFFI.Dynamic.FFIType.FFIType c) => Foreign.LibFFI.Dynamic.FFIType.FFIType (a, b, c) instance (Foreign.LibFFI.Dynamic.FFIType.FFIType a, Foreign.LibFFI.Dynamic.FFIType.FFIType b, Foreign.LibFFI.Dynamic.FFIType.FFIType c, Foreign.LibFFI.Dynamic.FFIType.FFIType d) => Foreign.LibFFI.Dynamic.FFIType.FFIType (a, b, c, d) instance (Foreign.LibFFI.Dynamic.FFIType.FFIType a, Foreign.LibFFI.Dynamic.FFIType.FFIType b, Foreign.LibFFI.Dynamic.FFIType.FFIType c, Foreign.LibFFI.Dynamic.FFIType.FFIType d, Foreign.LibFFI.Dynamic.FFIType.FFIType e) => Foreign.LibFFI.Dynamic.FFIType.FFIType (a, b, c, d, e) module Foreign.LibFFI.Dynamic.CIF newtype ABI ABI :: CInt -> ABI defaultABI :: ABI newtype SomeCIF SomeCIF :: Ptr SomeCIF -> SomeCIF getCIF :: ABI -> SomeType -> [SomeType] -> SomeCIF newtype CIF a CIF :: SomeCIF -> CIF a toSomeCIF :: CIF a -> SomeCIF cif :: SigType t => CIF t cifWithABI :: SigType t => ABI -> CIF t abi :: SomeCIF -> ABI retType :: SomeCIF -> SomeType argTypes :: SomeCIF -> [SomeType] nArgs :: SomeCIF -> Int cifFlags :: SomeCIF -> CUInt class SigType t type family SigReturn t retTypeOf :: SigType t => p t -> SomeType argTypesOf :: SigType t => p t -> [SomeType] call :: SigType t => FunPtr t -> Ptr (SigReturn t) -> Ptr (Ptr ()) -> IO () callWithABI :: SigType t => ABI -> FunPtr t -> Ptr (SigReturn t) -> Ptr (Ptr ()) -> IO () callWithCIF :: CIF a -> FunPtr a -> Ptr (SigReturn a) -> Ptr (Ptr ()) -> IO () instance GHC.Show.Show (Foreign.LibFFI.Dynamic.CIF.CIF a) instance GHC.Classes.Ord (Foreign.LibFFI.Dynamic.CIF.CIF a) instance GHC.Classes.Eq (Foreign.LibFFI.Dynamic.CIF.CIF a) instance GHC.Show.Show Foreign.LibFFI.Dynamic.CIF.SomeCIF instance GHC.Classes.Ord Foreign.LibFFI.Dynamic.CIF.SomeCIF instance GHC.Classes.Eq Foreign.LibFFI.Dynamic.CIF.SomeCIF instance Foreign.Storable.Storable Foreign.LibFFI.Dynamic.CIF.ABI instance GHC.Show.Show Foreign.LibFFI.Dynamic.CIF.ABI instance GHC.Classes.Ord Foreign.LibFFI.Dynamic.CIF.ABI instance GHC.Classes.Eq Foreign.LibFFI.Dynamic.CIF.ABI instance GHC.Show.Show (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.CIF.SomeCIF) instance GHC.Classes.Eq (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.CIF.SomeCIF) instance Foreign.LibFFI.Dynamic.FFIType.FFIType t => Foreign.LibFFI.Dynamic.CIF.SigType (GHC.Types.IO t) instance (Foreign.LibFFI.Dynamic.FFIType.FFIType a, Foreign.LibFFI.Dynamic.CIF.SigType b) => Foreign.LibFFI.Dynamic.CIF.SigType (a -> b) instance Data.Interned.Internal.Interned Foreign.LibFFI.Dynamic.CIF.SomeCIF instance Data.Hashable.Class.Hashable (Data.Interned.Internal.Description Foreign.LibFFI.Dynamic.CIF.SomeCIF) instance Data.Hashable.Class.Hashable Foreign.LibFFI.Dynamic.CIF.ABI module Foreign.LibFFI.Dynamic.Closure newtype Closure Closure :: Ptr Closure -> Closure newtype Entry Entry :: FunPtr Entry -> Entry ffi_closure_alloc :: CSize -> Ptr Entry -> IO Closure ffi_closure_free :: Closure -> IO () type FFI_Impl t a = CIF t -> Ptr (SigReturn t) -> Ptr (Ptr ()) -> Ptr a -> IO () wrap_FFI_Impl :: FFI_Impl t a -> IO (FunPtr (FFI_Impl t a)) ffi_prep_closure_loc :: Closure -> CIF t -> FunPtr (FFI_Impl t a) -> Ptr a -> Entry -> IO FFI_Status instance Foreign.Storable.Storable Foreign.LibFFI.Dynamic.Closure.Entry instance GHC.Show.Show Foreign.LibFFI.Dynamic.Closure.Entry instance GHC.Classes.Ord Foreign.LibFFI.Dynamic.Closure.Entry instance GHC.Classes.Eq Foreign.LibFFI.Dynamic.Closure.Entry module Foreign.Dynamic data Dyn a b mkDyn :: InRet a b -> Dyn (IO a) (IO b) consDyn :: OutArg a b -> Dyn c d -> Dyn (a -> c) (b -> d) infixr 5 `consDyn` importDyn :: SigType a => Dyn a b -> FunPtr a -> b importDynWithABI :: SigType a => ABI -> Dyn a b -> FunPtr a -> b importDynWithCIF :: CIF a -> Dyn a b -> FunPtr a -> b importDynWithCall :: (FunPtr a -> Ptr (SigReturn a) -> Ptr (Ptr ()) -> IO ()) -> Dyn a b -> FunPtr a -> b class SigType a => Dynamic a dynamic :: Dynamic a => FunPtr a -> a dyn :: Dynamic a => Dyn a a instance Foreign.LibFFI.Dynamic.FFIType.RetType a => Foreign.Dynamic.Dynamic (GHC.Types.IO a) instance (Foreign.LibFFI.Dynamic.FFIType.ArgType a, Foreign.Dynamic.Dynamic b) => Foreign.Dynamic.Dynamic (a -> b) instance GHC.Base.Functor (Foreign.Dynamic.Dyn a) module Foreign.Wrapper data Wrap a b mkWrap :: OutRet a b -> Wrap (IO b) (IO a) consWrap :: InArg a b -> Wrap c d -> Wrap (b -> c) (a -> d) infixr 5 `consWrap` exportWrap :: SigType b => Wrap a b -> a -> IO (FunPtr b) exportWrapWithABI :: SigType b => ABI -> Wrap a b -> a -> IO (FunPtr b) exportWrapWithCIF :: CIF b -> Wrap a b -> a -> IO (FunPtr b) class SigType a => Wrapper a wrap :: Wrapper a => Wrap a a wrapper :: Wrapper a => a -> IO (FunPtr a) instance Foreign.LibFFI.Dynamic.FFIType.RetType a => Foreign.Wrapper.Wrapper (GHC.Types.IO a) instance (Foreign.LibFFI.Dynamic.FFIType.ArgType a, Foreign.Wrapper.Wrapper b) => Foreign.Wrapper.Wrapper (a -> b) module Foreign.LibFFI.Dynamic