@@ -686,11 +686,12 @@ gent_softlink(void)
686686#define NX 4
687687#define NY 2
688688int
689- gent_softlink2 (void )
689+ gent_softlink2 (bool big_endian_committed )
690690{
691691 hid_t fileid1 = H5I_INVALID_HID ;
692692 hid_t gid1 = H5I_INVALID_HID , gid2 = H5I_INVALID_HID ;
693- hid_t datatype = H5I_INVALID_HID ;
693+ hid_t target_type = H5I_INVALID_HID ;
694+ hid_t datatype = H5I_INVALID_HID ;
694695 hid_t dset1 = H5I_INVALID_HID , dset2 = H5I_INVALID_HID ;
695696 hid_t dataspace = H5I_INVALID_HID ;
696697 hsize_t dimsf [2 ]; /* dataset dimensions */
@@ -729,8 +730,22 @@ gent_softlink2(void)
729730 /*-----------------------------------------------------------------------
730731 * Named datatype
731732 *------------------------------------------------------------------------*/
732- datatype = H5Tcopy (H5T_NATIVE_INT );
733- status = H5Tcommit2 (fileid1 , "dtype" , datatype , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
733+ if ((target_type = H5Tcopy (H5T_NATIVE_INT )) < 0 ) {
734+ fprintf (stderr , "Error: %s> H5Tcopy failed.\n" , FILE4_1 );
735+ status = FAIL ;
736+ goto out ;
737+ }
738+
739+ if (big_endian_committed ) {
740+ if (H5Tset_order (target_type , H5T_ORDER_BE ) < 0 ) {
741+ status = FAIL ;
742+ goto out ;
743+ }
744+ }
745+
746+ datatype = H5Tcopy (target_type );
747+
748+ status = H5Tcommit2 (fileid1 , "dtype" , datatype , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
734749 if (status < 0 ) {
735750 fprintf (stderr , "Error: %s> H5Tcommit2 failed.\n" , FILE4_1 );
736751 status = FAIL ;
@@ -748,13 +763,10 @@ gent_softlink2(void)
748763 dimsf [1 ] = NY ;
749764 dataspace = H5Screate_simple (2 , dimsf , NULL );
750765
751- /*
752- * We will store little endian INT numbers.
753- */
754-
755766 /*---------------
756767 * dset1
757768 */
769+
758770 /* Create a new dataset as sample object */
759771 dset1 = H5Dcreate2 (fileid1 , "/dset1" , H5T_STD_I32BE , dataspace , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
760772 if (dset1 < 0 ) {
@@ -774,14 +786,14 @@ gent_softlink2(void)
774786 * dset2
775787 */
776788 /* Create a new dataset as sample object */
777- dset2 = H5Dcreate2 (fileid1 , "/dset2" , H5T_NATIVE_INT , dataspace , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
789+ dset2 = H5Dcreate2 (fileid1 , "/dset2" , target_type , dataspace , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
778790 if (dset2 < 0 ) {
779791 fprintf (stderr , "Error: %s> H5Dcreate2 failed.\n" , FILE4_1 );
780792 status = FAIL ;
781793 goto out ;
782794 }
783795
784- status = H5Dwrite (dset2 , H5T_NATIVE_INT , H5S_ALL , H5S_ALL , H5P_DEFAULT , data2 );
796+ status = H5Dwrite (dset2 , target_type , H5S_ALL , H5S_ALL , H5P_DEFAULT , data2 );
785797 if (status < 0 ) {
786798 fprintf (stderr , "Error: %s> H5Dwrite failed.\n" , FILE4_1 );
787799 status = FAIL ;
@@ -2238,7 +2250,7 @@ gent_objref(void)
22382250}
22392251
22402252void
2241- gent_datareg (void )
2253+ gent_datareg (bool undefined_fill_value )
22422254{
22432255 /*some code is taken from enum.c in the test dir */
22442256
@@ -2247,6 +2259,7 @@ gent_datareg(void)
22472259 dset2 ; /* Dereferenced dataset ID */
22482260 hid_t sid1 , /* Dataspace ID #1 */
22492261 sid2 ; /* Dataspace ID #2 */
2262+ hid_t dcpl_id = H5I_INVALID_HID ;
22502263 hsize_t dims1 [] = {SPACE1_DIM1 }, dims2 [] = {SPACE2_DIM1 , SPACE2_DIM2 };
22512264 hsize_t start [SPACE2_RANK ]; /* Starting location of hyperslab */
22522265 hsize_t stride [SPACE2_RANK ]; /* Stride of hyperslab */
@@ -2272,8 +2285,16 @@ gent_datareg(void)
22722285 /* Create dataspace for datasets */
22732286 sid2 = H5Screate_simple (SPACE2_RANK , dims2 , NULL );
22742287
2288+ dcpl_id = H5Pcreate (H5P_DATASET_CREATE );
2289+
2290+ if (undefined_fill_value ) {
2291+ /* Set the fill value to be undefined */
2292+ H5Pset_fill_time (dcpl_id , H5D_FILL_TIME_IFSET );
2293+ H5Pset_fill_value (dcpl_id , H5I_INVALID_HID , NULL );
2294+ }
2295+
22752296 /* Create a dataset */
2276- dset2 = H5Dcreate2 (fid1 , "Dataset2" , H5T_STD_U8BE , sid2 , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
2297+ dset2 = H5Dcreate2 (fid1 , "Dataset2" , H5T_STD_U8BE , sid2 , H5P_DEFAULT , dcpl_id , H5P_DEFAULT );
22772298
22782299 for (tu8 = dwbuf , i = 0 ; i < SPACE2_DIM1 * SPACE2_DIM2 ; i ++ )
22792300 * tu8 ++ = (uint8_t )(i * 3 );
@@ -2288,7 +2309,7 @@ gent_datareg(void)
22882309 sid1 = H5Screate_simple (SPACE1_RANK , dims1 , NULL );
22892310
22902311 /* Create a dataset */
2291- dset1 = H5Dcreate2 (fid1 , "Dataset1" , H5T_STD_REF_DSETREG , sid1 , H5P_DEFAULT , H5P_DEFAULT , H5P_DEFAULT );
2312+ dset1 = H5Dcreate2 (fid1 , "Dataset1" , H5T_STD_REF_DSETREG , sid1 , H5P_DEFAULT , dcpl_id , H5P_DEFAULT );
22922313
22932314 /* Create references */
22942315
@@ -2351,6 +2372,8 @@ gent_datareg(void)
23512372 /* Close file */
23522373 H5Fclose (fid1 );
23532374
2375+ H5Pclose (dcpl_id );
2376+
23542377 /* Free memory buffers */
23552378 free (wbuf );
23562379 free (rbuf );
0 commit comments