DolphinDB插件开发深度解析
DolphinDB支持动态加载外部插件,以扩展系统功能。插件用C++编写,需要编译成".so"或".dll"共享库文件。插件开发和使用的整体流程请参考DolphinDB Plugin主页
dolphindb/DolphinDBPlugin
开发插件的方法和注意事项请参考
DolphinDB插件开发教程
本文着重解析插件开发中的一些其他常见问题:
1. 创建对象
- 1.1 创建标量
- 1.2 创建非标量
2. 高效读写Vector和内存表中的数据
- 2.1 Vector
- 2.2 Table
3. 插件中创建后台线程
4. 用户权限
1. 创建对象
编写插件时,DolphinDB中的大部分数据对象都可以用Constant类型来表示(标量、向量、矩阵、表,等等),使用时调用ConstantSP进行操作,ConstantSP是一个经过封装的智能指针,会在变量的引用计数为0时自动释放内存,不需要用户手动释放。从它派生的其它常用变量类型有:VectorSP(向量)、TableSP(表)等。
1.1 创建标量
插件中创建标量可以直接使用new
语句创建头文件ScalarImp.h中声明的类型对象,可将它赋值给一个ConstantSP;也可以使用Util::createConstant
创建指定类型的标量,并用对应的set
方法赋值,这种方法比较麻烦,不推荐使用。
ConstantSP i = new Int(1); // 相当于1i
ConstantSP i1 = Util::createConstant(DT_INT);
i1->setInt(1); // 也相当于1i
ConstantSP s = new String("DolphinDB"); // 相当于"DolphinDB"
ConstantSP s1 = Util::createConstant(DT_STRING);
s1->setString("DolphinDB"); // 也相当于"DolphinDB"
ConstantSP d = new Date(2020, 11, 11); // 相当于2020.11.11
ConstantSP d1 = Util::createConstant(DT_DATE);
//由于日期类型没有对应的set方法,而date在dolphindb中存储为int,为从1970.01.01开始经过的天数,所以可以通过换算,并用setInt进行赋值
d1->setInt(18577); // 也相当于2020.11.11
ConstantSP voidConstant = new Void(); // 创建一个void类型变量,常用于表示空的函数参数
相关文章