lcpp - a C-PreProcessor for Lua 5.1 and LuaJIT ffi integration
This module offers a standard preprocessor for C code in pure Lua. The primary usecase is to enable LuaJIT ffi preprocessing. But you can also preprocess any other stuff (even Lua code itself)
Links
* Project page http://lcpp.schmoock.net * GitHub Page https://github.com/m-schmoock/lcpp * Lua http://www.lua.org/ * LuaJIT http://luajit.org
Usage
-- load lcpp (ffi.cdef wrapper turned on per default) local lcpp = require("lcpp") -- just use LuaJIT ffi and lcpp together ffi.cdef("#include <your_header.h>") -- or compile some code by hand local result = lcpp.compile("...") local out = lcpp.compile([[ #define MAXPATH 260 typedef struct somestruct_t { void* base; size_t size; wchar_t path[MAXPATH]; } t_exe; ]])
Supports
features: transparent LuaJIT ffi extension replacement macros macro chaining functional macros multiline macros expressions (defined(xyz) && ...) concat operator ("##") screen C single- and multiline comments directives: #include #define #undef #pragma #error #if #ifdef #ifndef #else #else if #elif #endif macros: __LINE__ __FILE__ __DATE__ __TIME__ __LCPP_INDENT__
Make targets
make test # run the included test cases make doc # ldoc must be installed
License
MIT licencse included in lua modue.
2012-2014 Michael Schmoock michael@schmoock.net