switch to luajit

This commit is contained in:
Squibid 2025-12-13 21:24:17 -05:00
parent 7537778e23
commit da4629a871
Signed by: squibid
GPG key ID: BECE5684D3C4005D
5 changed files with 33 additions and 13 deletions

View file

@ -4,6 +4,7 @@ const std = @import("std");
const config = @import("config");
const zlua = @import("zlua");
const LuaUtils = @import("LuaUtils.zig");
const Bridge = @import("Bridge.zig");
const Fs = @import("Fs.zig");
const Input = @import("Input.zig");
@ -110,32 +111,32 @@ pub fn openLibs(self: *zlua.Lua) void {
}
{
const fs_funcs = zlua.fnRegsFromType(Fs);
self.newLib(fs_funcs);
LuaUtils.newLib(self, fs_funcs);
self.setField(-2, "fs");
}
{
const input_funcs = zlua.fnRegsFromType(Input);
self.newLib(input_funcs);
LuaUtils.newLib(self, input_funcs);
self.setField(-2, "input");
}
{
const hook_funcs = zlua.fnRegsFromType(Hook);
self.newLib(hook_funcs);
LuaUtils.newLib(self, hook_funcs);
self.setField(-2, "hook");
}
{
const api_funcs = zlua.fnRegsFromType(Api);
self.newLib(api_funcs);
LuaUtils.newLib(self, api_funcs);
self.setField(-2, "api");
}
{
const view_funcs = zlua.fnRegsFromType(View);
self.newLib(view_funcs);
LuaUtils.newLib(self, view_funcs);
self.setField(-2, "view");
}
{
const output_funcs = zlua.fnRegsFromType(Output);
self.newLib(output_funcs);
LuaUtils.newLib(self, output_funcs);
self.setField(-2, "output");
}
}

View file

@ -24,3 +24,22 @@ pub fn coerceInteger(comptime x: type, number: zlua.Integer) error{InvalidIntege
else => @compileError("unsupported type"),
}
}
pub fn newLib(L: *zlua.Lua, f: []const zlua.FnReg) void {
L.newLibTable(f); // documented as being unavailable, but it is.
for (f) |value| {
if (value.func == null) continue;
L.pushClosure(value.func.?, 0);
L.setField(-2, value.name);
}
}
/// makes a best effort to convert the value at the top of the stack to a string
/// if we're unable to do so return "nil"
pub fn toStringEx(L: *zlua.Lua) [:0]const u8 {
const errstr = "nil";
_ = L.getGlobal("tostring") catch return errstr;
L.insert(1);
L.protectedCall(.{ .args = 1, .results = 1 }) catch return errstr;
return L.toString(-1) catch errstr;
}