Library/cinvoke
< Library
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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/