====== XH5IO ====== **//Inherited from//** NULL **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XH5IO是一个封装了HDF5库函数的工具类,用来将数据转存为HDF5格式或者从HDF5格式中读取数据。HDF5(Hierarchical Data Format) 格式是一种常见的跨平台数据储存文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,它按照Group树组织数据,每个Group节点可以包含若干属性和若干数据集(Dataset),Group树按照目录树的形式管理,因此可以很高效的随机访问数据。\\ HDF5处理数据时需要指定数据的保存文件中的类型(fType)和读取到内存中的类型(mType),为了方便的处理种类繁多形式各异的数据结构,XT引入了面向HDF5的数据成员定义([[class::kernel::hmember|HMember]]数组,按照统一的宏定义即可构建特定数据结构的数据成员定义,根据数据成员定义XH5IO即可获取在HDF5中对应的数据类型,这一设计可以显著的减少开发人员为支持HDF5所要完成的编码工作量。 **//Members//** * H5File * [[xh5io#m_pfile|m_pFile]] * vector**> * [[xh5io#m_ptempdtypes|m_pTempDTypes]] * XPath [[xh5io#m_strpath|m_strPath]] * TypeID [[xh5io#m_imode|m_iMode]] * DBVersion [[xh5io#m_version|m_Version]] * DBVersion [[xh5io#m_targetversion|m_TargetVersion]] **//Public interface//** * [[xh5io#xh5io1|XH5IO]]() * [[xh5io#~xh5io|~XH5IO]]() * bool [[xh5io#open|open]](const char * fname, bool bWrite, bool bRead) * void [[xh5io#clear|clear]]() * void [[xh5io#cleartemptypes|clearTempTypes]]() * void [[xh5io#addtemptype|addTempType]](DataType ** t) * void [[xh5io#addgroup|addGroup]](const char * gName, bool bChunk = false) * H5Object * [[xh5io#opengroup|openGroup]](const char * gname, bool bCreate = false) * H5Object * [[xh5io#openidgroup|openIDGroup]](const char * gname, ulong id, bool bCreate = false) * void [[xh5io#getsubobjects|getSubObjects]](H5Object * parent, vector * subNames) * void [[xh5io#getsubgroups|getSubGroups]](H5Object * parent, vector * subNames) * void [[xh5io#getsubdatasets|getSubDatasets]](H5Object * parent, vector * subNames) * H5Object * [[xh5io#opendataset|openDataset]](H5Object * grp, const char * dsname) * H5Object * [[xh5io#opensubgroup|openSubGroup]](H5Object * parent, const char * gname) * H5Object * [[xh5io#openidgroup|openIDGroup]](H5Object * parent, const char * gname, ulong * id, XName * str) * Attribute * [[xh5io#openattribute|openAttribute]](H5Object * parent, const char * dsname) * H5Object * [[xh5io#creategroup|createGroup]](H5Object * parent, const char * gname) * H5Object * [[xh5io#createidgroup|createIDGroup]](H5Object * parent, const char * gname, ulong id) * void [[xh5io#deletegroup|deleteGroup]](H5Object * parent, const char * gname) * Attribute * [[xh5io#createattribute|createAttribute]](H5Object * obj, const char * aname, DataType * dtype) * H5Object * [[xh5io#createdataset|createDataset]](H5Object * grp, const char * dsname, DataType * dtype, size_t dim0, size_t dim1 = 0, int unitSize = 1, bool bChunk = false) * H5Object * [[xh5io#createiddataset|createIDDataset]](H5Object * grp, const char * dsname, int id, DataType * dtype, int unitSize = 1, bool bChunk = false) * H5Object * [[xh5io#writearraydataset|writeArrayDataset]](H5Object * grp, const char * dsname, const XArray * arr) * H5Object * [[xh5io#writearraydataset|writeArrayDataset]](H5Object * grp, const char * dsname, const XArray * arr) * H5Object * [[xh5io#writearraydataset|writeArrayDataset]](H5Object * grp, const char * dsname, const XArray * arr) * H5Object * [[xh5io#writearraydataset|writeArrayDataset]](H5Object * grp, const char * dsname, const XArray * arr) * H5Object * [[xh5io#writearraydataset|writeArrayDataset]](H5Object * grp, const char * dsname, size_t size, const float * arr) * H5Object * [[xh5io#writearraydataset|writeArrayDataset]](H5Object * grp, const char * dsname, size_t size, const int * arr) * H5Object * [[xh5io#readarraydataset|readArrayDataset]](H5Object * grp, const char * dsname, XArray * arr) * H5Object * [[xh5io#readarraydataset|readArrayDataset]](H5Object * grp, const char * dsname, XArray * arr) * H5Object * [[xh5io#readarraydataset|readArrayDataset]](H5Object * grp, const char * dsname, XArray * arr) * H5Object * [[xh5io#readarraydataset|readArrayDataset]](H5Object * grp, const char * dsname, XArray * arr) * H5Object * [[xh5io#writefielddataset|writeFieldDataset]](H5Object * grp, const char * dsname, const XDataField * field) * H5Object * [[xh5io#readfielddataset|readFieldDataset]](H5Object * grp, const char * dsname, XDataField * field) * void [[xh5io#deletedataset|deleteDataset]](H5Object * grp, const char * dsname) * size_t [[xh5io#getdatacount|getDataCount]](H5Object * dset) * size_t [[xh5io#getdatatypesize|getDataTypeSize]](DataType * dtype) * int [[xh5io#getdatatypeoffset|getDataTypeOffset]](DataType * dtype, const char * name) * int [[xh5io#getdatamembercount|getDataMemberCount]](DataType * dtype) * int [[xh5io#getdataarraycount|getDataArrayCount]](DataType * dtype) * bool [[xh5io#checkdatatype|checkDataType]](H5Object * dset, vector * memberStrings, int structSize) * bool [[xh5io#readarray|readArray]](H5Object * dset, float * buf) * bool [[xh5io#readarray|readArray]](H5Object * dset, int * buf) * bool [[xh5io#readarray|readArray]](H5Object * dset, ulong * buf) * bool [[xh5io#readarray|readArray]](H5Object * dset, double * buf) * bool [[xh5io#readdata|readData]](H5Object * dset, LabelVarSection * buf, bool bGroupOnSection = false) * bool [[xh5io#readdata|readData]](H5Object * grp, LabelVarGroup * buf, bool bGroupOnSection = false) * bool [[xh5io#readdata|readData]](H5Object * dset, const DataType * dtype, void * buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, const DataType * dtype, void * buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, DBVersion & buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, ulong & buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, int & buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, size_t & buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, long long & buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, double & buf) * bool [[xh5io#readattribute|readAttribute]](Attribute * dset, const DataType * dtype, void * buf) * bool [[xh5io#readattribute|readAttribute]](H5Object * dset, const char * aname, char * buf) * bool [[xh5io#readnameattribute|readNameAttribute]](H5Object * dset, const char * aname, char * buf) * bool [[xh5io#readtypeattribute|readTypeAttribute]](H5Object * dset, const char * aname, char * buf) * bool [[xh5io#readpathattribute|readPathAttribute]](H5Object * dset, const char * aname, char * buf) * void [[xh5io#writearray|writeArray]](H5Object * dset, const float * buf) * void [[xh5io#writearray|writeArray]](H5Object * dset, const int * buf) * void [[xh5io#writearray|writeArray]](H5Object * dset, const ulong * buf) * void [[xh5io#writearray|writeArray]](H5Object * dset, const double * buf) * void [[xh5io#writedata|writeData]](H5Object * dset, const LabelVarSection * buf, bool bGroupOnSection = false) * void [[xh5io#writedata|writeData]](H5Object * grp, const LabelVarGroup * buf, bool bGroupOnSection = false) * void [[xh5io#writedata|writeData]](H5Object * dset, const DataType * dtype, const void * buf) * void [[xh5io#writeextenddata|writeExtendData]](H5Object * dset, const DataType * dtype, size_t size, const void * buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const DataType * dtype, const void * buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const ulong & buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const int & buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const unsigned long long & buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const long long & buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const double & buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const char * buf) * void [[xh5io#writeattribute|writeAttribute]](Attribute * dset, const DataType * dtype, const void * buf) * void [[xh5io#writenameattribute|writeNameAttribute]](H5Object * dset, const char * aname, const char * buf) * void [[xh5io#writetypeattribute|writeTypeAttribute]](H5Object * dset, const char * aname, const char * buf) * void [[xh5io#writepathattribute|writePathAttribute]](H5Object * dset, const char * aname, const char * buf) * void [[xh5io#writeattribute|writeAttribute]](H5Object * dset, const char * aname, const DBVersion & buf) * DataType * [[xh5io#addstructtype|addStructType]](size_t tsize, vector * memStrs = 0, bool bFileFormat = false) * void [[xh5io#releasetype|releaseType]](DataType * dtype) * DataType * [[xh5io#getdatasettype|getDatasetType]](H5Object * dset) * DataType * [[xh5io#getstructmemberdatatype|getStructMemberDataType]](DataType * type, const char * name) * void [[xh5io#getstructmembervalue|getStructMemberValue]](H5Object * dset, vector * memberStrings, char * outBuf) * void [[xh5io#closegroup|closeGroup]](H5Object * grp) * void [[xh5io#closedataset|closeDataset]](H5Object * dset) * void [[xh5io#closeattribute|closeAttribute]](Attribute * atb) * void [[xh5io#close|close]]() * bool [[xh5io#test|test]]() * Attribute * [[xh5io#createstructattribute|createStructAttribute]](H5Object * grp, const char * dsname) * void [[xh5io#writestructattribute|writeStructAttribute]](Attribute * atb, const T * data) * void [[xh5io#readstructattribute|readStructAttribute]](Attribute * dset, T * data) * H5Object * [[xh5io#createstructdataset|createStructDataset]](H5Object * grp, const char * dsname, int count = 1) * void [[xh5io#writestruct|writeStruct]](H5Object * dset, const T * data, bool bAutoClose) * int [[xh5io#writestructarray|writeStructArray]](H5Object * dset, const XArray * darr, bool bAutoClose = false) * void [[xh5io#readstruct|readStruct]](H5Object * dset, T * data, bool bAutoClose = false) * int [[xh5io#readstructarray|readStructArray]](H5Object * dset, XArray * darr, bool bAutoClose = false) * int [[xh5io#readstructarray|readStructArray]](H5Object * dset, vector * darr, bool bAutoClose = false) * void [[xh5io#registeritemdatatype|registerItemDataType]](TypeID itemType, DataType * dataType) * void [[xh5io#readstructmember|readStructMember]](char * buf, DataType * type, vector * members, const char * name, char * vbuf, int size) * void [[xh5io#readstructmember|readStructMember]](char * buf, DataType * type, vector * members, const char * name, T * v) * const DBVersion & [[xh5io#getversion|getVersion]]() ---- {{anchor:m_pfile}} **H5File * m_pFile** HDF5文件句柄 {{anchor:m_ptempdtypes}} **vector**> * m_pTempDTypes** 临时对象类型指针数组,用于临时存放各种数据结构对应的mType和fType,在文件处理完成之后统一关闭。 {{anchor:m_strpath}} **XPath m_strPath** 待处理的文件路径 {{anchor:m_imode}} **TypeID m_iMode** HDF5文件的打开模式 {{anchor:m_version}} **DBVersion m_Version** 文件的版本号 ---- {{anchor:xh5io1}} **XH5IO()** *function: 构造函数 *parameters: NULL *return value: 无 {{anchor:~xh5io}} **~XH5IO()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:open}} **bool open(const char * fname, bool bWrite, bool bRead)** *function: 打开HDF5文件 *parameters: - [i]const char * fname: 文件路径 - [i] bool bWrite: 可写为true,只读为false - [i] bool bRead: 可读为true,只写为false *return value: 打开成功返回true,否则返回false {{anchor:clear}} **void clear()** *function: 通过删除文件清空文件内容 *parameters: NULL *return value: 无 {{anchor:cleartemptypes}} **void clearTempTypes()** *function: 清空临时对象类型 *parameters: NULL *return value: 无 {{anchor:addtemptype}} **void addTempType(DataType ** t)** *function: 添加临时的数据类型对象指针 *parameters: - [i]DataType ** t: 临时的数据类型对象指针 *return value: 无 {{anchor:addgroup}} **void addGroup(const char * gName, bool bChunk = false)** *function: 添加Group节点 *parameters: - [i]const char * gName: 节点名称 - [i] bool bChunk = false: 是否分块设置 *return value: 无 {{anchor:opengroup}} **H5Object * openGroup(const char * gname, bool bCreate = false)** *function: 打开Group节点,成功打开的对象需要调用closeGroup关闭 *parameters: - [i]const char * gname: 节点名称 - [i] bool bCreate = false: 如节点不存在,自动创建节点为true,否则为false,默认不创建 *return value: 节点对象指针 {{anchor:openidgroup}} **H5Object * openIDGroup(const char * gname, ulong id, bool bCreate = false)** *function: 打开包含ID信息的Group节点,Group节点名格式为ID[NAME],其中ID为数字,NAME为节点名称。成功打开的对象需要调用closeGroup关闭 *parameters: - [i]const char * gname: 节点名称 - [i] ulong id: 数字ID - [i] bool bCreate = false: 如节点不存在,自动创建节点为true,否则为false,默认不创建 *return value: 节点对象指针 {{anchor:getsubobjects}} **void getSubObjects(H5Object * parent, vector * subNames)** *function: 获取H5对象的子对象名称数组(包含Group和Dataset) *parameters: - [i]H5Object * parent: H5对象指针 - [i] vector * subNames: 子对象名称数组 *return value: 无 {{anchor:getsubgroups}} **void getSubGroups(H5Object * parent, vector * subNames)** *function: 获取H5对象的子Group名称数组 *parameters: - [i]H5Object * parent: H5对象指针 - [i] vector * subNames: 子Group名称数组 *return value: 无 {{anchor:getsubdatasets}} **void getSubDatasets(H5Object * parent, vector * subNames)** *function: 获取H5对象的子Dataset名称数组 *parameters: - [i]H5Object * parent: H5对象指针 - [i] vector * subNames: 子Dataset名称数组 *return value: 无 {{anchor:opendataset}} **H5Object * openDataset(H5Object * grp, const char * dsname)** *function: 打开数据集节点,成功打开的数据集对象需要调用closeDataset关闭 *parameters: - [i]H5Object * grp: 数据集所在的Group节点对象指针 - [i] const char * dsname: 数据集名称 *return value: 数据集对象指针 {{anchor:opensubgroup}} **H5Object * openSubGroup(H5Object * parent, const char * gname)** *function: 打开子group节点,成功打开的对象需要调用closeGroup关闭 *parameters: - [i]H5Object * parent: 父group节点 - [i] const char * gname: 子group名字 *return value: 子Group对象指针 {{anchor:openidgroup}} **H5Object * openIDGroup(H5Object * parent, const char * gname, ulong * id, XName * str)** *function: 打开parent中包含ID信息的子Group节点,Group节点名格式为ID[NAME],其中ID为数字,NAME为节点名称。成功打开的对象需要调用closeGroup关闭 *parameters: - [i]H5Object * parent: 父group对象指针 - [i] const char * gname: 子group名称 - [o] ulong * id: 用来保存数字ID - [o] XName * str: 用来保存NAME字符串 *return value: 子Group对象指针 {{anchor:openattribute}} **Attribute * openAttribute(H5Object * parent, const char * dsname)** *function: 打开parent中的属性,成功打开的属性需要调用closeAttribute关闭 *parameters: - [i]H5Object * parent: 父对象(Group对象或者Dataset对象) - [i] const char * dsname: 属性名 *return value: 属性对象指针 {{anchor:creategroup}} **H5Object * createGroup(H5Object * parent, const char * gname)** *function: 在parent对象中创建名称为gname的子Group,成功创建的Group对象需要调用closeGroup关闭 *parameters: - [i]H5Object * parent: 父Group对象指针 - [i] const char * gname: 子Group名称 *return value: 子Group对象指针 {{anchor:createidgroup}} **H5Object * createIDGroup(H5Object * parent, const char * gname, ulong id)** *function: 在parent中创建包含ID信息的子Group节点,Group节点名格式为ID[NAME],其中ID为数字,NAME为节点名称。成功打开的对象需要调用closeGroup关闭 *parameters: - [i]H5Object * parent: 父Group节点对象指针 - [i] const char * gname: 指定NAME字符串 - [i] ulong id: 指定ID *return value: 子group对象指针 {{anchor:deletegroup}} **void deleteGroup(H5Object * parent, const char * gname)** *function: 在parent中删除group *parameters: - [i]H5Object * parent: 父Group对象指针 - [i] const char * gname: 删除的Group对象名字 *return value: 无 {{anchor:createattribute}} **Attribute * createAttribute(H5Object * obj, const char * aname, DataType * dtype)** *function: 给obj对象创建指定数据类型的属性,创建成功的属性对象需要调用closeAttribute关闭。 *parameters: - [i]H5Object * obj: HDF5对象(Group或者Dataset对象) - [i] const char * aname: 属性名字 - [i] DataType * dtype: 属性的数据类型 *return value: 属性对象指针 {{anchor:createdataset}} **H5Object * createDataset(H5Object * grp, const char * dsname, DataType * dtype, size_t dim0, size_t dim1 = 0, int unitSize = 1, bool bChunk = false)** *function: 在grp对象中创建一个数据集对象,创建成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group对象指针 - [i] const char * dsname: 数据集名字 - [i] DataType * dtype: 数据集的数据类型 - [i] size_t dim0: 数组的一维长度(非零整数) - [i] size_t dim1 = 0: 数组的二维长度(如数据集只处理一维,则该值须为0) - [i] int unitSize = 1: 数据块的大小,当bChunk为true时有效 - [i] bool bChunk = false: 是否分块存储 *return value: 数据集对象指针 {{anchor:createiddataset}} **H5Object * createIDDataset(H5Object * grp, const char * dsname, int id, DataType * dtype)** *function: 在grp对象中创建一个数据集对象,数据集名字格式为ID[NAME],其中ID为数字,NAME为数据集名称,创建成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group对象指针 - [i] const char * dsname: 指定NAME数据集名 - [i] int id: 指定ID - [i] DataType * dtype: 数据集的数据类型 *return value: 数据集对象指针 {{anchor:writearraydataset}} **H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray * arr)** *function: 将float数组以数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] const XArray * arr: 写入的float数组 *return value: 数据集对象指针 {{anchor:writearraydataset}} **H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray * arr)** *function: 将int数组以数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] const XArray * arr: 写入的int数组 *return value: 数据集对象指针 {{anchor:writearraydataset}} **H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray * arr)** *function: 将float数组以数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] const XArray * arr: 写入的ulong数组 *return value: 数据集对象指针 {{anchor:writearraydataset}} **H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray * arr)** *function: 将float数组以数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] const XArray * arr: 写入的double数组 *return value: 数据集对象指针 {{anchor:writearraydataset}} **H5Object * writeArrayDataset(H5Object * grp, const char * dsname, size_t size, const float * arr)** *function: 将float数组以数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] size_t size: float数组的长度 - [i] const float * arr: 写入的float数组 *return value: 数据集对象指针 {{anchor:writearraydataset}} **H5Object * writeArrayDataset(H5Object * grp, const char * dsname, size_t size, const int * arr)** *function: 将float数组以数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] size_t size: int数组的长度 - [i] const int * arr: 写入的int数组 *return value: 数据集对象指针 {{anchor:readarraydataset}} **H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray * arr)** *function: 从grp节点下的名字为dsname的数据集中读取数据到float数组中,读入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] XArray * arr: 数据读入到该数组对象中 *return value: 数据集对象指针 {{anchor:readarraydataset}} **H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray * arr)** *function: 从grp节点下的名字为dsname的数据集中读取数据到float数组中,读入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] XArray * arr: 数据读入到该数组对象中 *return value: 数据集对象指针 {{anchor:readarraydataset}} **H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray * arr)** *function: 从grp节点下的名字为dsname的数据集中读取数据到float数组中,读入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] XArray * arr: 数据读入到该数组对象中 *return value: 数据集对象指针 {{anchor:readarraydataset}} **H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray * arr)** *function: 从grp节点下的名字为dsname的数据集中读取数据到float数组中,读入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] XArray * arr: 数据读入到该数组对象中 *return value: 数据集对象指针 {{anchor:writefielddataset}} **H5Object * writeFieldDataset(H5Object * grp, const char * dsname, const XDataField * field)** *function: 将数据场以二维数据集的形式写入到grp节点中,写入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] const XDataField * field: 数据场对象 *return value: 数据集对象指针 {{anchor:readfielddataset}} **H5Object * readFieldDataset(H5Object * grp, const char * dsname, XDataField * field)** *function: 从grp节点下的名字为dsname的数据集中读取数据到数据场对象中,读入成功的数据集对象需要调用closeDataset关闭。 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 - [i] XDataField * field: 数据场对象 *return value: 数据集对象指针 {{anchor:deletedataset}} **void deleteDataset(H5Object * grp, const char * dsname)** *function: 从grp节点中删除数据集 *parameters: - [i]H5Object * grp: Group节点对象指针 - [i] const char * dsname: 数据集名字 *return value: 无 {{anchor:getdatacount}} **size_t getDataCount(H5Object * dset)** *function: 获取数据集中的数据个数 *parameters: - [i]H5Object * dset: 数据集对象指针 *return value: 数据个数 {{anchor:getdatatypesize}} **size_t getDataTypeSize(DataType * dtype)** *function: 获取数据类型所占空间大小 *parameters: - [i]DataType * dtype: HDF5数据类型 *return value: 数据类型所占空间大小 {{anchor:getdatatypeoffset}} **int getDataTypeOffset(DataType * dtype, const char * name)** *function: 获取复合数据某个成员变量的位置偏移量 *parameters: - [i]DataType * dtype: HDF5数据类型 - [i] const char * name: 成员变量名字 *return value: 成员变量的位置偏移量 {{anchor:getdatamembercount}} **int getDataMemberCount(DataType * dtype)** *function: 获取复合数据类型的成员个数 *parameters: - [i]DataType * dtype: 复合数据类型 *return value: 复合数据类型的成员个数 {{anchor:getdataarraycount}} **int getDataArrayCount(DataType * dtype)** *function: 获取数组类型数据的个数 *parameters: - [i]DataType * dtype: 数组类型 *return value: 数组类型数据的个数 {{anchor:checkdatatype}} **bool checkDataType(H5Object * dset, vector * memberStrings, int structSize)** *function: 校验数据集是否匹配数据成员定义 *parameters: - [i]H5Object * dset: 数据集对象 - [i] vector * memberStrings: 数据成员定义数组 - [i] int structSize: 结构体大小 *return value: 如匹配返回true,否则返回false {{anchor:readarray}} **bool readArray(H5Object * dset, float * buf)** *function: 从数据集中读取float数据到预先分配好空间的数组buf中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] float * buf: float数组 *return value: 成功读取返回true,否则返回false {{anchor:readarray}} **bool readArray(H5Object * dset, int * buf)** *function: 从数据集中读取int数据到预先分配好空间的数组buf中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] int * buf: int数组 *return value: 成功读取返回true,否则返回false {{anchor:readarray}} **bool readArray(H5Object * dset, ulong * buf)** *function: 从数据集中读取ulong数据到预先分配好空间的数组buf中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] ulong * buf: ulong数组 *return value: 成功读取返回true,否则返回false {{anchor:readarray}} **bool readArray(H5Object * dset, double * buf)** *function: 从数据集中读取double数据到预先分配好空间的数组buf中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] double * buf: double数组 *return value: 成功读取返回true,否则返回false {{anchor:readdata}} **bool readData(H5Object * obj, LabelVarSection * buf, bool bGroupOnSection = false)** *function: 从对象obj中读取属性到带标签的变量块中,obj对象可能为Group(bGroupOnSection为true),也可能为Dataset(bGroupOnSection为false) *parameters: - [i]H5Object * obj: H5对象 - [i] LabelVarSection * buf: 带标签的变量块 - [i] bool bGroupOnSection = false: 为true时obj对象为Group对象,否则为Dataset对象 *return value: 成功读取返回true,否则返回false {{anchor:readdata}} **bool readData(H5Object * grp, LabelVarGroup * buf, bool bGroupOnSection = false)** *function: 从对象obj中读取属性到带标签的变量组中,当bGroupOnSection为true时不同子Group读入到不同的LabelVarSection 中,否则按照obj所有的数据集Dataset读入到不同的LabelVarSection中 *parameters: - [i]H5Object * grp: Group数据对象 - [i] LabelVarGroup * buf: 带标签的变量组(下面包含若干带标签的变量块) - [i] bool bGroupOnSection = false: 当bGroupOnSection为true时不同子Group读入到不同的LabelVarSection 中,否则按照obj所有的数据集Dataset读入到不同的LabelVarSection中 *return value: 成功读取返回true,否则返回false {{anchor:readdata}} **bool readData(H5Object * dset, const DataType * dtype, void * buf)** *function: 从数据集中读取数据到预先分配好内存的内存空间中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const DataType * dtype: 数据集的数据类型 - [i] void * buf: 内存空间 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, const DataType * dtype, void * buf)** *function: 从数据集对象中读取属性值到预先分配好的内存空间中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const DataType * dtype: 属性的内存数据类型 - [i] void * buf: 内存空间 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, DBVersion & buf)** *function: 从数据集对象中读取版本属性值 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [o] DBVersion & buf: 版本数据对象 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, ulong & buf)** *function: 从数据集对象中读取无符号整型值 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [o] ulong & buf: ulong变量的引用 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, int & buf)** *function: 从数据集对象中读取整型值 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [o] int & buf: int变量的引用 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, size_t & buf)** *function: 从数据集对象中读取size_t值 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [o] size_t & buf: size_t变量的引用 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, long long & buf)** *function: 从数据集对象中读取long long值 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [o] long long & buf: long long变量的引用 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, double & buf)** *function: 从数据集对象中读取double值 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [o] double & buf: double变量的引用 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(Attribute * dset, const DataType * dtype, void * buf)** *function: 从属性对象中读取数据到预先分配好的内存空间中 *parameters: - [i]Attribute * dset: 属性对象 - [i] const DataType * dtype: 属性对象的内存数据类型 - [o] void * buf: 分配好的内存空间 *return value: 成功读取返回true,否则返回false {{anchor:readattribute}} **bool readAttribute(H5Object * dset, const char * aname, char * buf)** *function: 从数据集对象中读取字符串 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 字符串属性名 - [o] char * buf: 预先分配好的字符串内存空间 *return value: 成功读取返回true,否则返回false {{anchor:readnameattribute}} **bool readNameAttribute(H5Object * dset, const char * aname, char * buf)** *function: 从数据集对象中读取字符串到XName所指向的空间 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 字符串属性名 - [o] char * buf: XName对象所指向的字符串空间(64个字符大小) *return value: 成功读取返回true,否则返回false {{anchor:readtypeattribute}} **bool readTypeAttribute(H5Object * dset, const char * aname, char * buf)** *function: 从数据集对象中读取字符串到XType变量所指向的空间 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 字符串属性名 - [o] char * buf: XType对象所指向的字符串空间(16个字符大小) *return value:成功读取返回true,否则返回false {{anchor:readpathattribute}} **bool readPathAttribute(H5Object * dset, const char * aname, char * buf)** *function: 从数据集对象中读取字符串到XPath变量所指向的空间 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 字符串属性名 - [o] char * buf: XPath对象所指向的字符串空间(256个字符大小) *return value: 成功读取返回true,否则返回false {{anchor:writearray}} **void writeArray(H5Object * dset, const float * buf)** *function: 将float数组写入到数据集对象中。 *parameters: - [i]H5Object * dset: 数据集对象指针 - [o] const float * buf: 写入的float数组 *return value: 无 {{anchor:writearray}} **void writeArray(H5Object * dset, const int * buf)** *function: 将float数组写入到数据集对象中。 *parameters: - [i]H5Object * dset: 数据集对象指针 - [o] const int * buf: 写入的int数组 *return value: 无 {{anchor:writearray}} **void writeArray(H5Object * dset, const ulong * buf)** *function: 将float数组写入到数据集对象中。 *parameters: - [i]H5Object * dset: 数据集对象指针 - [o] const ulong * buf: 写入的ulong数组 *return value: 无 {{anchor:writearray}} **void writeArray(H5Object * dset, const double * buf)** *function: 将float数组写入到数据集对象中。 *parameters: - [i]H5Object * dset: 数据集对象指针 - [o] const double * buf: 写入的double数组 *return value: 无 {{anchor:writedata}} **void writeData(H5Object * obj, const LabelVarSection * buf, bool bGroupOnSection = false)** *function: 带标签的变量块以属性写入到从对象obj中,obj对象可能为Group(bGroupOnSection为true),也可能为Dataset(bGroupOnSection为false) *parameters: - [i]H5Object * obj: HDF5对象,当bGroupOnSection为true时为Group对象,否则为Dataset对象 - [i] const LabelVarSection * buf: 带标签的变量块 - [i] bool bGroupOnSection = false: 当bGroupOnSection为true时obj对象为Group对象,否则为Dataset对象 *return value: 无 {{anchor:writedata}} **void writeData(H5Object * grp, const LabelVarGroup * buf, bool bGroupOnSection = false)** *function: 带标签的变量组写入从对象grp中,当bGroupOnSection为true时不同LabelVarSection 写入到不同的子Group中,否则LabelVarSection写入到不同的数据集Dataset中 *parameters: - [i]H5Object * grp: Group对象指针 - [i] const LabelVarGroup * buf: 带标签的变量组 - [i] bool bGroupOnSection = false: 当bGroupOnSection为true时不同LabelVarSection 写入到不同的子Group中,否则LabelVarSection写入到不同的数据集Dataset中 *return value: 无 {{anchor:writedata}} **void writeData(H5Object * dset, const DataType * dtype, const void * buf)** *function: 将内存中的内容按照数据类型dtype写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象(文件数据类型已在创建的时候指定好) - [i] const DataType * dtype: buf的内存数据类型 - [i] const void * buf: 内存地址 *return value: 无 {{anchor:writeextenddata}} **void writeExtendData(H5Object * dset, const DataType * dtype, size_t size, const void * buf)** *function: 将内存中的数据按照给定数据类型增加到数据集中 *parameters: - [i]H5Object * dset: 数据集对象(文件数据类型已在创建的时候指定好) - [i] const DataType * dtype: buf的内存数据类型 - [i] size_t size: 新增加的数据个数 - [i] const void * buf: 内存地址 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const DataType * dtype, const void * buf)** *function: 将内存中的内容按照数据类型dtype以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const DataType * dtype: buf的内存数据类型 - [i] const void * buf: 内存地址 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const ulong & buf)** *function: 将ulong变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const ulong & buf: ulong变量的引用 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const int & buf)** *function: 将int变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const int & buf: int变量的引用 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const unsigned long long & buf)** *function: 将unsigned long long变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const unsigned long long & buf: unsigned long long变量的引用 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const long long & buf)** *function: 将long long变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const long long & buf: long long变量 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const double & buf)** *function: 将double变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const double & buf: double变量 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const char * buf)** *function: 将字符串以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const char * buf: 字符串变量 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(Attribute * dset, const DataType * dtype, const void * buf)** *function: 将内存中的内容按照数据类型dtype写入到属性中 *parameters: - [i]Attribute * dset: 属性对象 - [i] const DataType * dtype: 属性名 - [i] const void * buf: 内存地址 *return value: 无 {{anchor:writenameattribute}} **void writeNameAttribute(H5Object * dset, const char * aname, const char * buf)** *function: 将XName变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const char * buf: XName的字符串地址 *return value: 无 {{anchor:writetypeattribute}} **void writeTypeAttribute(H5Object * dset, const char * aname, const char * buf)** *function: 将XType变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const char * buf: XType对象的字符串地址 *return value: 无 {{anchor:writepathattribute}} **void writePathAttribute(H5Object * dset, const char * aname, const char * buf)** *function: 将XPath变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const char * buf: XPath对象的字符串地址 *return value: 无 {{anchor:writeattribute}} **void writeAttribute(H5Object * dset, const char * aname, const DBVersion & buf)** *function: 将DBVersion变量以属性写入到数据集中 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const char * aname: 属性名 - [i] const DBVersion & buf: DBVersion变量 *return value: 无 {{anchor:addstructtype}} **DataType * addStructType(size_t tsize, vector * memStrs = 0, bool bFileFormat = false)** *function: 基于数据成员定义添加struct数据的数据类型 *parameters: - [i]size_t tsize: 数据类型大小 - [i] vector * memStrs = 0: 数据成员定义,为空时仅指定数据类型大小 - [i] bool bFileFormat = false: 是否文件数据类型 *return value: 数据类型对象的指针 {{anchor:releasetype}} **void releaseType(DataType * dtype)** *function: 释放数据类型对象 *parameters: - [i]DataType * dtype: 数据类型对象的指针 *return value: 无 {{anchor:getdatasettype}} **DataType * getDatasetType(H5Object * dset)** *function: 获取数据集的数据类型 *parameters: - [i]H5Object * dset: 数据集对象 *return value: 数据集的数据类型 {{anchor:getstructmemberdatatype}} **DataType * getStructMemberDataType(DataType * type, const char * name)** *function: 获取复合数据类型的成员的数据类型 *parameters: - [i]DataType * type: 复合数据类型 - [i] const char * name: 成员变量名 *return value: 成员变量的数据类型 {{anchor:getstructmembervalue}} **void getStructMemberValue(H5Object * dset, vector * memberStrings, char * outBuf)** *function: 按照数据成员定义获取复合数据的成员变量的值,用于数据结构已经发生修改的场合(此时数据成员定义与数据集中保存的结构并不保证一一对应) *parameters: - [i]H5Object * dset: 数据集对象 - [i] vector * memberStrings: 数据成员定义 - [o] char * outBuf: 内存地址 *return value: 无 {{anchor:closegroup}} **void closeGroup(H5Object * grp)** *function: 关闭Group对象 *parameters: - [i]H5Object * grp: Group对象指针 *return value: 无 {{anchor:closedataset}} **void closeDataset(H5Object * dset)** *function: 关闭数据集对象 *parameters: - [i]H5Object * dset: 数据集对象 *return value: 无 {{anchor:closeattribute}} **void closeAttribute(Attribute * atb)** *function: 关闭属性对象 *parameters: - [i]Attribute * atb: 属性对象 *return value: 无 {{anchor:close}} **void close()** *function: 关闭HDF5句柄 *parameters: NULL *return value: 无 {{anchor:test}} **bool test()** *function: 测试函数 *parameters: NULL *return value: 测试成功返回true,否则返回false {{anchor:createstructattribute}} **template Attribute * createStructAttribute(H5Object * grp, const char * dsname)** *function: 模板函数,根据类T的数据成员定义表在grp对象中创建属性,创建好的对象需要调用closeAttribute关闭 *parameters: - [i]H5Object * grp: HDF5数据节点对象 - [i] const char * dsname: 属性名 *return value: 属性对象指针 {{anchor:writestructattribute}} **template void writeStructAttribute(Attribute * atb, const T * data)** *function: 模板函数,根据类T的数据成员定义表将data写入到属性atb中 *parameters: - [i]Attribute * atb: HDF5属性对象 - [i] const T * data: T类型的变量 *return value: 无 {{anchor:readstructattribute}} **template void readStructAttribute(Attribute * dset, T * data)** *function: 模板函数,根据类T的数据成员定义表从属性中读取值到T对象data中 *parameters: - [i]Attribute * dset: HDF5属性对象 - [i] T * data: T类型的变量 *return value: 无 {{anchor:createstructdataset}} **template H5Object * createStructDataset(H5Object * grp, const char * dsname, int count = 1)** *function: 模板函数,根据类T的数据成员定义表在grp对象中创建数据集,创建好的对象需要调用closeDataset关闭 *parameters: - [i]H5Object * grp: Group对象指针 - [i] const char * dsname: 数据集名字 - [i] int count = 1: 数据的个数 *return value: 数据集对象 {{anchor:writestruct}} **template void writeStruct(H5Object * dset, const T * data, bool bAutoClose)** *function: 模板函数,根据类T的数据成员定义表将data写入到数据集中,如bAutoClose为真,自动关闭数据集对象 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const T * data: T类型变量 - [i] bool bAutoClose: 如bAutoClose为真,自动关闭数据集对象 *return value: 无 {{anchor:writestructarray}} **template int writeStructArray(H5Object * dset, const XArray * darr, bool bAutoClose = false)** *function: 模板函数,根据类T的数据成员定义表将数组写入到数据集中,如bAutoClose为真,自动关闭数据集对象 *parameters: - [i]H5Object * dset: 数据集对象 - [i] const XArray * darr: T类型数组 - [i] bool bAutoClose = false: 如bAutoClose为真,自动关闭数据集对象 *return value: 无 {{anchor:readstruct}} **template void readStruct(H5Object * dset, T * data, bool bAutoClose = false)** *function: 模板函数,根据类T的数据成员定义表从数据集中读取值到T对象data中,如bAutoClose为真,自动关闭数据集对象 *parameters: - [i]H5Object * dset: 数据集对象 - [i] T * data: T类型变量 - [i] bool bAutoClose = false: 如bAutoClose为真,自动关闭数据集对象 *return value: 无 {{anchor:readstructarray}} **template int readStructArray(H5Object * dset, XArray * darr, bool bAutoClose = false)** *function: 模板函数,根据类T的数据成员定义表从数据集中读取值到T对象数组中,如bAutoClose为真,自动关闭数据集对象 *parameters: - [i]H5Object * dset: 数据集对象 - [i] XArray * darr: T类型数组 - [i] bool bAutoClose = false: 如bAutoClose为真,自动关闭数据集对象 *return value: 无 {{anchor:readstructarray}} **template int readStructArray(H5Object * dset, vector * darr, bool bAutoClose = false)** *function: 模板函数,根据类T的数据成员定义表从数据集中读取值到T对象数组中,如bAutoClose为真,自动关闭数据集对象 *parameters: - [i]H5Object * dset: 数据集对象 - [i] vector * darr: T类型数组 - [i] bool bAutoClose = false: 如bAutoClose为真,自动关闭数据集对象 *return value: 无 {{anchor:readstructmember}} **void readStructMember(char * buf, DataType * type, vector * members, const char * name, char * vbuf, int size)** *function: 基于数据成员定义表从已经读取出来的内存空间中获取某个成员变量的值 *parameters: - [i]char * buf: 已经读取出来的内存空间地址 - [i] DataType * type: buf所对应的内存数据类型 - [i] vector * members: 数据成员定义表 - [i] const char * name: 成员变量名 - [i] char * vbuf: 成员变量地址 - [i] int size: 成员变量大小 *return value: 无 {{anchor:readstructmember}} **template void readStructMember(char * buf, DataType * type, vector * members, const char * name, T * v)** *function: 模板函数, 基于数据成员定义表从已经读取出来的内存空间中获取某个成员变量的值 *parameters: - [i]char * buf: 已经读取出来的内存空间地址 - [i] DataType * type: buf所对应的内存数据类型 - [i] vector * members: 数据成员定义表 - [i] const char * name: 成员变量名 - [i] T * v: 成员变量地址 *return value: 无 {{anchor:getversion}} **const DBVersion & getVersion()** *function: 获取文件的版本号 *parameters: NULL *return value: 文件的版本数据