Library/cinvoke
< Library
Jump to navigation
Jump to search
cinvoke is a library allowing C functions of types only known at runtime to be called from Haskell.
As an example is worth a thousand words:
module Main where
import Foreign.Ptr
import Foreign.CInvoke
main = do
cxt <- newContext
libc <- loadLibrary cxt "libc.so.6"
malloc <- loadSymbol libc "malloc"
memset <- loadSymbol libc "memset"
free <- loadSymbol libc "free"
let sz = 2^30
p <- cinvoke malloc (retPtr retVoid) [argCSize sz]
cinvoke memset (retPtr retVoid) [argPtr p, argCInt 0, argCSize sz]
cinvoke free (retPtr retVoid) [argPtr p]
It can be found at hackage: http://hackage.haskell.org/package/cinvoke
The Haddock documentation is (for now) at: http://student.science.uva.nl/~rturk/cinvoke-0.1-docs/