/*
 *   Creating and closing a dataset.
 */

#include "hdf5.h"
#define FILE "bool.h5"

main() {

   hid_t       file_id, dataset_id, dataspace_id;  /* identifiers */
   hsize_t     dims[2];
   herr_t      status;
   int         i,j;
   hbool_t     dset_data[4][6], dset_datar[4][6];

   /* Create a new file using default properties. */
   file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

   /* Create the data space for the dataset. */
   dims[0] = 4; 
   dims[1] = 6; 
   dataspace_id = H5Screate_simple(2, dims, NULL);

   /* Create the dataset. */
   dataset_id = H5Dcreate(file_id, "/dset", H5T_NATIVE_HBOOL, dataspace_id, H5P_DEFAULT);

   /* End access to the dataset and release resources used by it. */
   status = H5Dclose(dataset_id);

   /* Terminate access to the data space. */ 
   status = H5Sclose(dataspace_id);

   /* Close the file. */
   status = H5Fclose(file_id);

/******************************************
    WRITE data out in and READ back data in
*******************************************/

   /* Initialize the dataset. */
   for (i = 0; i < 4; i++)
   {
      for (j = 0; j < 3; j++)
         dset_data[i][j] = 1;
      for (j = 3; j < 6; j++)
         dset_data[i][j] = 0;
   }
  

   /* Open an existing file. */
   file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);

   /* Open an existing dataset. */
   dataset_id = H5Dopen(file_id, "/dset");

   /* Write the dataset. */
   status = H5Dwrite(dataset_id, H5T_NATIVE_HBOOL, H5S_ALL, H5S_ALL, H5P_DEFAULT, 
                     dset_data);

   status = H5Dread(dataset_id, H5T_NATIVE_HBOOL, H5S_ALL, H5S_ALL, H5P_DEFAULT, 
                    dset_datar);

   printf ("H5Dread returns: %i\n", status);

   printf ("Data:\n");
   for (i = 0; i < 4; i++)
   {
      for (j = 0; j < 6; j++)
        printf (" %i", dset_datar[i][j]);
      printf ("\n");
   }
       

   /* Close the dataset. */
   status = H5Dclose(dataset_id);

   /* Close the file. */
   status = H5Fclose(file_id);
}



