mork
----
(c) Reuben Thomas 2011 <rrt@sc3d.org>
https://github.com/rrthomas/mork
Mork provides automatic C bindings for Lua using ctypesgen-json and alien. (Mork is a friendly alien. However, it cannot drink through its fingers. Indeed, it does not have fingers. It is a shallow analogy.) Mork is distributed under the MIT License, like Lua itself.
alien is a libffi binding for Lua: http://mascarenhas.github.com/alien/
ctypesgen-json turns C headers into JSON for use with libffi: http://code.google.com/p/ctypesgen/
It might be better to use cparser: http://sourceforge.net/projects/cparser/
First, turn a header file into JSON using ctypesgen-json:
$ ctypesgen.py --all-headers --builtin-symbols --output-language=json /usr/include/foo.h -o foo.json
Then in Lua, Mork slurps up the JSON and generates alien bindings on the fly, returning a module:
require "mork" require "json"
module = mork.bind (json.decode (io.open ("foo.json"):read ("*a")))