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()