diff options
Diffstat (limited to 'tools/h5diff/h5difftst.c')
-rw-r--r-- | tools/h5diff/h5difftst.c | 618 |
1 files changed, 201 insertions, 417 deletions
diff --git a/tools/h5diff/h5difftst.c b/tools/h5diff/h5difftst.c index 41e5da6..aa41864 100644 --- a/tools/h5diff/h5difftst.c +++ b/tools/h5diff/h5difftst.c @@ -22,7 +22,7 @@ /* diff tst*/ int do_test_files(void); int write_dataset( hid_t file_id, int rank, hsize_t *dims, const char *dset_name, - hid_t type_id, void *data ); + hid_t type_id, void *data ); int main(int argc, const char *argv[]) @@ -33,6 +33,8 @@ int main(int argc, const char *argv[]) } + + /*------------------------------------------------------------------------- * these command line options are tested in ./testh5diff.sh *------------------------------------------------------------------------- @@ -54,14 +56,81 @@ dset1.1 dset1.5 h5diff_test1.h5 h5diff_test2.h5 # test 1.6 dset1.1 dset1.6 h5diff_test1.h5 h5diff_test2.h5 +####################################################### # Different datatype sizes and different mix of options +####################################################### # test 2.1.0 -dset2.1 dset2.2 h5diff_test1.h5 h5diff_test2.h5 +dset2.1a dset2.1b h5diff_test1.h5 h5diff_test2.h5 # test 2.1.1 -dset2.1 dset2.2 -n 2 h5diff_test1.h5 h5diff_test2.h5 +dset2.1a dset2.1b -n 2 h5diff_test1.h5 h5diff_test2.h5 # test 2.1.2 -dset2.1 dset2.2 -d 3 h5diff_test1.h5 h5diff_test2.h5 - +dset2.1a dset2.1b -d 3 h5diff_test1.h5 h5diff_test2.h5 +# test 2.1.3 +dset2.1a dset2.1b -p 3 h5diff_test1.h5 h5diff_test2.h5 +####################################################### +# test 2.2.0 +dset2.2a dset2.2b h5diff_test1.h5 h5diff_test2.h5 +# test 2.2.1 +dset2.2a dset2.2b -n 2 h5diff_test1.h5 h5diff_test2.h5 +# test 2.2.2 +dset2.2a dset2.2b -d 3 h5diff_test1.h5 h5diff_test2.h5 +# test 2.2.3 +dset2.2a dset2.2b -p 3 h5diff_test1.h5 h5diff_test2.h5 +####################################################### +# test 2.3.0 +dset2.3a dset2.3b h5diff_test1.h5 h5diff_test2.h5 +# test 2.3.1 +dset2.3a dset2.3b -n 2 h5diff_test1.h5 h5diff_test2.h5 +# test 2.3.2 +dset2.3a dset2.3b -d 3 h5diff_test1.h5 h5diff_test2.h5 +# test 2.3.3 +dset2.3a dset2.3b -p 3 h5diff_test1.h5 h5diff_test2.h5 +####################################################### +# test 2.4.0 +dset2.4a dset2.4b h5diff_test1.h5 h5diff_test2.h5 +# test 2.4.1 +dset2.4a dset2.4b -n 2 h5diff_test1.h5 h5diff_test2.h5 +# test 2.4.2 +dset2.4a dset2.4b -d 3 h5diff_test1.h5 h5diff_test2.h5 +# test 2.4.3 +dset2.4a dset2.4b -p 3 h5diff_test1.h5 h5diff_test2.h5 +####################################################### +# test 2.5.0 +dset2.5a dset2.5b h5diff_test1.h5 h5diff_test2.h5 +# test 2.5.1 +dset2.5a dset2.5b -n 2 h5diff_test1.h5 h5diff_test2.h5 +# test 2.5.2 +dset2.5a dset2.5b -d 3 h5diff_test1.h5 h5diff_test2.h5 +# test 2.5.3 +dset2.5a dset2.5b -p 3 h5diff_test1.h5 h5diff_test2.h5 +####################################################### +# test 2.6.0 +dset2.6a dset2.6b h5diff_test1.h5 h5diff_test2.h5 +# test 2.6.1 +dset2.6a dset2.6b -n 2 h5diff_test1.h5 h5diff_test2.h5 +# test 2.6.2 +dset2.6a dset2.6b -d 3 h5diff_test1.h5 h5diff_test2.h5 +# test 2.6.3 +dset2.6a dset2.6b -p 3 h5diff_test1.h5 h5diff_test2.h5 + +####################################################### +# Different combination of objects +####################################################### + +# test 3.0 +h5diff_test3.h5 h5diff_test4.h5 + +# test 3.1 +dset3 dset3 h5diff_test3.h5 h5diff_test4.h5 + +# test 3.2 +dset3 dset4 h5diff_test3.h5 h5diff_test4.h5 + +# test 3.3 +dset6 dset3 h5diff_test3.h5 h5diff_test4.h5 + +# test 3.4 +dset6 dset6 h5diff_test3.h5 h5diff_test4.h5 */ @@ -69,44 +138,55 @@ dset2.1 dset2.2 -d 3 h5diff_test1.h5 h5diff_test2.h5 int do_test_files(void) { - hid_t file1_id, file2_id; + hid_t file1_id, file2_id, file3_id, file4_id; hid_t dataset_id; hid_t space_id; hid_t group_id; - hid_t type_id, type2_id; + hid_t type_id, type2_id; herr_t status; - int val; + int val; - /* Test 1. */ - hsize_t dims1 [1] = { 7 }; - hsize_t dims1_1[1] = { 8 }; - hsize_t dims2 [2] = { 3,2 }; + /* Test 1. */ + hsize_t dims1 [1] = { 7 }; + hsize_t dims1_1[1] = { 8 }; + hsize_t dims2 [2] = { 3,2 }; char data1_3[] = {"A string"}; - float data1_4[7] = {1,1,3,4,5,6,7}; - - /* Test 2. */ - char data2_1[3][2] = {{1,1},{1,1},{1,1}}; - char data2_2[3][2] = {{1,1},{3,4},{5,6}}; - -/* - float data5[3][2] = {{1,1},{3,4},{5,6}}; - float data6[3][2] = {{1,1.1f},{3.02f,4.002f},{5.00002f,6}}; - double data8[3][2] = {{1,1},{3.40505e-9,4},{5,6}}; - double data9[3][2] = {{1,1},{3.58911e-9,4},{5,6}};*/ - - /* Compound datatype */ + float data1_4[7] = {1,1,3,4,5,6,7}; + + /* Compound datatype */ typedef struct s_t - { - int a; - float b; + { + int a; + float b; } s_t; - typedef enum - { + typedef enum + { E_RED, E_GREEN } e_t; + /* Test 2.1 */ + char data2_1a[3][2] = {{1,1},{1,1},{1,1}}; + char data2_1b[3][2] = {{1,1},{3,4},{5,6}}; + /* Test 2.2 */ + short data2_2a[3][2] = {{1,1},{1,1},{1,1}}; + short data2_2b[3][2] = {{1,1},{3,4},{5,6}}; + /* Test 2.3 */ + int data2_3a[3][2] = {{1,1},{1,1},{1,1}}; + int data2_3b[3][2] = {{1,1},{3,4},{5,6}}; + /* Test 2.4 */ + long data2_4a[3][2] = {{1,1},{1,1},{1,1}}; + long data2_4b[3][2] = {{1,1},{3,4},{5,6}}; + /* Test 2.5 */ + float data2_5a[3][2] = {{1,1},{1,1},{1,1}}; + float data2_5b[3][2] = {{1,1},{3,4},{5,6}}; + /* Test 2.6 */ + double data2_6a[3][2] = {{1,1},{1,1},{1,1}}; + double data2_6b[3][2] = {{1,1},{3,4},{5,6}}; + + + /*------------------------------------------------------------------------- * Create two files *------------------------------------------------------------------------- @@ -120,7 +200,7 @@ int do_test_files(void) /*------------------------------------------------------------------------- * Test 1.1 - * Objects are not the same type (e.g try to compare a group with a dataset) + * Objects are not the same type (e.g try to compare a group with a dataset) *------------------------------------------------------------------------- */ @@ -142,7 +222,7 @@ int do_test_files(void) /*------------------------------------------------------------------------- * Test 1.2 - * Objects are of classes H5G_TYPE and H5G_GROUP and their name is supplied + * Objects are of classes H5G_TYPE and H5G_GROUP and their name is supplied *------------------------------------------------------------------------- */ @@ -152,35 +232,35 @@ int do_test_files(void) /* Close */ status = H5Gclose(group_id); - /* Create a memory compound datatype on file1 */ - type_id = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); + /* Create a memory compound datatype on file1 */ + type_id = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); H5Tinsert(type_id, "a", HOFFSET(s_t, a), H5T_NATIVE_INT); H5Tinsert(type_id, "b", HOFFSET(s_t, b), H5T_NATIVE_FLOAT); - /* Commit compound datatype and close it */ + /* Commit compound datatype and close it */ H5Tcommit(file1_id, "compound", type_id); - type2_id = H5Tcopy(type_id); - H5Tcommit(file2_id, "compound", type2_id); - H5Tclose(type_id); - H5Tclose(type2_id); - - /* Create a memory enum datatype on file1 */ - type_id = H5Tcreate(H5T_ENUM, sizeof(e_t)); + type2_id = H5Tcopy(type_id); + H5Tcommit(file2_id, "compound", type2_id); + H5Tclose(type_id); + H5Tclose(type2_id); + + /* Create a memory enum datatype on file1 */ + type_id = H5Tcreate(H5T_ENUM, sizeof(e_t)); H5Tenum_insert(type_id, "RED", (val = 0, &val)); - H5Tenum_insert(type_id, "GREEN", (val = 1, &val)); - type2_id = H5Tcopy(type_id); + H5Tenum_insert(type_id, "GREEN", (val = 1, &val)); + type2_id = H5Tcopy(type_id); - /* Commit enumeration datatype and close it */ - H5Tcommit(file1_id, "enum", type_id); - H5Tcommit(file2_id, "enum", type2_id); - H5Tclose(type_id); - H5Tclose(type2_id); + /* Commit enumeration datatype and close it */ + H5Tcommit(file1_id, "enum", type_id); + H5Tcommit(file2_id, "enum", type2_id); + H5Tclose(type_id); + H5Tclose(type2_id); /*------------------------------------------------------------------------- * Test 1.3 - * Check for non supported classes. Supported classes are H5T_INTEGER and H5T_FLOAT - * Non supported classes are - * H5T_TIME, H5T_STRING, H5T_BITFIELD, H5T_OPAQUE, H5T_COMPOUND, H5T_REFERENCE, - * H5T_ENUM, H5T_VLEN, H5T_ARRAY + * Check for non supported classes. Supported classes are H5T_INTEGER and H5T_FLOAT + * Non supported classes are + * H5T_TIME, H5T_STRING, H5T_BITFIELD, H5T_OPAQUE, H5T_COMPOUND, H5T_REFERENCE, + * H5T_ENUM, H5T_VLEN, H5T_ARRAY *------------------------------------------------------------------------- */ @@ -218,8 +298,8 @@ int do_test_files(void) /*------------------------------------------------------------------------- * Test 1.4 - * Datasets are not the same class type - * Write a float dataset and compare with integer "dset1.1" + * Datasets are not the same class type + * Write a float dataset and compare with integer "dset1.1" *------------------------------------------------------------------------- */ @@ -227,7 +307,7 @@ int do_test_files(void) /*------------------------------------------------------------------------- * Test 1.5 - * Datasets are not the same rank + * Datasets are not the same rank *------------------------------------------------------------------------- */ @@ -235,7 +315,7 @@ int do_test_files(void) /*------------------------------------------------------------------------- * Test 1.6 - * Check for the same current dimensions. Only compare if they are the same. + * Check for the same current dimensions. Only compare if they are the same. *------------------------------------------------------------------------- */ @@ -243,434 +323,138 @@ int do_test_files(void) /*------------------------------------------------------------------------- * Test 2.1 - * Check for the same current dimensions. Only compare if they are the same. - *------------------------------------------------------------------------- - */ - - write_dataset(file1_id,2,dims2,"dset2.1",H5T_NATIVE_CHAR,data2_1); - write_dataset(file2_id,2,dims2,"dset2.2",H5T_NATIVE_CHAR,data2_2); - - - -/*------------------------------------------------------------------------- - * Close files - *------------------------------------------------------------------------- - */ - status = H5Fclose(file1_id); - status = H5Fclose(file2_id); - - - return 0; - - -} - -/*------------------------------------------------------------------------- - * Function: write_dataset - * - * Purpose: utility function to write a dataset - * - * Return: - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: April 7, 2003 - * - *------------------------------------------------------------------------- - */ - -int write_dataset( hid_t file_id, int rank, hsize_t *dims, const char *dset_name, - hid_t type_id, void *data ) -{ - hid_t dataset_id; - hid_t space_id; - herr_t status; - - /* Create a data space */ - space_id = H5Screate_simple(rank,dims,NULL); - - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file_id,dset_name,type_id,space_id,H5P_DEFAULT); - - /* Write the data */ - if ( data ) - status = H5Dwrite(dataset_id,type_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,data); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - - return 0; - -} - - - - -#if 0 - - -/* -dset1 dset2 h5diff_test1.h5 h5diff_test2.h5 -dset1 dset2 -l h5diff_test1.h5 h5diff_test2.h5 -h5diff_test1.h5 h5diff_test2.h5 -dset1 dset2 -r h5diff_test1.h5 h5diff_test2.h5 -dset1 dset2 -n 2 h5diff_test1.h5 h5diff_test2.h5 -dset3 dset4 -d 0.01 h5diff_test1.h5 h5diff_test2.h5 -dset5 dset6 -p 0.05 h5diff_test1.h5 h5diff_test2.h5 -dset5 dset7 h5diff_test1.h5 h5diff_test2.h5 -dset8 dset9 h5diff_test2.h5 h5diff_test2.h5 -dset11 dset12 h5diff_test1.h5 h5diff_test2.h5 -*/ - -int do_test_files() -{ - - hid_t file1_id, file2_id; - hid_t dataset_id; - hid_t space_id; - hid_t group_id, group2_id; - hid_t type_id; - hsize_t dims [1] = { 7 }; - hsize_t dims2 [2] = { 3,2 }; - hsize_t dims3 [2] = { 3,3 }; - int data1[7] = {1,1,1,1,1,1,1}; - int data2[7] = {1,1,1,4,5,6,7}; - float data3[7] = {1,1,3,4,5,6,7}; - float data4[7] = {1,1,3.02f,4.002f,5.00002f,6,7}; - float data5[3][2] = {1,1,3,4,5,6}; - float data6[3][2] = {1,1.1f,3.02f,4.002f,5.00002f,6}; - float data7[3][3] = {1,1,3,4,5,6,7,8,9}; - double data8[3][2] = {1,1,3.40505e-9,4,5,6}; - double data9[3][2] = {1,1,3.58911e-9,4,5,6}; - char data10[] = {"A string"}; - long data11[7] = {1,1,1,1,1,1,1}; - long data12[7] = {1,1,1,4,5,6,7}; - herr_t status; - -/*------------------------------------------------------------------------- - * Create two files - *------------------------------------------------------------------------- - */ - - /* Create a file */ - file1_id = H5Fcreate ("h5diff_test1.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Create a file */ - file2_id = H5Fcreate ("h5diff_test2.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - -/*------------------------------------------------------------------------- - * Make dataset "dset1" on file1 - *------------------------------------------------------------------------- - */ - - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a dataset "dset1" */ - dataset_id = H5Dcreate(file1_id,"dset1",H5T_NATIVE_INT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data1); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - -/*------------------------------------------------------------------------- - * Make dataset "dset3" on file1 - *------------------------------------------------------------------------- - */ - - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a dataset "dset3" */ - dataset_id = H5Dcreate(file1_id,"dset3",H5T_NATIVE_FLOAT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_FLOAT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data3); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - - -/*------------------------------------------------------------------------- - * Make dataset "g1/dset1" on file1 - *------------------------------------------------------------------------- - */ - - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a group. */ - group_id = H5Gcreate(file1_id, "g1", 0); - - /* Create a dataset "g1/dset1" */ - dataset_id = H5Dcreate(group_id,"dset1",H5T_NATIVE_INT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data1); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Gclose(group_id); - status = H5Sclose(space_id); - - -/*------------------------------------------------------------------------- - * Make dataset "dset1" on file2 - *------------------------------------------------------------------------- - */ - - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a dataset "dset1" */ - dataset_id = H5Dcreate(file2_id,"dset1",H5T_NATIVE_INT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data2); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - - -/*------------------------------------------------------------------------- - * Make dataset "dset2" on file2 + * Check H5T_NATIVE_CHAR data *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a dataset "dset1" */ - dataset_id = H5Dcreate(file2_id,"dset2",H5T_NATIVE_INT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data2); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - + write_dataset(file1_id,2,dims2,"dset2.1a",H5T_NATIVE_CHAR,data2_1a); + write_dataset(file2_id,2,dims2,"dset2.1b",H5T_NATIVE_CHAR,data2_1b); /*------------------------------------------------------------------------- - * Make dataset "g1/dset1" on file2 + * Test 2.2 + * Check H5T_NATIVE_SHORT data *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a group. */ - group_id = H5Gcreate(file2_id, "g1", 0); - - /* Create a dataset "g1/dset1" */ - dataset_id = H5Dcreate(group_id,"dset1",H5T_NATIVE_INT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data2); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Gclose(group_id); - status = H5Sclose(space_id); + write_dataset(file1_id,2,dims2,"dset2.2a",H5T_NATIVE_SHORT,data2_2a); + write_dataset(file2_id,2,dims2,"dset2.2b",H5T_NATIVE_SHORT,data2_2b); /*------------------------------------------------------------------------- - * Make group "g2/g1" on file2 + * Test 2.3 + * Check H5T_NATIVE_INT data *------------------------------------------------------------------------- */ - /* Create a group. */ - group_id = H5Gcreate(file2_id, "g2", 0); - group2_id = H5Gcreate(group_id, "g1", 0); - - /* Close */ - status = H5Gclose(group_id); - status = H5Gclose(group2_id); + write_dataset(file1_id,2,dims2,"dset2.3a",H5T_NATIVE_INT,data2_3a); + write_dataset(file2_id,2,dims2,"dset2.3b",H5T_NATIVE_INT,data2_3b); /*------------------------------------------------------------------------- - * Make dataset "dset4" on file2 + * Test 2.4 + * Check H5T_NATIVE_LONG data *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file2_id,"dset4",H5T_NATIVE_FLOAT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_FLOAT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data4); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); + write_dataset(file1_id,2,dims2,"dset2.4a",H5T_NATIVE_LONG,data2_4a); + write_dataset(file2_id,2,dims2,"dset2.4b",H5T_NATIVE_LONG,data2_4b); /*------------------------------------------------------------------------- - * Make dataset "dset5" on file1 + * Test 2.5 + * Check H5T_NATIVE_FLOAT data *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(2,dims2,NULL); - - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file1_id,"dset5",H5T_NATIVE_FLOAT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_FLOAT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data5); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); + write_dataset(file1_id,2,dims2,"dset2.5a",H5T_NATIVE_FLOAT,data2_5a); + write_dataset(file2_id,2,dims2,"dset2.5b",H5T_NATIVE_FLOAT,data2_5b); /*------------------------------------------------------------------------- - * Make dataset "dset6" on file2 + * Test 2.4 + * Check H5T_NATIVE_LONG data *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(2,dims2,NULL); - - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file2_id,"dset6",H5T_NATIVE_FLOAT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_FLOAT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data6); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); + write_dataset(file1_id,2,dims2,"dset2.6a",H5T_NATIVE_DOUBLE,data2_6a); + write_dataset(file2_id,2,dims2,"dset2.6b",H5T_NATIVE_DOUBLE,data2_6b); -/*------------------------------------------------------------------------- - * Make dataset "dset7" on file2 - *------------------------------------------------------------------------- - */ - /* Create a data space */ - space_id = H5Screate_simple(2,dims3,NULL); - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file2_id,"dset7",H5T_NATIVE_FLOAT,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_FLOAT,H5S_ALL,H5S_ALL,H5P_DEFAULT,data7); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); /*------------------------------------------------------------------------- - * Make dataset "dset8" on file2 + * Create two files *------------------------------------------------------------------------- */ - - /* Create a data space */ - space_id = H5Screate_simple(2,dims2,NULL); - - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file2_id,"dset8",H5T_NATIVE_DOUBLE,space_id,H5P_DEFAULT); - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_DOUBLE,H5S_ALL,H5S_ALL,H5P_DEFAULT,data8); + /* Create a file */ + file3_id = H5Fcreate ("h5diff_test3.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); + /* Create a file */ + file4_id = H5Fcreate ("h5diff_test4.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); /*------------------------------------------------------------------------- - * Make dataset "dset9" on file2 + * Test 3.0 + * Check for different objects *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(2,dims2,NULL); + write_dataset(file3_id,1,dims1_1,"dset3",H5T_NATIVE_INT,0); + write_dataset(file4_id,1,dims1_1,"dset3",H5T_NATIVE_INT,0); + write_dataset(file3_id,1,dims1_1,"dset4",H5T_NATIVE_INT,0); + write_dataset(file4_id,1,dims1_1,"dset5",H5T_NATIVE_INT,0); - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file2_id,"dset9",H5T_NATIVE_DOUBLE,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_DOUBLE,H5S_ALL,H5S_ALL,H5P_DEFAULT,data9); - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); + /*------------------------------------------------------------------------- - * Make dataset "dset10" on file2 + * Close files *------------------------------------------------------------------------- */ + status = H5Fclose(file1_id); + status = H5Fclose(file2_id); + status = H5Fclose(file3_id); + status = H5Fclose(file4_id); - /* Create a data space */ - space_id = H5Screate(H5S_SCALAR); - /* Make a string type */ - type_id = H5Tcopy(H5T_C_S1); - status = H5Tset_size (type_id, strlen(data10)); + return 0; - /* Create a dataset "dset" */ - dataset_id = H5Dcreate(file2_id,"dset10",type_id,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,type_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,data10); - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - status = H5Tclose(type_id); +} /*------------------------------------------------------------------------- - * Make dataset "dset11" on file1 + * Function: write_dataset + * + * Purpose: utility function to write a dataset + * + * Return: + * + * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu + * + * Date: April 7, 2003 + * *------------------------------------------------------------------------- */ - /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); - - /* Create a dataset "dset1" */ - dataset_id = H5Dcreate(file1_id,"dset11",H5T_NATIVE_LONG,space_id,H5P_DEFAULT); - - /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_LONG,H5S_ALL,H5S_ALL,H5P_DEFAULT,data11); - - /* Close */ - status = H5Dclose(dataset_id); - status = H5Sclose(space_id); - -/*------------------------------------------------------------------------- - * Make dataset "dset12" on file2 - *------------------------------------------------------------------------- - */ +int write_dataset( hid_t file_id, int rank, hsize_t *dims, const char *dset_name, + hid_t type_id, void *data ) +{ + hid_t dataset_id; + hid_t space_id; + herr_t status; /* Create a data space */ - space_id = H5Screate_simple(1,dims,NULL); + space_id = H5Screate_simple(rank,dims,NULL); - /* Create a dataset "dset12" */ - dataset_id = H5Dcreate(file2_id,"dset12",H5T_NATIVE_LONG,space_id,H5P_DEFAULT); + /* Create a dataset */ + dataset_id = H5Dcreate(file_id,dset_name,type_id,space_id,H5P_DEFAULT); /* Write the data */ - status = H5Dwrite(dataset_id,H5T_NATIVE_LONG,H5S_ALL,H5S_ALL,H5P_DEFAULT,data12); + if ( data ) + status = H5Dwrite(dataset_id,type_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,data); /* Close */ status = H5Dclose(dataset_id); status = H5Sclose(space_id); - -/*------------------------------------------------------------------------- - * Close files - *------------------------------------------------------------------------- - */ - status = H5Fclose(file1_id); - status = H5Fclose(file2_id); - - return 0; - } -#endif
\ No newline at end of file + |