DolphinDB插件开发深度解析

2022-03-28 00:00:00 创建 数据 函数 线程 类型

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类型变量,常用于表示空的函数参数

相关文章