Files
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

61 lines
1.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _ROBOT_SCRIPT_H_
#define _ROBOT_SCRIPT_H_
class BaseScript :
public BaseLua
{
public:
typedef BaseLua Inherited;
typedef misc::RefObject<LuaPreProcessor::LineRangeList> SourceLineList;
//脚本初始化函数名称
static const char* ScriptInitFnName;
//脚本析构函数名称
static const char* ScriptUninitFnName;
//向脚本中保存此脚本对象指针的名称
static const char* ScriptInstanceKeyName;
public:
BaseScript();
~BaseScript();
/* 调用脚本函数如果脚本调用成功则函数返回true否则返回false。
* 当调用脚本失败时函数返回false并在返回值列表中存储1个错误描述内容的字符串值
* args 脚本参数列表
* results 脚本返回值列表
* nResultCount 期望的返回值数量LUA_MULTRET表示不限制
*/
virtual bool Call(const char* fn, ScriptValueList *args, ScriptValueList *results, int ret_count = LUA_MULTRET);
bool LoadScript(const char* fn);
void SetVspDef(CVSPDefinition* vsp);
/*
* Comments: 覆盖父类设置脚本内容的函数,增加对代码原始行记录器的保存
* Param const char* sText:
* Param const CSourceLineList * pLRList:
* @Return bool:
*/
bool setScript(const char* sText, SourceLineList* pLRList);
protected:
//脚本调用错误处理分派函数
static int ScriptCallErrorDispatcher(lua_State *L);
virtual void ScriptCallError(const char* sFnName);
virtual int HandleCallError();
virtual lua_State* createLuaVM();
virtual bool openBaseLibs();
virtual bool registLocalLibs();
virtual bool callInit();
virtual bool onCallInit();
virtual bool callFinal();
virtual bool onCallFinal();
virtual void showError(const char* err);
virtual void onCallEnd(bool ret);
protected:
SourceLineList src_; //原始代码行记录表,用于获取更精确的函数代码位置
CVSPDefinition* vsp_;
};
#endif