[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: loadlib
- From: Luiz Henrique de Figueiredo <lhf@...>
- Date: Wed, 28 May 2003 23:44:33 -0300
>Do we have a convention for naming the init() function with loadlib()?
>
>e.g. fnc=loadlib(mylib,initfunction)
>
>whats a good name for 'initfunction' ?
The convention used in the standard Lua libraries is "luaopen_xxx" where
"xxx" identifies the library, that is, is the name of the table it exports.
Here is a few names of the libraries I'm working on now (my own projects,
not official Lua libraries):
alarm/lalarm.c LUALIB_API int luaopen_alarm (lua_State *L)
bc/lbc.c LUALIB_API int luaopen_bc (lua_State *L)
gdbm/lgdbm.c LUALIB_API int luaopen_gdbm (lua_State *L)
mapm/lmapm.c LUALIB_API int luaopen_mapm (lua_State *L)
pdf/lpdf.c LUALIB_API int luaopen_pdf (lua_State *L)
posix/lposix.c LUALIB_API int luaopen_posix (lua_State *L)
Note that the library is named lxxx.so. Moreover, I'm using a xxx.lua
file that loads the .so and adds support code if necessary. This reads
nicely with -l in the standalone interpreter. Here is a sample:
-- bc.lua
-- support code for bc library
-- usage lua -lbc ...
local function so(x)
local SOPATH= os.getenv"LUA_SOPATH" or "./"
assert(loadlib(SOPATH.."l"..x..".so","luaopen_"..x))()
end
so"bc"
do
local T=bc.metatable
T.__add=bc.add
T.__sub=bc.sub
T.__mul=bc.mul
T.__div=bc.div
T.__pow=bc.pow
T.__lt=function (a,b) return bc.compare(a,b)<0 end
T.__eq=function (a,b) return bc.compare(a,b)==0 end
T.__unm=function (a) return bc.sub(0,a) end
T.__tostring=bc.tostring
end
--lhf