Back to index

salome-kernel  6.5.0
Functions
HDFdatasetCreate.c File Reference
#include "hdfi.h"

Go to the source code of this file.

Functions

hdf_idt HDFdatasetCreate (hdf_idt pid, char *name, hdf_type type, hdf_size *dimd, int ndim, hdf_byte_order order, hdf_idt arrayId)

Function Documentation

hdf_idt HDFdatasetCreate ( hdf_idt  pid,
char *  name,
hdf_type  type,
hdf_size dimd,
int  ndim,
hdf_byte_order  order,
hdf_idt  arrayId 
)

Definition at line 45 of file HDFdatasetCreate.c.

{
  hdf_idt dataset, dataspace = 0;
  hdf_err ret;
  hdf_idt type_hdf, new_type_hdf = -1;

  switch(type)
    {
    case HDF_FLOAT64 :
#if defined (PCLINUX) || defined (PCLINUX64)
      type_hdf = H5T_IEEE_F64BE;
#else 
      type_hdf = H5T_IEEE_F64LE;
#endif
      break;

    case HDF_INT32 :
#if defined (PCLINUX) || defined (PCLINUX64)
      type_hdf = H5T_STD_I32BE;  
#else
      type_hdf = H5T_NATIVE_INT;
#endif
      break;
 
    case HDF_INT64 :
      type_hdf = H5T_NATIVE_LONG;
      break;

    case HDF_STRING :           
      if((new_type_hdf = H5Tcopy(H5T_C_S1)) < 0)
        return -1;
      if((ret = H5Tset_size(new_type_hdf,1)) < 0)
        return -1;
      break;    

    case HDF_ARRAY :
      type_hdf = arrayId;
      break;
      
    default :
      return -1;
    }

  /* set order */
  if ( order != H5T_ORDER_ERROR && 
       order != H5T_ORDER_NONE && 
       type  != HDF_STRING )
    {
      if (( new_type_hdf = H5Tcopy( type_hdf )) < 0 )
        return -1;
      if (( ret = H5Tset_order (new_type_hdf, order )) < 0 )
        return -1;
    }

  if ((dataset = H5Dopen(pid,name)) < 0)
    {
      if ((dataspace = H5Screate_simple(ndim, dimd, NULL)) < 0)                                                         
        return -1;
      if ((dataset = H5Dcreate(pid,name,
                               new_type_hdf < 0 ? type_hdf : new_type_hdf,
                               dataspace, H5P_DEFAULT)) < 0)
        return -1;
    }
  else
    return -1;

  if ( ! (new_type_hdf < 0) && (ret = H5Tclose(new_type_hdf)) < 0)
    return -1;
  if ((ret = H5Sclose(dataspace)) < 0)
    return -1;

  return dataset;
}

Here is the caller graph for this function: