changeset 1667:caf8e030b7f1

Start to fix handling of datatype
author bert <bert>
date Tue, 10 Feb 2004 20:05:18 +0000
parents 3c956d0fd772
children 492a7c709850
files libsrc2/datatype.c
diffstat 1 files changed, 3 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/libsrc2/datatype.c
+++ b/libsrc2/datatype.c
@@ -12,8 +12,7 @@
 int
 miget_data_class(mihandle_t volume, miclass_t *volume_class)
 {
-    /* TODO: where do we derive the class?  Is it an attribute? */
-    *volume_class = 0;
+    *volume_class = volume->volume_class;
     return (MI_NOERROR);
 }
 
@@ -22,72 +21,8 @@
 int
 miget_data_type(mihandle_t volume, mitype_t *data_type)
 {
-    hid_t grp_id;
-    hid_t dset_id;
-    hid_t type_id;
-    H5T_class_t class;
-    size_t nbytes;
-    int is_signed;
-    int result = MI_NOERROR;
-    hid_t file_id = volume->hdf_id;
-
-    grp_id = midescend_path(file_id, MI_FULLIMAGE_PATH);
-    if (grp_id < 0) {
-	return (MI_ERROR);
-    }
-
-    dset_id = H5Dopen(grp_id, "image");
-    if (dset_id < 0) {
-	return (MI_ERROR);
-    }
-    type_id = H5Dget_type(dset_id);
-    if (type_id < 0) {
-	return (MI_ERROR);
-    }
-    /* Convert the type to a MINC type.
-     */
-    class = H5Tget_class(type_id);
-    nbytes = H5Tget_size(type_id);
-
-    switch (class) {
-    case H5T_INTEGER:
-	is_signed = (H5Tget_size(type_id) == H5T_SGN_2);
-
-	switch (nbytes) {
-	case 1:
-	    *data_type = (is_signed ? MI_TYPE_BYTE : MI_TYPE_UBYTE);
-	    break;
-	case 2:
-	    *data_type = (is_signed ? MI_TYPE_SHORT : MI_TYPE_USHORT);
-	    break;
-	case 4:
-	    *data_type = (is_signed ? MI_TYPE_INT : MI_TYPE_UINT);
-	    break;
-	default:
-	    result = MI_ERROR;
-	    break;
-	}
-	break;
-    case H5T_FLOAT:
-	*data_type = (nbytes == 4) ? MI_TYPE_FLOAT : MI_TYPE_DOUBLE;
-	break;
-    case H5T_STRING:
-	*data_type = MI_TYPE_STRING;
-	break;
-    case H5T_ARRAY:
-	/* TODO: handle this case for uniform records (arrays)? */
-	break;
-    case H5T_COMPOUND:
-	/* TODO: handle this case for non-uniform records? */
-	break;
-    default:
-	result = MI_ERROR;
-	break;
-    }
-    H5Tclose(type_id);
-    H5Dclose(dset_id);
-    H5Gclose(grp_id);
-    return (result);
+    *data_type = volume->volume_type;
+    return (MI_NOERROR);
 }
 
 int