mirror of
https://gitcode.com/JianFeeeee/LuaCangjia_api.git
synced 2026-09-20 08:58:13 +00:00
更新:添加doString方法及对应的单元测试
This commit is contained in:
@ -85,6 +85,28 @@ int run(void *selfd,const char *path,const char *arg)
|
||||
snprintf(self->result,MAX_RESULT,"%s",runner->reslt.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// @brief 执行单句lua语句
|
||||
/// @param selfd init_lua_runner返回的void指针
|
||||
/// @param target 执行语句(字符串类型)
|
||||
/// @return 成功返回0,失败返回-1,并将lua出错原因拷贝至result中
|
||||
int dostring(void *selfd,const char *target){
|
||||
lua_runner* self = (lua_runner*)selfd;
|
||||
//重定向输入到回调函数
|
||||
Lua_runner *runner = (Lua_runner*)self->lua_obj;//还原对象
|
||||
if(runner == NULL)
|
||||
{
|
||||
errno = NAPI_LUA_STATE_ERROR;
|
||||
return -1;
|
||||
}
|
||||
if(runner->dostring(target)==-1){
|
||||
snprintf(self->result,MAX_RESULT,"%s",runner->reslt.c_str());
|
||||
return -1;
|
||||
}
|
||||
snprintf(self->result,MAX_RESULT,"%s",runner->reslt.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// @brief 清理lua状态机缓存,虚拟栈,加载的包等
|
||||
/// @param self 使用init_lua_runner初始化的lua_runner结构体指针
|
||||
/// @return 0代表正常结束,-1表示异常退出
|
||||
|
||||
@ -62,6 +62,12 @@ int unload_lib(void *selfd,const char *name);
|
||||
/// @return 成功返回0,失败返回-1,并将lua出错原因拷贝至result中
|
||||
int run(void *selfd,const char *path,const char *arg);
|
||||
|
||||
/// @brief 执行单句lua语句
|
||||
/// @param selfd init_lua_runner返回的void指针
|
||||
/// @param target 执行语句(字符串类型)
|
||||
/// @return 成功返回0,失败返回-1,并将lua出错原因拷贝至result中
|
||||
int dostring(void *selfd,const char *target);
|
||||
|
||||
/// @brief 清理lua状态机缓存,不销毁状态机
|
||||
/// @param selfd init_lua_runner返回的void指针
|
||||
/// @return 成功返回0,失败返回-1
|
||||
|
||||
@ -209,6 +209,37 @@ int Lua_runner::run(const char *path,const char *arg)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int Lua_runner::dostring(const char *target)
|
||||
{
|
||||
if(target == NULL)
|
||||
{
|
||||
errno = NAPI_ERROR_FUNCS;
|
||||
return -1;
|
||||
}
|
||||
if(luaL_dostring(this->L,target) != LUA_OK)
|
||||
{
|
||||
errno = NAPI_ERROR_FUNCS;
|
||||
this->reslt = lua_tostring(this->L,-1);
|
||||
lua_pop(L,1);//错误出栈
|
||||
return -1;
|
||||
}
|
||||
if(lua_gettop(this->L) == 0) {
|
||||
errno = NAPI_SCRIPT_BAD_RET;
|
||||
this->reslt = "";
|
||||
return -1;
|
||||
}
|
||||
if(lua_isstring(this->L,-1)){
|
||||
this->reslt = lua_tostring(this->L,-1);
|
||||
lua_pop(L,1);
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
errno = NAPI_SCRIPT_BAD_RET;
|
||||
lua_pop(L,1);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
//TODO 实现函数调用 achieve func call via file
|
||||
/*
|
||||
int Lua_runner::callfunction()
|
||||
|
||||
@ -25,7 +25,8 @@ class Lua_runner//lua运行器对象
|
||||
int unload_lib(const char *name);//解除加载
|
||||
int run(const char *path = NULL,const char *arg = NULL);
|
||||
int clean();//清除状态机缓存
|
||||
int callfunction();
|
||||
//int callfunction();
|
||||
int dostring(const char *target);
|
||||
std::string reslt;
|
||||
lua_State *get_lua_State();
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user