NOTE: The netcdf-hdf
mailing list is no longer active. The list archives are made available for historical reasons.
Quincey Koziol <koziol@xxxxxxxxxxxxx> writes: > You are probably running into alignment issues. Try using sizeof(struct > s1) > instead of '8' for the compound dataype's size and using HOFFSET(struct s1, > i1), > etc. for the offsets of the fields. > Nope, I made the changes you suggest, still no joy... #include "tests.h" #define FILE_NAME "tst_h_compounds.h5" #define DIM1_LEN 3 #define GRP_NAME "group1" #define VAR1_NAME "v1" #define FIELD1_NAME "f1" #define FIELD2_NAME "f2" #define COMPOUND_NAME "compound_type_1" int main() { hid_t fileid, grpid, spaceid, typeid, datasetid; int bool_out[DIM1_LEN] = {0, 1, 0}, bool_in[DIM1_LEN]; hsize_t dims[1]; struct s1 { int i1, i2; } data[DIM1_LEN]; int i; printf("*** Checking HDF5 compound types..."); for (i; i<DIM1_LEN; i++) { data[i].i1 = 99; data[i].i2 = -99; } /* Open file and create group. */ if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; /* Create a simple compound type. */ if ((typeid = H5Tcreate(H5T_COMPOUND, sizeof(struct s1)))) ERR; if (H5Tinsert(typeid, FIELD1_NAME, HOFFSET(struct s1, i1), H5T_NATIVE_INT) < 0) ERR; if (H5Tinsert(typeid, FIELD2_NAME, HOFFSET(struct s1, i2), H5T_NATIVE_INT) < 0) ERR; if (H5Tcommit(grpid, COMPOUND_NAME, typeid)) ERR; /* Create a space. */ dims[0] = DIM1_LEN; if ((spaceid = H5Screate_simple(1, dims, dims)) < 0) ERR; /* Create a dataset of this compound type. */ if ((datasetid = H5Dcreate(grpid, VAR1_NAME, typeid, spaceid, H5P_DEFAULT)) < 0) ERR; if (H5Dwrite(datasetid, typeid, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) ERR; if (H5Dclose(datasetid) < 0 || H5Tclose(typeid) < 0 || H5Sclose(spaceid) < 0 || H5Gclose(grpid) < 0 || H5Fclose(fileid) < 0) ERR; SUMMARIZE_ERR; return 0; } HDF5 "tst_h_compounds.h5" { GROUP "/" { GROUP "group1" { DATATYPE "compound_type_1" H5T_COMPOUND { H5T_STD_I32LE "f1"; H5T_STD_I32LE "f2"; } DATASET "v1" { DATATYPE "/group1/compound_type_1" DATASPACE SIMPLE { ( 3 ) / ( 3 ) } DATA { (0): { 0, 0 }, (1): { 24641422, -1073743792 }, (2): { 10151160, 0 } } } } } } -- Ed Hartnett -- ed@xxxxxxxxxxxxxxxx
netcdf-hdf
archives: