[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: The first Lua library
- From: luciano de souza <luchyanus@...>
- Date: Tue, 6 Nov 2012 15:02:30 -0300
Hello listers,
I am trying to understand the basic mechanism of Lua stack
registrations. This Pascal code compiled, but I have a run-time error.
As it's an generic error, I could not identify what's wrong.
library opr;
{$calling cdecl}
{$mode objfpc}{$H+}
uses
lua;
function sum(l: plua_state):integer;
var
x, y: integer;
begin
lua_tonumber(l, x);
lua_tonumber(l, y);
lua_pushnumber(l, x+y);
result := 1;
end;
function luaopen_opr(l: plua_state):integer;
var
r: array[0..1] of luaL_reg;
begin
l := lua_open;
luaL_OpenLibs(l);
r[0].name := 'sum';
r[0].func := @sum;
luaL_openlib(l, 'opr', @r, 0);
lua_close(l);
result := 1;
end;
exports
luaopen_opr;
end.
In the Lua code, I would like to do it:
require('opr')
print(opr.sum(3, 5))
I follow C API and I believe the fact it was writen in Pascal won't
create difficulties for the discutions.
These are my first steps in C API. Do they seem to be wrong? Does
someone have any tip for me?
Regards,
Luciano