test.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "lua.h"
  2. #include "lauxlib.h"
  3. #include "finsh.h"
  4. int c_print(lua_State *L)
  5. {
  6. int n = lua_gettop(L);
  7. int i;
  8. for (i=1; i<=n; i++)
  9. {
  10. if (i>1)
  11. rt_kprintf("\t");
  12. if (lua_isstring(L,i))
  13. rt_kprintf("%s",lua_tostring(L,i));
  14. else if (lua_isnumber(L, i))
  15. rt_kprintf("%d",lua_tointeger(L,i));
  16. else if (lua_isnil(L,i))
  17. rt_kprintf("%s","nil");
  18. else if (lua_isboolean(L,i))
  19. rt_kprintf("%s",lua_toboolean(L,i) ? "true" : "false");
  20. else
  21. rt_kprintf("%s:%p",luaL_typename(L,i),lua_topointer(L,i));
  22. }
  23. rt_kprintf("\n");
  24. return 0;
  25. }
  26. /**
  27. * lua call c function
  28. */
  29. int luacprint()
  30. {
  31. lua_State *L = luaL_newstate();
  32. lua_register(L, "c_print", c_print);
  33. rt_kprintf("lua test - c_print: c_print('lua for rt-thread')\n");
  34. luaL_dostring(L, "c_print('lua for rt-thread')");
  35. rt_kprintf("done\n");
  36. lua_close(L);
  37. return 0;
  38. }
  39. FINSH_FUNCTION_EXPORT(luacprint, register c function in lua and call it)