[cig-commits] r4485 - mc/3D/CitcomS/trunk/visual/Mayavi2

luis at geodynamics.org luis at geodynamics.org
Wed Sep 6 14:01:50 PDT 2006


Author: luis
Date: 2006-09-06 14:01:50 -0700 (Wed, 06 Sep 2006)
New Revision: 4485

Modified:
   mc/3D/CitcomS/trunk/visual/Mayavi2/Citcoms_Hdf2Vtk.c
Log:
Added function to retrieve float attributes from HDF5 file.


Modified: mc/3D/CitcomS/trunk/visual/Mayavi2/Citcoms_Hdf2Vtk.c
===================================================================
--- mc/3D/CitcomS/trunk/visual/Mayavi2/Citcoms_Hdf2Vtk.c	2006-09-06 20:18:19 UTC (rev 4484)
+++ mc/3D/CitcomS/trunk/visual/Mayavi2/Citcoms_Hdf2Vtk.c	2006-09-06 21:01:50 UTC (rev 4485)
@@ -20,8 +20,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <assert.h>
-#include <hdf5.h>
 #include <math.h>
+#include "hdf5.h"
 
 typedef struct vtk_pixel_t
 {
@@ -684,7 +684,42 @@
     return -1;
 }
 
+static herr_t get_attribute_float(hid_t input, const char *name, int *val)
+{
+    hid_t attr_id;
+    hid_t type_id;
+    H5T_class_t type_class;
+    size_t type_size;
 
+    herr_t status;
+
+    char *strval;
+
+    attr_id = H5Aopen_name(input, name);
+    type_id = H5Aget_type(attr_id);
+    type_class = H5Tget_class(type_id);
+    type_size = H5Tget_size(type_id);
+
+    H5Tclose(type_id);
+    H5Aclose(attr_id);
+
+    switch(type_class)
+    {
+        case H5T_STRING:
+            status = get_attribute_str(input, name, &strval);
+            if (status < 0) return -1;
+                *val = atof(strval);
+            free(strval);
+            return 0;
+        case H5T_FLOAT:
+            status = get_attribute(input, name, H5T_NATIVE_FLOAT, val);
+            if (status < 0) return -1;
+            return 0;
+    }
+    return -1;
+}
+
+
 static herr_t get_attribute(hid_t obj_id,
                             const char *attr_name,
                             hid_t mem_type_id,



More information about the cig-commits mailing list