bindings-libffi 0.0.2 → 0.1
raw patch · 9 files changed
+56/−409 lines, 9 filesdep ~bindings-commonPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bindings-common
API changes (from Hackage documentation)
- Bindings.Libffi: _FFI_BAD_ABI :: Ffi_status
- Bindings.Libffi: _FFI_BAD_TYPEDEF :: Ffi_status
- Bindings.Libffi: _FFI_CLOSURES :: CInt
- Bindings.Libffi: _FFI_DEFAULT_ABI :: Ffi_abi
- Bindings.Libffi: _FFI_FIRST_ABI :: Ffi_abi
- Bindings.Libffi: _FFI_OK :: Ffi_status
- Bindings.Libffi: data Ffi_cif
- Bindings.Libffi: data Ffi_closure
- Bindings.Libffi: data Ffi_type
- Bindings.Libffi: ffi_call :: Ptr Ffi_cif -> FunPtr (IO ()) -> Ptr () -> Ptr (Ptr ()) -> IO ()
- Bindings.Libffi: ffi_closure_alloc :: CSize -> Ptr (Ptr ()) -> IO (Ptr ())
- Bindings.Libffi: ffi_closure_free :: Ptr () -> IO ()
- Bindings.Libffi: ffi_prep_cif :: Ptr Ffi_cif -> Ffi_abi -> CUInt -> Ptr Ffi_type -> Ptr (Ptr Ffi_type) -> IO Ffi_status
- Bindings.Libffi: ffi_prep_closure_loc :: Ptr Ffi_closure -> Ptr Ffi_cif -> FunPtr (Ptr Ffi_cif -> Ptr () -> Ptr (Ptr ()) -> Ptr a -> IO ()) -> Ptr a -> Ptr () -> IO Ffi_status
- Bindings.Libffi: ffi_type_double :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_float :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_pointer :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_schar :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_sint :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_sint16 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_sint32 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_sint64 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_sint8 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_slong :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_sshort :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_uchar :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_uint :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_uint16 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_uint32 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_uint64 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_uint8 :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_ulong :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_ushort :: Ptr Ffi_type
- Bindings.Libffi: ffi_type_void :: Ptr Ffi_type
- Bindings.Libffi: type Ffi_abi = CInt
- Bindings.Libffi: type Ffi_status = CInt
+ Bindings.Libffi: C'ffi_cif :: C'ffi_cif
+ Bindings.Libffi: C'ffi_type :: C'ffi_type
+ Bindings.Libffi: c'FFI_BAD_ABI :: (Num a) => a
+ Bindings.Libffi: c'FFI_BAD_TYPEDEF :: (Num a) => a
+ Bindings.Libffi: c'FFI_DEFAULT_ABI :: (Num a) => a
+ Bindings.Libffi: c'FFI_FIRST_ABI :: (Num a) => a
+ Bindings.Libffi: c'FFI_LAST_ABI :: (Num a) => a
+ Bindings.Libffi: c'FFI_OK :: (Num a) => a
+ Bindings.Libffi: c'ffi_call :: Ptr C'ffi_cif -> FunPtr (IO ()) -> Ptr () -> Ptr (Ptr ()) -> IO ()
+ Bindings.Libffi: 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
+ Bindings.Libffi: data C'ffi_cif
+ Bindings.Libffi: data C'ffi_type
+ Bindings.Libffi: instance Eq C'ffi_cif
+ Bindings.Libffi: instance Show C'ffi_cif
+ Bindings.Libffi: instance Storable C'ffi_cif
+ Bindings.Libffi: p'ffi_call :: FunPtr (Ptr C'ffi_cif -> FunPtr (IO ()) -> Ptr () -> Ptr (Ptr ()) -> IO ())
+ Bindings.Libffi: 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)
+ Bindings.Libffi: p'ffi_type_double :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_float :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_pointer :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_sint16 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_sint32 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_sint64 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_sint8 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_uint16 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_uint32 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_uint64 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_uint8 :: Ptr (C'ffi_type)
+ Bindings.Libffi: p'ffi_type_void :: Ptr (C'ffi_type)
+ Bindings.Libffi: type C'ffi_abi = Word32
+ Bindings.Libffi: type C'ffi_arg = Word32
+ Bindings.Libffi: type C'ffi_sarg = Int32
+ Bindings.Libffi: type C'ffi_status = Word32
Files
- .hg_archival.txt +2/−0
- bindings-libffi.cabal +8/−19
- src/Bindings/Libffi.hs +0/−62
- src/Bindings/Libffi.hsc +46/−0
- src/LibffiConstants.hs +0/−83
- src/LibffiFunctions.hs +0/−24
- src/LibffiTypes.hs +0/−54
- src/constants.c +0/−131
- src/types.c +0/−36
+ .hg_archival.txt view
@@ -0,0 +1,2 @@+repo: 6a5d100c4a20cb7e2d280489520d74314a98a3b9+node: e30b923e1b7b7a51cf62eb3613a23f4c6d7369f8
bindings-libffi.cabal view
@@ -1,34 +1,23 @@ cabal-version: >= 1.2.3 name: bindings-libffi-homepage: http://bitbucket.org/mauricio/bindings+homepage: http://bitbucket.org/mauricio/bindings-libffi synopsis:- Check bindings-common package for directions.-version: 0.0.2+ Low level bindings to libffi.+version: 0.1 license: BSD3 license-file: LICENSE maintainer: Maurício C. Antunes author: Maurício C. Antunes build-type: Simple category: FFI+bug-reports: http://bitbucket.org/mauricio/bindings-libffi/issues library hs-source-dirs: src extensions: ForeignFunctionInterface- TypeSynonymInstances- ScopedTypeVariables- EmptyDataDecls- TypeFamilies- build-depends: base >= 3 && <5, bindings-common+ build-depends:+ base >= 3 && <5,+ bindings-common >= 1 && < 2 exposed-modules: Bindings.Libffi- other-modules:- LibffiConstants- LibffiTypes- LibffiFunctions--- This has to be commented out so that hackage--- won't complain about a missing library.---c-sources:--- src/constants.c--- src/types.c---pkgconfig-depends:--- libffi >= 3.0+ pkgconfig-depends: libffi >= 3.0.7
− src/Bindings/Libffi.hs
@@ -1,62 +0,0 @@--- | See <http://sourceware.org/libffi>.--module Bindings.Libffi (-- -- * The basics-- ffi_prep_cif,- ffi_call,- Ffi_cif,- Ffi_status,- _FFI_OK,- _FFI_BAD_TYPEDEF,- _FFI_BAD_ABI,-- -- * Types-- -- ** Primitive Types-- ffi_type_void,- ffi_type_uint8,- ffi_type_sint8,- ffi_type_uint16,- ffi_type_sint16,- ffi_type_uint32,- ffi_type_sint32,- ffi_type_uint64,- ffi_type_sint64,- ffi_type_float,- ffi_type_double,- ffi_type_uchar,- ffi_type_schar,- ffi_type_ushort,- ffi_type_sshort,- ffi_type_uint,- ffi_type_sint,- ffi_type_ulong,- ffi_type_slong,- ffi_type_pointer,-- -- ** Structures-- Ffi_type,-- -- * Multiple ABIs-- Ffi_abi,- _FFI_FIRST_ABI,- _FFI_DEFAULT_ABI,-- -- * The Closure API-- _FFI_CLOSURES,- ffi_closure_alloc,- ffi_closure_free,- ffi_prep_closure_loc,- Ffi_closure-- ) where--import LibffiConstants-import LibffiTypes-import LibffiFunctions
+ src/Bindings/Libffi.hsc view
@@ -0,0 +1,46 @@+#include <bindings.macros.h>+#include <ffi.h>++-- | <http://sourceware.org/libffi>.++module Bindings.Libffi where+import Foreign+import Foreign.C++#ccall ffi_prep_cif , Ptr <ffi_cif> -> <ffi_abi> -> \+ CUInt -> Ptr <ffi_type> -> Ptr (Ptr <ffi_type>) -> IO <ffi_status>++#ccall ffi_call , Ptr <ffi_cif> -> FunPtr (IO ()) -> \+ Ptr () -> Ptr (Ptr ()) -> IO ()++#starttype ffi_cif+#stoptype++#integral_t ffi_abi+#integral_t ffi_arg+#integral_t ffi_sarg+#integral_t ffi_status++#opaque_t ffi_type++#num FFI_OK+#num FFI_BAD_TYPEDEF+#num FFI_BAD_ABI+#num FFI_FIRST_ABI+#num FFI_DEFAULT_ABI+#num FFI_LAST_ABI+++#globalvar ffi_type_void , <ffi_type>+#globalvar ffi_type_uint8 , <ffi_type>+#globalvar ffi_type_sint8 , <ffi_type>+#globalvar ffi_type_uint16 , <ffi_type>+#globalvar ffi_type_sint16 , <ffi_type>+#globalvar ffi_type_uint32 , <ffi_type>+#globalvar ffi_type_sint32 , <ffi_type>+#globalvar ffi_type_uint64 , <ffi_type>+#globalvar ffi_type_sint64 , <ffi_type>+#globalvar ffi_type_float , <ffi_type>+#globalvar ffi_type_double , <ffi_type>+#globalvar ffi_type_pointer , <ffi_type>+
− src/LibffiConstants.hs
@@ -1,83 +0,0 @@-module LibffiConstants where-import Foreign-import Foreign.C-import LibffiTypes--foreign import ccall "_ffi_type_uchar" ffi_type_uchar- :: Ptr Ffi_type--foreign import ccall "_ffi_type_schar" ffi_type_schar- :: Ptr Ffi_type--foreign import ccall "_ffi_type_ushort" ffi_type_ushort- :: Ptr Ffi_type--foreign import ccall "_ffi_type_sshort" ffi_type_sshort- :: Ptr Ffi_type--foreign import ccall "_ffi_type_uint" ffi_type_uint- :: Ptr Ffi_type--foreign import ccall "_ffi_type_sint" ffi_type_sint- :: Ptr Ffi_type--foreign import ccall "_ffi_type_ulong" ffi_type_ulong- :: Ptr Ffi_type--foreign import ccall "_ffi_type_slong" ffi_type_slong- :: Ptr Ffi_type--foreign import ccall "_ffi_type_void" ffi_type_void- :: Ptr Ffi_type--foreign import ccall "_ffi_type_uint8" ffi_type_uint8- :: Ptr Ffi_type--foreign import ccall "_ffi_type_sint8" ffi_type_sint8- :: Ptr Ffi_type--foreign import ccall "_ffi_type_uint16" ffi_type_uint16- :: Ptr Ffi_type--foreign import ccall "_ffi_type_sint16" ffi_type_sint16- :: Ptr Ffi_type--foreign import ccall "_ffi_type_uint32" ffi_type_uint32- :: Ptr Ffi_type--foreign import ccall "_ffi_type_sint32" ffi_type_sint32- :: Ptr Ffi_type--foreign import ccall "_ffi_type_uint64" ffi_type_uint64- :: Ptr Ffi_type--foreign import ccall "_ffi_type_sint64" ffi_type_sint64- :: Ptr Ffi_type--foreign import ccall "_ffi_type_float" ffi_type_float- :: Ptr Ffi_type--foreign import ccall "_ffi_type_double" ffi_type_double- :: Ptr Ffi_type--foreign import ccall "_ffi_type_pointer" ffi_type_pointer- :: Ptr Ffi_type--foreign import ccall "_FFI_OK" _FFI_OK- :: Ffi_status--foreign import ccall "_FFI_BAD_TYPEDEF" _FFI_BAD_TYPEDEF- :: Ffi_status--foreign import ccall "_FFI_BAD_ABI" _FFI_BAD_ABI- :: Ffi_status--foreign import ccall "_FFI_CLOSURES" _FFI_CLOSURES- :: CInt--foreign import ccall "_FFI_FIRST_ABI" _FFI_FIRST_ABI- :: Ffi_abi--foreign import ccall "_FFI_DEFAULT_ABI" _FFI_DEFAULT_ABI- :: Ffi_abi-
− src/LibffiFunctions.hs
@@ -1,24 +0,0 @@-module LibffiFunctions where-import Foreign-import Foreign.C-import LibffiTypes--foreign import ccall "ffi_closure_alloc" ffi_closure_alloc- :: CSize -> Ptr (Ptr ()) -> IO (Ptr ())--foreign import ccall "ffi_closure_free" ffi_closure_free- :: Ptr () -> IO ()--foreign import ccall "ffi_prep_closure_loc" ffi_prep_closure_loc- :: Ptr Ffi_closure -> Ptr Ffi_cif -> FunPtr (Ptr Ffi_cif ->- Ptr () -> Ptr (Ptr ()) -> Ptr a -> IO ()) -> Ptr a ->- Ptr () -> IO Ffi_status--foreign import ccall "ffi_prep_cif" ffi_prep_cif- :: Ptr Ffi_cif -> Ffi_abi -> CUInt -> Ptr Ffi_type -> - Ptr (Ptr Ffi_type) -> IO Ffi_status--foreign import ccall "ffi_call" ffi_call- :: Ptr Ffi_cif -> FunPtr (IO ()) -> Ptr () -> Ptr (Ptr ()) ->- IO ()-
− src/LibffiTypes.hs
@@ -1,54 +0,0 @@-module LibffiTypes where-import Foreign-import Foreign.C--data Ffi_type = Ffi_type {- ffi_type'size :: CSize,- ffi_type'alignment,- ffi_type'type :: CUShort,- ffi_type'elements :: Ptr (Ptr Ffi_type)- }--instance Storable Ffi_type where- sizeOf _ = fromIntegral size_of_ffi_type- alignment = sizeOf- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with nullPtr $ \p4 ->- c2hs_ffi_type p p1 p2 p3 p4 >>- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- return $ Ffi_type v1 v2 v3 v4- poke p (Ffi_type v1 v2 v3 v4) = hs2c_ffi_type p v1 v2 v3 v4--type Ffi_status = CInt--type Ffi_abi = CInt--data Ffi_cif = Ffi_cif--instance Storable Ffi_cif where- sizeOf _ = fromIntegral size_of_ffi_cif- alignment = sizeOf- peek p = return Ffi_cif- poke p v = return ()--data Ffi_closure--foreign import ccall "size_of_ffi_type" size_of_ffi_type- :: CInt--foreign import ccall "hs2c_ffi_type" hs2c_ffi_type- :: Ptr Ffi_type -> CSize -> CUShort -> CUShort ->- Ptr (Ptr Ffi_type) -> IO ()--foreign import ccall "c2hs_ffi_type" c2hs_ffi_type- :: Ptr Ffi_type -> Ptr CSize -> Ptr CUShort -> Ptr CUShort ->- Ptr (Ptr (Ptr Ffi_type)) -> IO ()--foreign import ccall "size_of_ffi_cif" size_of_ffi_cif- :: CInt
− src/constants.c
@@ -1,131 +0,0 @@-#include <ffi.h>--ffi_type *_ffi_type_uchar (void)-{- return &ffi_type_uchar;-}--ffi_type *_ffi_type_schar (void)-{- return &ffi_type_schar;-}--ffi_type *_ffi_type_ushort (void)-{- return &ffi_type_ushort;-}--ffi_type *_ffi_type_sshort (void)-{- return &ffi_type_sshort;-}--ffi_type *_ffi_type_uint (void)-{- return &ffi_type_uint;-}--ffi_type *_ffi_type_sint (void)-{- return &ffi_type_sint;-}--ffi_type *_ffi_type_ulong (void)-{- return &ffi_type_ulong;-}--ffi_type *_ffi_type_slong (void)-{- return &ffi_type_slong;-}--ffi_type *_ffi_type_void (void)-{- return &ffi_type_void;-}--ffi_type *_ffi_type_uint8 (void)-{- return &ffi_type_uint8;-}--ffi_type *_ffi_type_sint8 (void)-{- return &ffi_type_sint8;-}--ffi_type *_ffi_type_uint16 (void)-{- return &ffi_type_uint16;-}--ffi_type *_ffi_type_sint16 (void)-{- return &ffi_type_sint16;-}--ffi_type *_ffi_type_uint32 (void)-{- return &ffi_type_uint32;-}--ffi_type *_ffi_type_sint32 (void)-{- return &ffi_type_sint32;-}--ffi_type *_ffi_type_uint64 (void)-{- return &ffi_type_uint64;-}--ffi_type *_ffi_type_sint64 (void)-{- return &ffi_type_sint64;-}--ffi_type *_ffi_type_float (void)-{- return &ffi_type_float;-}--ffi_type *_ffi_type_double (void)-{- return &ffi_type_double;-}--ffi_type *_ffi_type_pointer (void)-{- return &ffi_type_pointer;-}--ffi_status _FFI_OK (void)-{- return FFI_OK;-}--ffi_status _FFI_BAD_TYPEDEF (void)-{- return FFI_BAD_TYPEDEF;-}--ffi_status _FFI_BAD_ABI (void)-{- return FFI_BAD_ABI;-}--int _FFI_CLOSURES (void)-{- return FFI_CLOSURES;-}--ffi_abi _FFI_FIRST_ABI (void)-{- return FFI_FIRST_ABI;-}--ffi_abi _FFI_DEFAULT_ABI (void)-{- return FFI_DEFAULT_ABI;-}
− src/types.c
@@ -1,36 +0,0 @@-#include <ffi.h>--int size_of_ffi_type (void)-{- return sizeof (ffi_type);-}--void hs2c_ffi_type (ffi_type *p,- size_t v1,- unsigned short v2,- unsigned short v3,- ffi_type **v4)-{- p->size = v1;- p->alignment = v2;- p->type = v3;- p->elements = v4;-}--void c2hs_ffi_type (ffi_type *p,- size_t *p1,- unsigned short *p2,- unsigned short *p3,- ffi_type ***p4)-{- *p1 = p->size;- *p2 = p->alignment;- *p3 = p->type;- *p4 = p->elements;-}--int size_of_ffi_cif (void)-{- return sizeof (ffi_cif);-}-