luaPrint function
Implementation
int luaPrint(Pointer<lua_State> L) {
final bindings = LuaRuntime.lua; // static reference
final buffer = StringBuffer();
final n = bindings.lua_gettop(L);
final namePtr = "tostring".toNativeUtf8().cast<Char>();
for (var i = 1; i <= n; i++) {
bindings.lua_getglobal(L, namePtr);
bindings.lua_pushvalue(L, i);
bindings.lua_pcallk(L, 1, 1, 0, 0, nullptr);
final s = bindings.lua_tolstring(L, -1, nullptr);
if (s.address != 0) {
buffer.write(s.cast<Utf8>().toDartString());
} else {
buffer.write("[nil]");
}
bindings.lua_settop(L, -2);
if (i < n) buffer.write("\t");
}
malloc.free(namePtr); // free after use
LuaRuntime.lastPrintOutput = buffer.toString();
return 0;
}