| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #include "pika_lua.h"
- #include "dataStrs.h"
- #include "lauxlib.h"
- #include "lualib.h"
- /* if there is already a lua_State, extern pika_L to it */
- lua_State* pika_L = NULL;
- void pika_lua___init__(PikaObj* self) {
- /* not found exist lua_State, create One */
- if (NULL == pika_L) {
- pika_L = luaL_newstate(); /* create state */
- luaL_openlibs(pika_L);
- obj_setInt(self, "needfree", PIKA_TRUE);
- __platform_printf("lua luached!\r\n");
- }
- }
- void pika_lua_eval(PikaObj* self, char* cmd) {
- int res = luaL_dostring(pika_L, cmd);
- if (LUA_OK != res) {
- obj_setErrorCode(self, PIKA_RES_ERR_OPERATION_FAILED);
- obj_setSysOut(self, "Error: Lua dostring failed.\r\n");
- }
- }
- void pika_lua___exit__(PikaObj* self) {
- /* close the lua_State created */
- if (PIKA_TRUE == obj_getInt(self, "needfree")) {
- lua_close(pika_L);
- }
- }
- void pika_lua_evalLine(PikaObj* self, char* line) {
- Args buffs = {0};
- char* line_with_end = strsAppend(&buffs, line, "\n");
- pika_lua_eval(self, line_with_end);
- strsDeinit(&buffs);
- }
|