
Hi,
bindings-DSL is a mature and well documented preprocessor domain
specific language you can use to generate bindings to a C API.
It's based on functionality provided by hsc2hs. These are links to
Hackage page and documentation:
http://hackage.haskell.org/package/bindings-DSL
http://bitbucket.org/mauricio/bindings-dsl
New in this version:
* Support for C unions.
* Use of
let value = C'example 1 []
u'example'k value (2^10)
C'example {c'example'k = 1024, c'example'c = [0,4,0,0]}
u'example'c value [1,0,0,0]
C'example {c'example'k = 1, c'example'c = [1,0,0,0]}
u'example'c value [0,0,0,1]
C'example {c'example'k = 16777216, c'example'c = [0,0,0,1]} Peeking an uninitialized memory address:
v <- alloca $ \p -> peek p :: IO C'example v
C'example {c'example'k = 81842189, c'example'c = [13,-48,-32,4]} Hope it's useful to you. Best, Maurício