Page tree

 

JAVA

FORTRAN

C++

C

 

Link

H5TBA_GET_FILL

Reads the table attribute fill values

Procedure:

H5TBA_GET_FILL ( loc_id, dset_name, dset_id, dst_buf )

Signature:

htri_t H5TBAget_fill ( hid_t loc_id, const char *dset_name, hid_t dset_id, unsigned char *dst_buf )

Parameters:
hid_t loc_idIN: Location identifier of table
const char * dset_nameIN: Name of table
hid_t dset_idIN: Table identifier
unsigned char * dst_bufOUT: Buffer of fill values for table fields

Description:

H5TBA_GET_FILL reads the table attribute fill values into the buffer dst_buf for the table specified by dset_id and dset_name located in loc_id.

Returns:

A return value of 1 indicates that a fill value is present.

A return value of 0 indicates a fill value is not present.

A return value <0 indicates an error.

Example:
              unsigned char tmp_fill_buf[40];
              ...
              
              file_id = H5Fopen (FILENAME, H5F_ACC_RDWR, H5P_DEFAULT);
              dataset_id = H5Dopen (file_id, TABLE_NAME, H5P_DEFAULT);
              datatype_id = H5Dget_type (dataset_id);
           
              status = H5TBget_table_info (file_id, TABLE_NAME, &nfields, &nrecords);
           
              hasfill = H5TBAget_fill (file_id, TABLE_NAME, dataset_id, tmp_fill_buf);
           
              for(i = 0; i < nfields; i++) {
                member_type_id = H5Tget_member_type (datatype_id, (unsigned)i);
                native_mem_type_id = H5Tget_native_type (member_type_id, H5T_DIR_ASCEND);
                member_offset = H5Tget_member_offset(datatype_id, (unsigned)i);
                printf ("member_offset: %i\n", member_offset);
                memb_class = H5Tget_class (member_type_id);
                switch (memb_class){
                   case H5T_INTEGER:
                      /* convert unsigned char array to integer */
                     break;
                   case H5T_FLOAT:
                     /* convert unsigned char array to double or float */
           
                     if (H5Tequal (native_mem_type_id, H5T_NATIVE_DOUBLE)) {
                     }
                     else if (H5Tequal (native_mem_type_id, H5T_NATIVE_FLOAT)) {
                        f.i =   tmp_fill_buf[member_offset] |
                               (tmp_fill_buf[member_offset+1] << 8)  |
                               (tmp_fill_buf[member_offset+2] << 16) |
                               (tmp_fill_buf[member_offset+3] << 24) ;
                        printf ("Field %i  Fill Value:  %lf\n", i, f.f);
                     }
                     break;
             
                    case H5T_STRING:
                      /* convert unsigned char array to string */
                     strsize= H5Tget_size (member_type_id);
           
                     printf ("Field %i  Fill Value: ", i);
                     for (j = 0;j<strsize;j++)
                       printf ("%c", tmp_fill_buf[member_offset+j]);
                     printf ("\n");
                     break;
                }

 

History:

 

--- Last Modified: July 08, 2020 | 09:48 AM