声明文件: dsm.h
库文件: dsm.lib, dsm.dll
动态数据管理是RVB系统的基本模块,动态数据是程序运行中发生的某种类型数据的集合,这些数据一般是动态产生,一般无法在编程阶段可以确认元素的多少,相比矩阵而言,这些数据一般是离散的,在内存中一般也是不连续的。除此以外,可能还需要保证数据之间的某种逻辑关系。
目前的动态数据管理模块里面的对象主要包括: 序列(RvSequence), 聚集(RvCluster), 列表(RvList)。这些动态的数据结构可以描述图象中的一些复杂对象如图(RvGraph),轮廓(RvContour),码链(RvChain). 也可以作为一种普通的数据结构使用。结构体说明
typedef struct _rv_slice_
{ int start, end; }RvSlice;
该数据结构表示序列或聚合中按照数组的形式进行索引,start为开始的索引值, end为结束的索引值。
声明:void rvdBeginRead(RvDynamic collect, void* pReader, BOOL bReverse );
描述:开始进行动态数据管理对象的读操作。该函数对相应的读对象进行初始化。参数:1、RvDynamic collect – 动态管理对象
2、void* pReader – 动态管理对象的读对象
3、BOOL bReverse – 是否进行反向读取。仅序列支持。
返回:无
备注: 不是所有的动态数据管理对象都支持快速操作。
声明:void rvdEndRead(RvDynamic collect, void* pReader);
描述:结束进行动态数据管理对象的读操作参数:1、RvDynamic collect – 动态管理对象
2、void* pReader – 动态管理对象的读对象
返回:无
声明:void rvdBeginWrite(RvDynamic collect, void* pWriter);
描述:开始进行动态数据管理对象的写操作。该函数对相应的写对象进行初始化。
参数:1、RvDynamic collect – 动态管理对象
2、void* pReader – 动态管理对象的写对象返回:无
备注: 不是所有的动态数据管理对象都支持快速操作。
声明:void rvdEndWrite(RvDynamic collect, void* pWriter);
描述:结束进行动态数据管理对象的写操作。
参数:1、RvDynamic collect – 动态管理对象
2、void* pReader – 动态管理对象的写对象返回:无
声明:void rvdSetRecycler(RvDynamic collect, RvDestroyFunc fnDestroy , void* pUserData );
描述:设置对动态数据管理对象中元素进行销毁的函数。
参数:1、RvDynamic collect – 动态管理对象
2、RvDestroyFunc fnDestroy – 元素销毁函数指针。3、void* pUserData – 销毁函数的用户数据指针。
返回:无
声明:void rvdSetComparison(RvDynamic collect, RvCompareFunc fnCompare , void* pUserData);
描述:设置对两个同类型,同元素数据结构的动态数据管理对象中元素进行比较的函数。参数:1、RvDynamic collect – 动态管理对象
2、RvCompareFunc fnCompare – 元素比较函数指针。
3、void* pUserData – 销毁函数的用户数据指针。
返回:无
声明:void rvdSetCriterion(RvDynamic collect, RvConditionFunc fnCondition , void* pUserData);
描述:设置对两个同类型,同元素数据结构的动态数据管理对象中元素进行判别的函数。该函数会对元素中的值进行条件判定。
参数:1、RvDynamic collect – 动态管理对象
2、RvConditionFunc fnCondition – 元素判别函数指针。
3、void* pUserData – 销毁函数的用户数据指针。
返回:无
声明:RvSequence rvCreateSequence( int dataType, RvDestroyFunc fnDestroyElem );
描述:创建一个序列对象。
参数:1、int dataType – 元素数据类型
2、RvDestroyFunc fnDestroyElem – 元素销毁函数指针。
返回:无
声明:RvSequence rvCreateSequenceEx( UINT nElemSize, int flag , RvDestroyFunc fnDestroyElem );
描述:创建一个序列对象。
参数:1、UINT nElemSize – 元素占用内存大小 。(字节为单位)2、int flag – 序列标记,供用户程序使用。
3、RvDestroyFunc fnDestroyElem – 元素销毁函数指针。
返回:无
声明:void rvDestroySequence(RvSequence sequence);
描述:销毁一个序列对象。
参数:RvSequence sequence – 销毁序列对象。如果已经设置了该序列对象的元素销毁函数,那么元素数据对象本身也会被销毁。返回:无
声明:HITEM rsqAddLast( RvSequence sequence, void* pVal);
描述:将一个元素添加到序列最后位置。
参数:1、RvSequence sequence – 序列对象。
2、void* pVal – 指向元素的对象的指针。
返回:元素节点
声明: HITEM rsqAppend( RvSequence sequence, void* pVal);
描述: 将一个元素添加到序列最后位置。
参数:1、RvSequence sequence – 序列对象
2、void* pVal – 指向元素的对象的指针。
返回:元素节点
声明:HITEM rsqAddFirst( RvSequence sequence, void* pVal);
描述:将一个元素添加到序列最前位置。
参数:1、RvSequence sequence – 序列对象。
2、void* pVal – 指向元素的对象的指针。
返回:元素节点
声明:void rsqRemoveLast( RvSequence sequence, void* pVal );
描述:将序列中最后一个位置的元素删除,同时,可以输出最后元素的值。
参数:1、RvSequence sequence – 序列对象
2、void* pVal – 指向元素的对象的指针。
返回:无
声明: void rsqRemoveFirst( RvSequence sequence, void* pVal);
描述:将序列中最前一个位置的元素删除,同时,可以输出最后元素的值。参数:1、RvSequence sequence – 序列对象
2、void* pVal – 指向元素的对象的指针。
返回:无
声明:void rsqRemoveElem( RvSequence sequence, void* pVal);
描述:按照元素的值删除元素。
参数:1、RvSequence sequence – 序列对象。
2、void* pVal – 指向元素的对象的指针。
返回:无
声明:HITEM rsqRemoveItem( RvSequence sequence, HITEM hItem);
描述:按照元素的节点句柄删除元素。
参数:1、RvSequence sequence – 序列对象。
2、HITEM hItem – 元素句柄。
返回:下一个元素句柄。
声明:void* rsqGetFirst( const RvSequence sequence);
描述:获取指向第一个位置的元素数据的指针。参数:1、RvSequence sequence – 序列对象。
2、HITEM hItem – 元素句柄。
返回:指向元素数据的指针。
声明:void rsqClear(RvSequence sequence );
描述:清除序列中的所有元素。
参数:RvSequence sequence – 序列对象。
返回:无。声明:BOOL rsqIsEmpty(RvSequence sequence );
描述:判别序列是否为空。
参数:RvSequence sequence – 序列对象。
返回:TRUE或FALSE。
声明: int rsqGetCount(RvSequence sequence);
描述:获取序列中的元素数量。
参数:RvSequence sequence – 序列对象。
返回:元素数量。
描述:按照索引获取序列中的元素的数据值。
参数:1、RvSequence sequence – 序列对象。
2、int index – 元素所在位置的索引
3、void* pVal – 可以放置元素数据的变量指针
返回:无。
描述:按照索引设置序列中的元素的数据。
参数:1、RvSequence sequence – 序列对象。
2、 int index – 元素所在位置的索引
3、void* pVal – 指向放置元素数据的变量指针
返回:无。
声明: void rsqGetItemValueEx( const RvSequence sequence, HITEM item, void* pVal );
描述:按照元素句柄获取序列中的元素的数据。
参数:1、RvSequence sequence – 序列对象。2、HITEM item – 元素句柄
3、void* pVal – 可以放置元素数据的变量指针
返回:无。
rsqSetItemValueEx声明: void rsqSetItemValueEx( const RvSequence sequence, HITEM item, void* pVal );
描述:按照索引设置序列中的元素的数据。
参数:1、RvSequence sequence – 序列对象。
2、HITEM item – 元素句柄
3、void* pVal – 可以放置元素数据的变量指针
返回:无。声明:HITEM rsqSeekToBegin(const RvSequence sequence);
描述:获取序列中的第一个位置的元素句柄。
参数:RvSequence sequence – 序列对象。
返回:元素句柄。
描述:获取序列中的最后一个位置的元素句柄。
参数:RvSequence sequence – 序列对象。
返回:元素句柄。
声明:HITEM rsqGetItemAt( const RvSequence sequence, int index );
描述:按照索引获取序列中的元素句柄。
参数: 1、RvSequence sequence – 序列对象。
2、int index – 元素所在位置的索引。
返回:元素句柄。声明:HITEM rsqGetNextItem(const RvSequence sequence, HITEM item, int nCode);
描述:获取指定的元素句柄的后面或前面一个位置的元素句柄。
参数:1、RvSequence sequence – 序列对象。
2、HITEM item - 元素句柄。3、int nCode - 位置代码,只能取1 RV_SQ_NEXT; 2 RV_SQ_PREV
返回:元素句柄。
描述:将一个序列中的所有元素合并到另一个序列中。合并以后,被合并的所有元素将被删除。
参数:1、RvSequence sequence – 序列对象。
2、RvSequence income – 被合并序列对象
返回:已经合并的元素数量。 备注:新的版本将可以设置条件来进行有选择性的合并元素。声明:RvCluster rvCreateCluster(int dataType, RvDestroyFunc fnDestroyElem);
描述:创建一个聚合对象。
参数:1、int dataType – 元素数据类型
2、RvDestroyFunc fnDestroyElem - 元素销毁函数
返回:聚合对象
rvCreateClusterEx声明: RvCluster rvCreateClusterEx(UINT nElemSize, int flag , RvDestroyFunc fnDestroyElem);
描述:创建一个聚合对象。
参数:1、UINT nElemSize – 元素数据内存大小(以字节为单位)
2、int flag - 标记,供应用程序使用。
3、RvDestroyFunc fnDestroyElem - 元素销毁函数返回:聚合对象
声明:void rvDestroyCluster(RvCluster cluster);
描述:销毁一个聚合对象。
参数:RvCluster cluster – 聚合对象
返回:无
rclAppend声明:void rclAppend(RvCluster cluster, void* pVal);
描述:向聚合对象添加元素。
参数:1、RvCluster cluster – 聚合对象
2、void* pVal – 数据变量指针。
返回:无
声明:void rclAppendEx(RvCluster cluster, void* pElemArray, int nArraySize);
描述:销毁一个聚合对象。
参数:1、RvCluster cluster – 聚合对象
2、void* pElemArray – 元素数据数组的指针
3、int nArraySize – 元素数据数量
返回:无
rclRemove声明: void rclRemove(RvCluster cluster, void* pVal);
描述:将聚合里面所有数据元素的值等于输入的值的数据元素删除。
参数:1、RvCluster cluster – 聚合对象
2、void* pVal – 元素数据变量
返回:无
描述:删除聚合对象中所有元素。
参数:RvCluster cluster – 聚合对象
返回:无
声明: BOOL rclIsEmpty(RvCluster cluster);
描述:判断聚合对象是否为空,即一个元素也没有。参数:RvCluster cluster – 聚合对象
返回:TRUE 或FALSE
声明: int rclGetCount(RvCluster cluster);
描述:获取聚合对象中的元素数量。
参数:RvCluster cluster – 聚合对象
返回:元素数量声明:void* rclGetAt(RvCluster cluster, int index);
描述:按照索引,获取聚合对象中的元素数据指针。
参数:1、RvCluster cluster – 聚合对象
2、int index – 索引
返回:元素数据指针
声明:void rclSetAt(RvCluster cluster, int index, void* pVal);
描述:按照索引,设置聚合对象中元素的数据。
参数:1、RvCluster cluster – 聚合对象
2、int index – 索引
3、void* pVal – 元素数据变量指针
返回:无
描述:按照索引,将聚合对象中指定位置的元素。
参数:1、RvCluster cluster – 聚合对象
2、int index – 索引
返回:无
声明:void rclRemoveAll(RvCluster cluster);
描述:将聚合对象中所有元素删除。
参数:RvCluster cluster– 聚合对象返回:无
声明: RvCluster rclMerge(RvCluster cluster , RvCluster income );
描述:将两个聚合对象中元素合并。
参数:1、RvCluster cluster– 聚合对象
2、RvCluster income – 元素被合并的聚合对象
返回:返回聚合以后的对象,即cluster。声明:int rclRevertToArray(const RvCluster cluster, RvSlice slice, void* pElemArray, int nArraySize);
描述:将聚合对象中的元素数据转化到数组里面。
参数:1、RvCluster cluster – 聚合对象
2、RvSlice slice – 数据片
3、void* pElemArray – 保存元素数据的数组指针4、int nArraySize – 可以保存的元素数据的数组大小,即表示可以保存多少元素的数据。
返回:无
描述:设置将一个数组中的数据添加到聚合对象。如果聚合对象有元素,将清除。
参数:1、RvCluster cluster – 聚合对象
2、void* pElemArray –元素数据的数组指针
3、int nArraySize –元素数据的数组大小,即表示有多少元素。
返回:无
声明:RvList rvCreateList(RvDestroyFunc fnDestroyElem);
描述:创建一个列表对象。
参数:RvDestroyFunc fnDestroyElem
返回:列表对象
描述:销毁列表对象
参数:RvList list - 列表对象。
返回:无
声明:void* rlsGetHead(RvList list);
描述:获取列表对象的第一个位置元素的数据
参数:RvList list - 列表对象。
返回:元素数据指针声明:void* rlsGetTail(RvList list);
描述:获取列表对象的最后一个位置元素的数据
参数:RvList list - 列表对象。
返回:元素数据指针
描述:获取列表对象的当前位置元素的数据
参数:RvList list - 列表对象。
返回:元素数据指针
声明:void* rlsGetAt(RvList list, int index);
描述:按照索引,获取列表对象元素的数据
参数:1、RvList list - 列表对象。2、int index – 索引
返回:元素数据指针
声明:void rlsAddHead(RvList list, void* val );
描述:添加新元素到列表对象的第一个位置
参数:1、RvList list - 列表对象。
2、void* val – 元素数据变量指针返回:无
声明:void rlsAddTail(RvList list, void* val);
描述:添加新元素到列表对象的最后的位置
参数:1、RvList list - 列表对象。
2、void* val – 元素数据变量指针
返回:无声明:void rlsAdd(RvList list, void* val);
描述:添加新元素到列表对象的最后的位置
参数:1、RvList list - 列表对象。
2、void* val – 元素数据变量指针
返回:无
rlsRemoveAll声明:void rlsRemoveAll(RvList list);
描述:将列表对象中的所有元素删除
参数:RvList list - 列表对象。
返回:无
声明:void* rlsRemoveHead(RvList list);
描述:将列表对象中的第一个位置的元素删除参数:RvList list - 列表对象。
返回:被删除元素的数据指针。
声明:void* rlsRemoveTail(RvList list);
描述:将列表对象中的第后位置的元素删除
参数:RvList list - 列表对象。
返回:被删除元素的数据指针。
描述:将列表对象中的当前位置的元素删除
参数:RvList list - 列表对象。
返回:被删除元素的数据指针。
声明:void rlsRemove(RvList list, void* pVal);
描述:将列表对象中的元素值等于指定的值的元素删除
参数:1、RvList list - 列表对象。2、void* pVal - 元素数据指针
返回:无
声明:void* rlsRemoveAt(RvList list, int index);
描述:按照索引将列表对象中的元素删除
参数:1、RvList list - 列表对象。
2、int index – 元素索引返回:被删除元素的数据指针。
声明:BOOL rlsGoHead(RvList list);
描述:将列表对象中的当前元素节点移动到列表第一个元素
参数:RvList list - 列表对象。
返回:是否成功。当列表里面的元素为空的时候,将会失败。
rlsGoTail声明:BOOL rlsGoTail(RvList list);
描述:将列表对象中的当前元素节点移动到列表最后元素
参数:RvList list - 列表对象。
返回:是否成功。当列表里面的元素为空的时候,将会失败。
声明:BOOL rlsStep(RvList list, BOOL bBackward=FALSE);
描述:将列表对象中的当前元素节点移动到下一个元素参数:1、RvList list - 列表对象。
2、BOOL bBackward – 是否反方向移动
返回:是否成功。当列表里面的元素为空的时候,将会失败。
声明:int rlsGetCount(RvList list);
描述:获取列表对象中的元素的数量。
参数:RvList list - 列表对象。
返回:元素数量。
rlsIsEmpty声明:BOOL rlsIsEmpty(RvList list);
描述:判断列表对象中的是否存在元素。
参数:RvList list - 列表对象。
返回:TRUE 或者FALSE。
声明:BOOL rlsIsBegin(RvList list);
描述:断列表对象中的当前元素是否为第一个位置指针。参数:RvList list - 列表对象。
返回:TRUE 或者FALSE。
声明:BOOL rlsIsEnd(RvList list);
描述:断列表对象中的当前元素是否为最后位置指针。
参数:RvList list - 列表对象。
返回:TRUE 或者FALSE。
QQ技术交流群:
微信技术交流群:
Marklab工作室
研发中心: 广东省东莞市大岭山镇元岭小区翠云街1巷16号
商务中心: 广东省东莞市松湖智谷B6栋225b
Marklab工作室 版权所有 粤ICP备13082990号-2 友情链接 hao123 绿盟 搜狗 站长之家 太平洋下载 天极下载 淘宝店 软云动力
赞助和协作单位 广东省科学院自动化研究所 深圳市东百胜技术有限公司