Lua Writer¶
The Lua writer generates LuaJIT FFI binding files from headerkit IR. The
output wraps C declarations inside ffi.cdef[[ ... ]] blocks and handles
structs, unions, enums, functions, typedefs, constants, and variables.
Non-integer constants (floats, strings) are emitted as Lua local variables
outside the cdef block.
Writer Class¶
LuaWriter
¶
Writer that generates LuaJIT FFI binding files from headerkit IR.
Example¶
::
from headerkit.writers import get_writer
writer = get_writer("lua")
lua_source = writer.write(header)
# Or directly:
from headerkit.writers.lua import LuaWriter
writer = LuaWriter()
lua_source = writer.write(header)
Convenience Function¶
header_to_lua
¶
Convert all declarations in a Header to a LuaJIT FFI binding file.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
header
|
Header
|
Parsed header IR from headerkit. |
required |
Returns:
| Type | Description |
|---|---|
str
|
A complete Lua file with ffi.cdef declarations. |
Example¶
from headerkit.backends import get_backend
from headerkit.writers import get_writer
backend = get_backend()
header = backend.parse("""
typedef struct {
int x;
int y;
} Point;
int distance(const Point* a, const Point* b);
""", "geometry.h")
writer = get_writer("lua")
print(writer.write(header))
Output: