61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #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
 | ||
| 
 |