Back to index

salome-kernel  6.5.0
Functions
HDFdatasetWrite.c File Reference
#include "hdfi.h"
#include <stdlib.h>

Go to the source code of this file.

Functions

hdf_err HDFdatasetWrite (hdf_idt id, void *val)

Function Documentation

hdf_err HDFdatasetWrite ( hdf_idt  id,
void *  val 
)

Definition at line 42 of file HDFdatasetWrite.c.

{
  hdf_idt datatype;
  hdf_err ret;
#if defined (PCLINUX) || defined (PCLINUX64)
  int isI32BE = 0;
  int size = 0;
#endif

  if ((datatype = H5Dget_type(id)) < 0)
    return -1;

#if defined (PCLINUX) || defined (PCLINUX64)
  if((H5Tget_class(datatype) == H5T_INTEGER) && (H5Tget_size(datatype) == 4)) {
    isI32BE = 1; /* See HDFdatasetCreate */

    /*SRN : bug IPAL9619:  replaced the method of getting the size of INT32 dataset */ 
    int i, ndim = HDFdatasetGetnDim(id);
    if(ndim < 0) return -1;
    
    hdf_size *dim = (hdf_size *) malloc(sizeof(hdf_size)*ndim);
    if ((ret = HDFdatasetGetDim(id, dim)) < 0)  return -1;
        
    for(i=0; i<ndim; i++) size+=dim[i];    
    free(dim);
    /*SRN : end of the fix */
    
    if(size == 0) 
      return -1;
    if(H5Tconvert(H5T_NATIVE_INT, H5T_STD_I32BE, size, (void *)val, NULL, (hid_t)0) < 0) 
      return -1;
  }
#endif

  if ((ret = H5Dwrite(id, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, val)) < 0) 
    return -1;

#if defined (PCLINUX) || defined (PCLINUX64)
  if (isI32BE && (H5Tconvert(H5T_STD_I32BE, H5T_NATIVE_INT, size, (void *)val, NULL, (hid_t)0) < 0)) 
    return -1;
#endif

  return 0;
}

Here is the call graph for this function:

Here is the caller graph for this function: