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