/* */ #include "hdf5.h" #include #include #define FILENAME "cmpvlcrt.h5" typedef struct s1 { int var1; hvl_t var2[4]; int var3; } s1; s1 st[3]; int main(int argc, char* argv[]) { int i,j, len, nCount = 3; hsize_t dims[1], chunkDims[1], ioffset[1], icnt[1], arr_dims[]={4}; herr_t status, err1, err2; hid_t fileId, dataSetId, dataSpaceId, memSpaceId, vlDataTypeId, dataTypeId, pListId; hid_t array_dt, vltid; /* Create the file */ fileId = H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); printf ("H5Fcreate returns: %i\n", fileId); /* Create the array datatype */ vltid = H5Tcopy (H5T_C_S1); status = H5Tset_size(vltid, 10); vlDataTypeId= H5Tvlen_create ( vltid); status = H5Tclose (vltid); array_dt = H5Tarray_create (vlDataTypeId, 1, arr_dims); dataTypeId = H5Tcreate(H5T_COMPOUND, sizeof(s1)); printf ("H5Tcreate returns: %i\n", dataTypeId); H5Tinsert(dataTypeId, "var1", HOFFSET(s1,var1), H5T_NATIVE_INT); H5Tinsert(dataTypeId, "var2", HOFFSET(s1,var2), array_dt); H5Tinsert(dataTypeId, "var3", HOFFSET(s1,var3), H5T_NATIVE_INT); /* Create the dataspace */ dims[0] = nCount; dataSpaceId = H5Screate_simple(1, dims, NULL); printf ("H5Screate_simple returns: %i\n", dataSpaceId); /* Create the property list */ pListId = H5Pcreate(H5P_DATASET_CREATE); /* Create the dataset */ chunkDims[0] = 1; status = H5Pset_chunk(pListId, 1, chunkDims); printf ("%i\n", status); dataSetId = H5Dcreate(fileId, "/SAMPLE4", dataTypeId, dataSpaceId, H5P_DEFAULT, pListId, H5P_DEFAULT); for (i=0; i