123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /**
- * example of adding lua external library
- */
- #include "lua.h"
- #include "lauxlib.h"
- #include "lexlibs.h"
- #define VERSION 1
- int example_hello(lua_State *L)
- {
- rt_kprintf("Hello, Lua on RT-Thead!\n");
- return 0;
- }
- int example_print(lua_State *L)
- {
- int n = lua_gettop(L);
- int i;
- for (i=1; i<=n; i++)
- {
- if (i>1)
- rt_kprintf("\t");
- if (lua_isstring(L,i))
- rt_kprintf("%s",lua_tostring(L,i));
- else if (lua_isnumber(L, i))
- rt_kprintf("%d",lua_tointeger(L,i));
- else if (lua_isnil(L,i))
- rt_kprintf("%s","nil");
- else if (lua_isboolean(L,i))
- rt_kprintf("%s",lua_toboolean(L,i) ? "true" : "false");
- else
- rt_kprintf("%s:%p",luaL_typename(L,i),lua_topointer(L,i));
- }
- rt_kprintf("\n");
- return 0;
- }
-
- #define MIN_OPT_LEVEL 2
- #include "lrodefs.h"
- const LUA_REG_TYPE example_map[] =
- {
- {LSTRKEY("hello"), LFUNCVAL(example_hello)},
- {LSTRKEY("print"), LFUNCVAL(example_print)},
- #if LUA_OPTIMIZE_MEMORY > 0
- {LSTRKEY("version"), LNUMVAL(VERSION)},
- #endif
- {LNILKEY, LNILVAL}
- };
- /**
- * Open exmaple library
- */
- LUALIB_API int luaopen_example(lua_State *L)
- {
- #if LUA_OPTIMIZE_MEMORY > 0
- return 0;
- #else
- luaL_register(L, EXLIB_EXAMPLE, example_map);
- lua_pushnumber(L, VERSION);
- lua_setfield(L, -2, "version");
- return 1;
- #endif
- }
|