mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-22 19:44:24 +08:00
move larduinolib.c into ART's repo, add lua external library example
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2405 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
+75
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user