编程实战:类C语法的编译型脚本解释器(三)

系列入口:

编程实战:类C语法的编译型脚本解释器(系列)-CSDN博客

        本文讲解插件(自定义函数)的接口。

一、插件接口

	//插件
	struct CPlugin
	{
		string plugin_name;
		Variable::types plugin_return_type;
		CPlugin() :plugin_name(""), plugin_return_type(Variable::NULLVARIABLE) {}
		CPlugin(char const* _name, Variable::types _type) :plugin_name(_name), plugin_return_type(_type) {}
		virtual string& help(string& ret)
		{
			ret = plugin_name + " : 返回值 " + Variable::TypeStr(plugin_return_type) + "\r\n";
			return ret;
		}
		virtual bool CheckPlugin(CZBVector& params, void*& pc, string& msg) = 0;
		virtual bool ExecFunction(CZBVector& params, void* const& pc, Variable& ret, string& msg, void* pe) = 0;
	};

二、插件管理器

	//插件表
	class CPluginMap
	{
	public:
		struct HANDLE
		{
			string plugin_name;

			bool isNULL()const { return 0 == plugin_name.size(); }
		};
	private:
		static map& GetPluginMap();
	public:
		template
		static void addplugin(map& mapPlugins);
		static bool AddPlugin(char const* name, Variable::types type, CPlugin* p);
		static CPlugin* GetPlugin(string const& fun_name);
		static CPlugin* GetPlugin(HANDLE const& h);
		static string& PluginHelp(string& ret);
	};

(我还没写完)

(这里是结束)

你可能感兴趣的:(C语法的预编译脚本解释器,c语言,开发语言)