Salome HOME
PAL6948 (Persistence in MED). Get byte order of dataset and store it in ASCII format
[modules/kernel.git] / src / HDFPersist / HDFdataset.cc
index 84a2f5ae633eb0cf75e0f30a7570f6039a9812b9..789f6e1a6f4f053a7b8f6df82ceea9cee25a0347 100644 (file)
@@ -44,7 +44,7 @@ herr_t dataset_attr(hid_t loc_id, const char *attr_name, void *operator_data)
 }
 
 HDFdataset::HDFdataset(char *name, HDFcontainerObject *father,hdf_type type, 
-                      hdf_size dim[], int dimsize)
+                      hdf_size dim[], int dimsize, hdf_byte_order order)
   : HDFinternalObject(name)
 {
   int i;
@@ -55,6 +55,7 @@ HDFdataset::HDFdataset(char *name, HDFcontainerObject *father,hdf_type type,
   _type = type;
   _ndim = dimsize;
   _dim = new hdf_size[dimsize];
+  _byte_order = order;
   _size = 1;
   _attribute = NULL;
   for (i=0;i<dimsize;i++)
@@ -74,6 +75,7 @@ HDFdataset::HDFdataset(char *name,HDFcontainerObject *father)
   _type = HDF_NONE;
   _ndim = -1;
   _dim = 0;
+  _byte_order = H5T_ORDER_ERROR;
   _size = -1;
   _attribute = NULL;
 }
@@ -85,7 +87,7 @@ HDFdataset::~HDFdataset()
 
 void HDFdataset::CreateOnDisk()
 {
-  if ((_id = HDFdatasetCreate(_fid,_name,_type,_dim,_ndim)) < 0)
+  if ((_id = HDFdatasetCreate(_fid,_name,_type,_dim,_ndim,_byte_order)) < 0)
     throw HDFexception("Can't create dataset");
 }
 
@@ -198,6 +200,14 @@ int HDFdataset::GetSize()
   return _size;
 }
 
+hdf_byte_order HDFdataset::GetOrder()
+{
+  if (_byte_order < 0 )
+    if ((_byte_order = HDFdatasetGetOrder( _id )) < 0)
+      throw HDFexception("Can't determine the byte order of the dataset");
+  return _byte_order;
+}
+
 hdf_object_type HDFdataset::GetObjectType()
 {
   return HDF_DATASET;