ivanvoras:bsdlua

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ivanvoras:bsdlua [2011/05/14 03:17] – IvanVorasivanvoras:bsdlua [2011/05/29 22:50] (current) – IvanVoras
Line 1: Line 1:
 The BSDCan 2011 slides on BSDLUA are here: {{ivanvoras/bsdlua/bsdlua.pdf?linkonly|bsdlua.pdf}} and also here: http://people.freebsd.org/~ivoras/slides/bsdlua2011.pdf . The BSDCan 2011 slides on BSDLUA are here: {{ivanvoras/bsdlua/bsdlua.pdf?linkonly|bsdlua.pdf}} and also here: http://people.freebsd.org/~ivoras/slides/bsdlua2011.pdf .
 +
 +The current (may be temporary) Mercurial (hg) repository for BSDLUA is available at http://cosmos.boldlygoingnowhere.org:81/~ivoras/hg/bsdlua .
 +
 +You can make a local clone of the repository with:
 +
 +<code>
 +hg clone http://cosmos.boldlygoingnowhere.org:81/~ivoras/hg/bsdlua
 +</code>
 +
 +Please send patches via ''%%hg export%%''!
 +
 +===== Tutorial for embedders =====
 +
 +Please read the following documentation:
 +
 +  * http://www.lua.org/ - The main Lua site
 +  * http://pgl.yoyo.org/luai/i/3.7+Functions+and+Types - C functions and types used to access Lua from C
 +  * http://www.lua.org/manual/5.1/#index - all else on Lua
 +  * http://lua-users.org/wiki/LuaDirectory - some Lua Wiki resources
 +  * http://www.codeproject.com/KB/cpp/luaincpp.aspx - Another tutorial on embedding
 +
 +The newest version of this script is committed in the BSDLUA hg repository in the ''%%bsdlua/tests/scripting%%'' directory.
 +
 +An example program (note that this program and its Makefile require that the BSDLUA is installed, i.e. that the ''%%make install%%'' target was executed):
 +
 +<code>
 +#include <stdlib.h>
 +#include <stdio.h>
 +#include <unistd.h>
 +#include <assert.h>
 +
 +#include <bsdlua.h>
 +#include <bsdlauxlib.h>
 +
 +lua_State *L;
 +
 +static int
 +greeting(lua_State *L)
 +{
 +        /* This function accepts one string argument and returns no values */
 +        int nargs = lua_gettop(L);
 +        const char *arg;
 +
 +        assert(nargs == 1);
 +        arg = lua_tostring(L, 1);
 +        printf("Hello from C: %s\n", arg);
 +
 +        /* lua_pushstring(L, "blah blah blah"); */
 +        /* if the above line were uncommented, the function would return "1" */
 +        return 0;
 +}
 +
 +int
 +main()
 +{
 +        L = lua_open();
 +        luaL_openlibs(L);
 +
 +        luaL_dostring(L, "print(\"Hello from lua\")");
 +
 +        lua_register(L, "greeting", greeting);
 +        luaL_dostring(L, "greeting(\"cromulent\")");
 +
 +        /* Call BSDLUA */
 +        luaL_dostring(L, "print(\"My PID is: \" .. posix.getpid())");
 +}
 +</code>
 +
 +Makefile:
 +
 +<code>
 +all: luainc
 +
 +clean:
 +        rm -f *.o *.core luainc
 +
 +luainc: luainc.o
 +        gcc -o luainc luainc.o -lbsdlua -lm -lcurses -lpanel
 +
 +luainc.o: luainc.c
 +        gcc -O2 -o luainc.o -c luainc.c
 +</code>
  
  • ivanvoras/bsdlua.1305343046.txt.gz
  • Last modified: 2011/05/14 03:17
  • by IvanVoras