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的数据成员定义(HMember数组,按照统一的宏定义即可构建特定数据结构的数据成员定义,根据数据成员定义XH5IO即可获取在HDF5中对应的数据类型,这一设计可以显著的减少开发人员为支持HDF5所要完成的编码工作量。

Members

Public interface


H5File * m_pFile

HDF5文件句柄

vector<DataType **> * m_pTempDTypes

临时对象类型指针数组,用于临时存放各种数据结构对应的mType和fType,在文件处理完成之后统一关闭。

XPath m_strPath

待处理的文件路径

TypeID m_iMode

HDF5文件的打开模式

DBVersion m_Version

文件的版本号


XH5IO()

~XH5IO()

bool open(const char * fname, bool bWrite, bool bRead)

void clear()

void clearTempTypes()

void addTempType(DataType ** t)

void addGroup(const char * gName, bool bChunk = false)

H5Object * openGroup(const char * gname, bool bCreate = false)

H5Object * openIDGroup(const char * gname, ulong id, bool bCreate = false)

void getSubObjects(H5Object * parent, vector<string> * subNames)

void getSubGroups(H5Object * parent, vector<string> * subNames)

void getSubDatasets(H5Object * parent, vector<string> * subNames)

H5Object * openDataset(H5Object * grp, const char * dsname)

H5Object * openSubGroup(H5Object * parent, const char * gname)

H5Object * openIDGroup(H5Object * parent, const char * gname, ulong * id, XName * str)

Attribute * openAttribute(H5Object * parent, const char * dsname)

H5Object * createGroup(H5Object * parent, const char * gname)

H5Object * createIDGroup(H5Object * parent, const char * gname, ulong id)

void deleteGroup(H5Object * parent, const char * gname)

Attribute * createAttribute(H5Object * obj, const char * aname, DataType * dtype)

H5Object * createDataset(H5Object * grp, const char * dsname, DataType * dtype, size_t dim0, size_t dim1 = 0, int unitSize = 1, bool bChunk = false)

H5Object * createIDDataset(H5Object * grp, const char * dsname, int id, DataType * dtype)

H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray<float> * arr)

H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray<int> * arr)

H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray<ulong> * arr)

H5Object * writeArrayDataset(H5Object * grp, const char * dsname, const XArray<double> * arr)

H5Object * writeArrayDataset(H5Object * grp, const char * dsname, size_t size, const float * arr)

H5Object * writeArrayDataset(H5Object * grp, const char * dsname, size_t size, const int * arr)

H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray<float> * arr)

H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray<int> * arr)

H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray<ulong> * arr)

H5Object * readArrayDataset(H5Object * grp, const char * dsname, XArray<double> * arr)

H5Object * writeFieldDataset(H5Object * grp, const char * dsname, const XDataField * field)

H5Object * readFieldDataset(H5Object * grp, const char * dsname, XDataField * field)

void deleteDataset(H5Object * grp, const char * dsname)

size_t getDataCount(H5Object * dset)

size_t getDataTypeSize(DataType * dtype)

int getDataTypeOffset(DataType * dtype, const char * name)

int getDataMemberCount(DataType * dtype)

int getDataArrayCount(DataType * dtype)

bool checkDataType(H5Object * dset, vector<HMember> * memberStrings, int structSize)

bool readArray(H5Object * dset, float * buf)

bool readArray(H5Object * dset, int * buf)

bool readArray(H5Object * dset, ulong * buf)

bool readArray(H5Object * dset, double * buf)

bool readData(H5Object * obj, LabelVarSection * buf, bool bGroupOnSection = false)

bool readData(H5Object * grp, LabelVarGroup * buf, bool bGroupOnSection = false)

bool readData(H5Object * dset, const DataType * dtype, void * buf)

bool readAttribute(H5Object * dset, const char * aname, const DataType * dtype, void * buf)

bool readAttribute(H5Object * dset, const char * aname, DBVersion & buf)

bool readAttribute(H5Object * dset, const char * aname, ulong & buf)

bool readAttribute(H5Object * dset, const char * aname, int & buf)

bool readAttribute(H5Object * dset, const char * aname, size_t & buf)

bool readAttribute(H5Object * dset, const char * aname, long long & buf)

bool readAttribute(H5Object * dset, const char * aname, double & buf)

bool readAttribute(Attribute * dset, const DataType * dtype, void * buf)

bool readAttribute(H5Object * dset, const char * aname, char * buf)

bool readNameAttribute(H5Object * dset, const char * aname, char * buf)

bool readTypeAttribute(H5Object * dset, const char * aname, char * buf)

bool readPathAttribute(H5Object * dset, const char * aname, char * buf)

void writeArray(H5Object * dset, const float * buf)

void writeArray(H5Object * dset, const int * buf)

void writeArray(H5Object * dset, const ulong * buf)

void writeArray(H5Object * dset, const double * buf)

void writeData(H5Object * obj, const LabelVarSection * buf, bool bGroupOnSection = false)

void writeData(H5Object * grp, const LabelVarGroup * buf, bool bGroupOnSection = false)

void writeData(H5Object * dset, const DataType * dtype, const void * buf)

void writeExtendData(H5Object * dset, const DataType * dtype, size_t size, const void * buf)

void writeAttribute(H5Object * dset, const char * aname, const DataType * dtype, const void * buf)

void writeAttribute(H5Object * dset, const char * aname, const ulong & buf)

void writeAttribute(H5Object * dset, const char * aname, const int & buf)

void writeAttribute(H5Object * dset, const char * aname, const unsigned long long & buf)

void writeAttribute(H5Object * dset, const char * aname, const long long & buf)

void writeAttribute(H5Object * dset, const char * aname, const double & buf)

void writeAttribute(H5Object * dset, const char * aname, const char * buf)

void writeAttribute(Attribute * dset, const DataType * dtype, const void * buf)

void writeNameAttribute(H5Object * dset, const char * aname, const char * buf)

void writeTypeAttribute(H5Object * dset, const char * aname, const char * buf)

void writePathAttribute(H5Object * dset, const char * aname, const char * buf)

void writeAttribute(H5Object * dset, const char * aname, const DBVersion & buf)

DataType * addStructType(size_t tsize, vector<HMember> * memStrs = 0, bool bFileFormat = false)

void releaseType(DataType * dtype)

DataType * getDatasetType(H5Object * dset)

DataType * getStructMemberDataType(DataType * type, const char * name)

void getStructMemberValue(H5Object * dset, vector<HMember> * memberStrings, char * outBuf)

void closeGroup(H5Object * grp)

void closeDataset(H5Object * dset)

void closeAttribute(Attribute * atb)

void close()

bool test()

template <typename T> Attribute * createStructAttribute(H5Object * grp, const char * dsname)

template <typename T> void writeStructAttribute(Attribute * atb, const T * data)

template <typename T> void readStructAttribute(Attribute * dset, T * data)

template <typename T> H5Object * createStructDataset(H5Object * grp, const char * dsname, int count = 1)

template <typename T> void writeStruct(H5Object * dset, const T * data, bool bAutoClose)

template <typename T> int writeStructArray(H5Object * dset, const XArray<T> * darr, bool bAutoClose = false)

template <typename T> void readStruct(H5Object * dset, T * data, bool bAutoClose = false)

template <typename T> int readStructArray(H5Object * dset, XArray<T> * darr, bool bAutoClose = false)

template <typename T> int readStructArray(H5Object * dset, vector<T> * darr, bool bAutoClose = false)

void readStructMember(char * buf, DataType * type, vector<HMember> * members, const char * name, char * vbuf, int size)

template <typename T> void readStructMember(char * buf, DataType * type, vector<HMember> * members, const char * name, T * v)

const DBVersion & getVersion()