当前位置: 首页 > article >正文

编程实战:类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<Variable >& params, void*& pc, string& msg) = 0;
		virtual bool ExecFunction(CZBVector<Variable >& 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<string, CPlugin*>& GetPluginMap();
	public:
		template<typename T>
		static void addplugin(map<string, CPlugin*>& 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);
	};

(我还没写完)

(这里是结束)


http://www.kler.cn/a/154646.html

相关文章:

  • Docker环境搭建Cloudreve网盘服务(附shell脚本一键搭建)
  • Tensorflow基本概念
  • Fish Agent V0.13B:Fish Audio的语音处理新突破,AI语音助手的未来已来!
  • 插入排序——希尔排序
  • Day 65 || SPFA、判断负权回路、bellman_ford之单源有限最短路
  • vue3:computed
  • 2312skia,15vulkan及技巧
  • Go语言实现深度学习的正向传播和反向传播
  • 深入理解Servlet(上)
  • 深度学习记录--计算图(前向后向传播)
  • 最新AI智能写作回答系统源码 附完整的搭建教程
  • java学习part29线程通信
  • 锐捷EWEB网管系统 RCE漏洞复现
  • oracle sql相关语法
  • Docker的常用基本命令(基础命令)
  • 在Windows中如何知道当前cmd的python解释器来自哪个位置
  • 在 ArcGIS 软件中添加左斜宋体(东体)的方法与步骤
  • 管理类联考-性质
  • 无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销小目标检测识别系统
  • C++作业2
  • 编写高质量Python (第26条) 用 functools.wraps 定义函数装饰器
  • AIGC: 关于ChatGPT中token和tiktoken工具
  • uniapp 微信小程序连接蓝牙卡死
  • 前端打包添加前缀
  • wordpress路径怎么优化?wordpress伪静态怎么做?
  • Group normalization是什么