1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "lua.h"
- #include "lauxlib.h"
- #include "finsh.h"
- int c_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;
- }
- /**
- * lua call c function
- */
- int luacprint()
- {
- lua_State *L = luaL_newstate();
- lua_register(L, "c_print", c_print);
-
- rt_kprintf("lua test - c_print: c_print('lua for rt-thread')\n");
- luaL_dostring(L, "c_print('lua for rt-thread')");
- rt_kprintf("done\n");
-
- lua_close(L);
- return 0;
- }
- FINSH_FUNCTION_EXPORT(luacprint, register c function in lua and call it)
|