summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/H5T.c96
-rw-r--r--src/H5Tcset.c16
-rw-r--r--src/H5Tnative.c2
-rw-r--r--src/H5Toffset.c7
-rw-r--r--src/H5Torder.c10
-rw-r--r--src/H5Tpad.c10
-rw-r--r--src/H5Tpkg.h43
-rw-r--r--src/H5Tprecis.c89
-rw-r--r--src/H5Tprivate.h3
-rw-r--r--src/H5Tpublic.h22
-rw-r--r--src/H5Tstrpad.c52
-rw-r--r--src/H5Tvlen.c16
-rwxr-xr-xsrc/hdf5.lnt2
13 files changed, 149 insertions, 219 deletions
diff --git a/src/H5T.c b/src/H5T.c
index dafd219..8e169f4 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -2541,7 +2541,7 @@ H5Tis_variable_str(hid_t dtype_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
/* Set return value */
- ret_value=H5T_is_variable_str(dt);
+ ret_value=H5T_IS_VL_STRING(dt);
done:
FUNC_LEAVE_API(ret_value);
@@ -2549,48 +2549,15 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5T_is_variable_str
- *
- * Purpose: Private function of H5Tis_variable_str.
- * Check whether a datatype is a variable-length string
- *
- *
- * Return: TRUE (1) or FALSE (0) on success/Negative on failure
- *
- * Programmer: Raymond Lu
- * November 4, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-htri_t
-H5T_is_variable_str(H5T_t *dt)
-{
- htri_t ret_value=FALSE; /* Return value */
-
- FUNC_ENTER_NOAPI(H5T_is_variable_str, FAIL);
-
- assert(dt);
-
- if(H5T_VLEN == dt->type && H5T_VLEN_STRING == dt->u.vlen.type)
- ret_value = TRUE;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
* Function: H5Tget_size
*
- * Purpose: Determines the total size of a data type in bytes.
+ * Purpose: Determines the total size of a datatype in bytes.
*
- * Return: Success: Size of the data type in bytes. The size of
- * data type is the size of an instance of that
- * data type.
+ * Return: Success: Size of the datatype in bytes. The size of
+ * datatype is the size of an instance of that
+ * datatype.
*
- * Failure: 0 (valid data types are never zero size)
+ * Failure: 0 (valid datatypes are never zero size)
*
* Programmer: Robb Matzke
* Monday, December 8, 1997
@@ -2610,7 +2577,7 @@ H5Tget_size(hid_t type_id)
/* Check args */
if (NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a data type");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a datatype");
/* size */
ret_value = H5T_get_size(dt);
@@ -2623,12 +2590,12 @@ done:
/*-------------------------------------------------------------------------
* Function: H5Tset_size
*
- * Purpose: Sets the total size in bytes for a data type (this operation
- * is not permitted on reference data types). If the size is
- * decreased so that the significant bits of the data type
+ * Purpose: Sets the total size in bytes for a datatype (this operation
+ * is not permitted on reference datatypes). If the size is
+ * decreased so that the significant bits of the datatype
* extend beyond the edge of the new size, then the `offset'
* property is decreased toward zero. If the `offset' becomes
- * zero and the significant bits of the data type still hang
+ * zero and the significant bits of the datatype still hang
* over the edge of the new size, then the number of significant
* bits is decreased.
*
@@ -3911,41 +3878,6 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5T_is_atomic
- *
- * Purpose: Determines if a data type is an atomic type.
- *
- * Return: Success: TRUE, FALSE
- *
- * Failure: Negative
- *
- * Programmer: Robb Matzke
- * Wednesday, January 7, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-htri_t
-H5T_is_atomic(const H5T_t *dt)
-{
- htri_t ret_value;
-
- FUNC_ENTER_NOAPI(H5T_is_atomic, FAIL);
-
- assert(dt);
-
- if (!H5T_IS_COMPLEX(dt->type) && H5T_OPAQUE!=dt->type)
- ret_value = TRUE;
- else
- ret_value = FALSE;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
* Function: H5T_set_size
*
* Purpose: Sets the total size in bytes for a data type (this operation
@@ -4000,7 +3932,7 @@ H5T_set_size(H5T_t *dt, size_t size)
else if(dt->type!=H5T_VLEN)
dt->size = dt->parent->size;
} else {
- if (H5T_is_atomic(dt)) {
+ if (H5T_IS_ATOMIC(dt)) {
offset = dt->u.atomic.offset;
prec = dt->u.atomic.prec;
@@ -4093,7 +4025,7 @@ H5T_set_size(H5T_t *dt, size_t size)
/* Commit (if we didn't convert this type to a VL string) */
if(dt->type!=H5T_VLEN) {
dt->size = size;
- if (H5T_is_atomic(dt)) {
+ if (H5T_IS_ATOMIC(dt)) {
dt->u.atomic.offset = offset;
dt->u.atomic.prec = prec;
}
@@ -5394,7 +5326,7 @@ H5T_debug(const H5T_t *dt, FILE *stream)
fprintf(stream, "%s%s {nbytes=%lu", s1, s2, (unsigned long)(dt->size));
- if (H5T_is_atomic(dt)) {
+ if (H5T_IS_ATOMIC(dt)) {
switch (dt->u.atomic.order) {
case H5T_ORDER_BE:
s1 = "BE";
diff --git a/src/H5Tcset.c b/src/H5Tcset.c
index 6814b9b..ec51af8 100644
--- a/src/H5Tcset.c
+++ b/src/H5Tcset.c
@@ -89,15 +89,13 @@ H5Tget_cset(hid_t type_id)
while (dt->parent && !H5T_IS_STRING(dt))
dt = dt->parent; /*defer to parent*/
if (!H5T_IS_STRING(dt))
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_CSET_ERROR, "operation not defined for data type class");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, H5T_CSET_ERROR, "operation not defined for data type class");
/* result */
- if(H5T_STRING == dt->type)
+ if(H5T_IS_FIXED_STRING(dt))
ret_value = dt->u.atomic.u.s.cset;
- else if(H5T_VLEN == dt->type && H5T_VLEN_STRING == dt->u.vlen.type)
+ else
ret_value = dt->u.vlen.cset;
- else
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADVALUE, H5T_CSET_ERROR, "can't get cset info");
done:
FUNC_LEAVE_API(ret_value);
@@ -141,15 +139,13 @@ H5Tset_cset(hid_t type_id, H5T_cset_t cset)
while (dt->parent && !H5T_IS_STRING(dt))
dt = dt->parent; /*defer to parent*/
if (!H5T_IS_STRING(dt))
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for data type class");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for data type class");
/* Commit */
- if(H5T_STRING == dt->type)
+ if(H5T_IS_FIXED_STRING(dt))
dt->u.atomic.u.s.cset = cset;
- else if(H5T_VLEN == dt->type && H5T_VLEN_STRING == dt->u.vlen.type)
+ else
dt->u.vlen.cset = cset;
- else
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADVALUE, FAIL, "can't set cset info");
done:
FUNC_LEAVE_API(ret_value);
diff --git a/src/H5Tnative.c b/src/H5Tnative.c
index 17e2ef8..a5005d4 100644
--- a/src/H5Tnative.c
+++ b/src/H5Tnative.c
@@ -198,7 +198,7 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig
if((ret_value=H5T_copy(dtype, H5T_COPY_TRANSIENT))==NULL)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot retrieve float type");
- if(H5T_is_variable_str(dtype)) {
+ if(H5T_IS_VL_STRING(dtype)) {
/* Update size, offset and compound alignment for parent. */
if(H5T_cmp_offset(comp_size, offset, sizeof(char *), 1, H5T_POINTER_COMP_ALIGN_g, struct_align)<0)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot compute compound offset");
diff --git a/src/H5Toffset.c b/src/H5Toffset.c
index bd54e5c..36a806d 100644
--- a/src/H5Toffset.c
+++ b/src/H5Toffset.c
@@ -105,11 +105,10 @@ H5Tget_offset(hid_t type_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an atomic data type");
while (dt->parent)
dt = dt->parent; /*defer to parent*/
- if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type");
+ if (!H5T_IS_ATOMIC(dt))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for specified data type");
/* Offset */
- assert(H5T_is_atomic(dt));
ret_value = (int)dt->u.atomic.offset;
done:
@@ -175,7 +174,7 @@ H5Tset_offset(hid_t type_id, size_t offset)
if (H5T_ENUM==dt->type && dt->u.enumer.nmembs>0)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not allowed after members are defined");
if (H5T_COMPOUND==dt->type || H5T_REFERENCE==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for this datatype");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for this datatype");
/* Do the real work */
if (H5T_set_offset(dt, offset)<0)
diff --git a/src/H5Torder.c b/src/H5Torder.c
index 214466c..2f39816 100644
--- a/src/H5Torder.c
+++ b/src/H5Torder.c
@@ -86,11 +86,10 @@ H5Tget_order(hid_t type_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5T_ORDER_ERROR, "not a data type");
while (dt->parent)
dt = dt->parent; /*defer to parent*/
- if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_ORDER_ERROR, "operation not defined for specified data type");
+ if (!H5T_IS_ATOMIC(dt))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, H5T_ORDER_ERROR, "operation not defined for specified data type");
/* Order */
- assert(H5T_is_atomic(dt));
ret_value = dt->u.atomic.order;
done:
@@ -134,11 +133,10 @@ H5Tset_order(hid_t type_id, H5T_order_t order)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not allowed after members are defined");
while (dt->parent)
dt = dt->parent; /*defer to parent*/
- if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_ORDER_ERROR, "operation not defined for specified data type");
+ if (!H5T_IS_ATOMIC(dt))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, H5T_ORDER_ERROR, "operation not defined for specified data type");
/* Commit */
- assert(H5T_is_atomic(dt));
dt->u.atomic.order = order;
done:
diff --git a/src/H5Tpad.c b/src/H5Tpad.c
index 532a920..3da45e7 100644
--- a/src/H5Tpad.c
+++ b/src/H5Tpad.c
@@ -86,11 +86,10 @@ H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/, H5T_pad_t *msb/*out*/)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
while (dt->parent)
dt = dt->parent; /*defer to parent*/
- if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type");
+ if (!H5T_IS_ATOMIC(dt))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for specified data type");
/* Get values */
- assert(H5T_is_atomic(dt));
if (lsb)
*lsb = dt->u.atomic.lsb_pad;
if (msb)
@@ -137,11 +136,10 @@ H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not allowed after members are defined");
while (dt->parent)
dt = dt->parent; /*defer to parent*/
- if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type");
+ if (!H5T_IS_ATOMIC(dt))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for specified data type");
/* Commit */
- assert(H5T_is_atomic(dt));
dt->u.atomic.lsb_pad = lsb;
dt->u.atomic.msb_pad = msb;
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index fab832b..49a1ca8 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -50,10 +50,19 @@
#define H5T_NAMELEN 32
/* Macro to ease detecting "complex" datatypes (i.e. those with base types or fields) */
-#define H5T_IS_COMPLEX(t) ((t)==H5T_COMPOUND || (t)==H5T_ENUM || (t)==H5T_VLEN || (t)==H5T_ARRAY)
+#define H5T_IS_COMPLEX(t) ((t)==H5T_COMPOUND || (t)==H5T_ENUM || (t)==H5T_VLEN || (t)==H5T_ARRAY)
+
+/* Macro to ease detecting fixed "string" datatypes */
+#define H5T_IS_FIXED_STRING(dt) (H5T_STRING == (dt)->type)
+
+/* Macro to ease detecting variable-length "string" datatypes */
+#define H5T_IS_VL_STRING(dt) (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type)
/* Macro to ease detecting fixed or variable-length "string" datatypes */
-#define H5T_IS_STRING(dt) (H5T_STRING == (dt)->type || (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type))
+#define H5T_IS_STRING(dt) (H5T_IS_FIXED_STRING(dt) || H5T_IS_VL_STRING(dt))
+
+/* Macro to ease detecting atomic datatypes */
+#define H5T_IS_ATOMIC(dt) (!(H5T_IS_COMPLEX((dt)->type) || (dt)->type==H5T_OPAQUE))
/* Statistics about a conversion function */
struct H5T_stats_t {
@@ -62,11 +71,11 @@ struct H5T_stats_t {
H5_timer_t timer; /*total time for conversion */
};
-/* The data type conversion database */
+/* The datatype conversion database */
struct H5T_path_t {
char name[H5T_NAMELEN]; /*name for debugging only */
- H5T_t *src; /*source data type ID */
- H5T_t *dst; /*destination data type ID */
+ H5T_t *src; /*source datatype ID */
+ H5T_t *dst; /*destination datatype ID */
H5T_conv_t func; /*data conversion function */
hbool_t is_hard; /*is it a hard function? */
H5T_stats_t stats; /*statistics for the conversion */
@@ -107,14 +116,14 @@ typedef struct H5T_atomic_t {
} u;
} H5T_atomic_t;
-/* How members are sorted for compound or enum data types */
+/* How members are sorted for compound or enum datatypes */
typedef enum H5T_sort_t {
H5T_SORT_NONE = 0, /*not sorted */
H5T_SORT_NAME = 1, /*sorted by member name */
H5T_SORT_VALUE = 2 /*sorted by memb offset or enum value*/
} H5T_sort_t;
-/* A compound data type */
+/* A compound datatype */
typedef struct H5T_compnd_t {
int nalloc; /*num entries allocated in MEMB array*/
int nmembs; /*number of members defined in struct*/
@@ -122,7 +131,7 @@ typedef struct H5T_compnd_t {
struct H5T_cmemb_t *memb; /*array of struct members */
} H5T_compnd_t;
-/* An enumeration data type */
+/* An enumeration datatype */
typedef struct H5T_enum_t {
int nalloc; /*num entries allocated */
int nmembs; /*number of members defined in enum */
@@ -157,7 +166,7 @@ typedef struct H5T_vlen_t {
H5T_vlen_writefunc_t write; /* Function to write VL sequence from buffer */
} H5T_vlen_t;
-/* An opaque data type */
+/* An opaque datatype */
typedef struct H5T_opaque_t {
char *tag; /*short type description string */
} H5T_opaque_t;
@@ -185,18 +194,18 @@ struct H5T_t {
H5T_class_t type; /*which class of type is this? */
size_t size; /*total size of an instance of this type */
hbool_t force_conv;/* Set if this type always needs to be converted and H5T_conv_noop cannot be called */
- struct H5T_t *parent;/*parent type for derived data types */
+ struct H5T_t *parent;/*parent type for derived datatypes */
union {
- H5T_atomic_t atomic; /* an atomic data type */
- H5T_compnd_t compnd; /* a compound data type (struct) */
+ H5T_atomic_t atomic; /* an atomic datatype */
+ H5T_compnd_t compnd; /* a compound datatype (struct) */
H5T_enum_t enumer; /* an enumeration type (enum) */
H5T_vlen_t vlen; /* a variable-length datatype */
- H5T_opaque_t opaque; /* an opaque data type */
+ H5T_opaque_t opaque; /* an opaque datatype */
H5T_array_t array; /* an array datatype */
} u;
};
-/* A compound data type member */
+/* A compound datatype member */
typedef struct H5T_cmemb_t {
char *name; /*name of this member */
size_t offset; /*offset from beginning of struct */
@@ -207,8 +216,8 @@ typedef struct H5T_cmemb_t {
/* The master list of soft conversion functions */
typedef struct H5T_soft_t {
char name[H5T_NAMELEN]; /*name for debugging only */
- H5T_class_t src; /*source data type class */
- H5T_class_t dst; /*destination data type class */
+ H5T_class_t src; /*source datatype class */
+ H5T_class_t dst; /*destination datatype class */
H5T_conv_t func; /*the conversion function */
} H5T_soft_t;
@@ -301,8 +310,6 @@ H5_DLL char *H5T_get_member_name(H5T_t *dt, int membno);
H5_DLL herr_t H5T_get_member_value(H5T_t *dt, int membno, void *value);
H5_DLL H5T_t *H5T_get_member_type(H5T_t *dt, int membno);
H5_DLL int H5T_get_nmembers(const H5T_t *dt);
-H5_DLL htri_t H5T_is_variable_str(H5T_t *dt);
-H5_DLL htri_t H5T_is_atomic(const H5T_t *dt);
H5_DLL herr_t H5T_insert(H5T_t *parent, const char *name, size_t offset,
const H5T_t *member);
H5_DLL H5T_t *H5T_enum_create(H5T_t *parent);
diff --git a/src/H5Tprecis.c b/src/H5Tprecis.c
index 9f7f471..9cc10f6 100644
--- a/src/H5Tprecis.c
+++ b/src/H5Tprecis.c
@@ -19,13 +19,15 @@
#define H5T_PACKAGE /*suppress error about including H5Tpkg */
-#include "H5private.h" /*generic functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Iprivate.h" /*ID functions */
-#include "H5Tpkg.h" /*data-type functions */
-
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
#define PABLO_MASK H5Tprecis_mask
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Iprivate.h" /* IDs */
+#include "H5Tpkg.h" /* Datatypes */
+
/* Interface initialization */
static int interface_initialize_g = 0;
#define INTERFACE_INIT H5T_init_precis_interface
@@ -51,16 +53,16 @@ DESCRIPTION
static herr_t
H5T_init_precis_interface(void)
{
- FUNC_ENTER_NOINIT(H5T_init_precis_interface);
+ FUNC_ENTER_NOINIT(H5T_init_precis_interface)
- FUNC_LEAVE_NOAPI(H5T_init());
+ FUNC_LEAVE_NOAPI(H5T_init())
} /* H5T_init_precis_interface() */
/*-------------------------------------------------------------------------
* Function: H5Tget_precision
*
- * Purpose: Gets the precision of a data type. The precision is
+ * Purpose: Gets the precision of a datatype. The precision is
* the number of significant bits which, unless padding is
* present, is 8 times larger than the value returned by
* H5Tget_size().
@@ -75,7 +77,7 @@ H5T_init_precis_interface(void)
*
* Modifications:
* Robb Matzke, 22 Dec 1998
- * Also works for derived data types.
+ * Also works for derived datatypes.
*
*-------------------------------------------------------------------------
*/
@@ -85,37 +87,36 @@ H5Tget_precision(hid_t type_id)
H5T_t *dt = NULL;
size_t ret_value;
- FUNC_ENTER_API(H5Tget_precision, 0);
+ FUNC_ENTER_API(H5Tget_precision, 0)
H5TRACE1("z","i",type_id);
/* Check args */
if (NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a data type");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, 0, "not a datatype")
while (dt->parent)
dt = dt->parent; /*defer to parent*/
- if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, 0, "operation not defined for specified data type");
+ if (!H5T_IS_ATOMIC(dt))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, 0, "operation not defined for specified datatype")
/* Precision */
- assert(H5T_is_atomic(dt));
ret_value = dt->u.atomic.prec;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
/*-------------------------------------------------------------------------
* Function: H5Tset_precision
*
- * Purpose: Sets the precision of a data type. The precision is
+ * Purpose: Sets the precision of a datatype. The precision is
* the number of significant bits which, unless padding is
* present, is 8 times larger than the value returned by
* H5Tget_size().
*
* If the precision is increased then the offset is decreased
* and then the size is increased to insure that significant
- * bits do not "hang over" the edge of the data type.
+ * bits do not "hang over" the edge of the datatype.
*
* The precision property of strings is read-only.
*
@@ -140,43 +141,43 @@ H5Tset_precision(hid_t type_id, size_t prec)
H5T_t *dt = NULL;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Tset_precision, FAIL);
+ FUNC_ENTER_API(H5Tset_precision, FAIL)
H5TRACE2("e","iz",type_id,prec);
/* Check args */
if (NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
if (H5T_STATE_TRANSIENT!=dt->state)
- HGOTO_ERROR(H5E_ARGS, H5E_CANTINIT, FAIL, "data type is read-only");
- if (prec <= 0)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "precision must be positive");
+ HGOTO_ERROR(H5E_ARGS, H5E_CANTSET, FAIL, "datatype is read-only")
+ if (prec == 0)
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "precision must be positive")
if (H5T_ENUM==dt->type && dt->u.enumer.nmembs>0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not allowed after members are defined");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "operation not allowed after members are defined")
if (H5T_STRING==dt->type)
- HGOTO_ERROR(H5E_ARGS, H5E_UNSUPPORTED, FAIL, "precision for this type is read-only");
+ HGOTO_ERROR(H5E_ARGS, H5E_UNSUPPORTED, FAIL, "precision for this type is read-only")
if (H5T_COMPOUND==dt->type || H5T_OPAQUE==dt->type)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for specified datatype")
/* Do the work */
if (H5T_set_precision(dt, prec)<0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to set precision");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "unable to set precision")
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
/*-------------------------------------------------------------------------
* Function: H5T_set_precision
*
- * Purpose: Sets the precision of a data type. The precision is
+ * Purpose: Sets the precision of a datatype. The precision is
* the number of significant bits which, unless padding is
* present, is 8 times larger than the value returned by
* H5Tget_size().
*
* If the precision is increased then the offset is decreased
* and then the size is increased to insure that significant
- * bits do not "hang over" the edge of the data type.
+ * bits do not "hang over" the edge of the datatype.
*
* The precision property of strings is read-only.
*
@@ -191,7 +192,7 @@ done:
*
* Modifications:
* Robb Matzke, 22 Dec 1998
- * Also works for derived data types.
+ * Also works for derived datatypes.
*
*-------------------------------------------------------------------------
*/
@@ -201,7 +202,7 @@ H5T_set_precision(H5T_t *dt, size_t prec)
size_t offset, size;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5T_set_precision, FAIL);
+ FUNC_ENTER_NOAPI(H5T_set_precision, FAIL)
/* Check args */
assert(dt);
@@ -213,7 +214,7 @@ H5T_set_precision(H5T_t *dt, size_t prec)
if (dt->parent) {
if (H5T_set_precision(dt->parent, prec)<0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to set precision for base type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "unable to set precision for base type")
/* Adjust size of datatype appropriately */
if(dt->type==H5T_ARRAY)
@@ -221,7 +222,7 @@ H5T_set_precision(H5T_t *dt, size_t prec)
else if(dt->type!=H5T_VLEN)
dt->size = dt->parent->size;
} else {
- if (H5T_is_atomic(dt)) {
+ if (H5T_IS_ATOMIC(dt)) {
/* Adjust the offset and size */
offset = dt->u.atomic.offset;
size = dt->size;
@@ -248,27 +249,25 @@ H5T_set_precision(H5T_t *dt, size_t prec)
*/
if (dt->u.atomic.u.f.sign >= prec ||
dt->u.atomic.u.f.epos + dt->u.atomic.u.f.esize > prec ||
- dt->u.atomic.u.f.mpos + dt->u.atomic.u.f.msize > prec) {
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "adjust sign, mantissa, and exponent fields first");
- }
+ dt->u.atomic.u.f.mpos + dt->u.atomic.u.f.msize > prec)
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "adjust sign, mantissa, and exponent fields first")
break;
default:
assert("not implemented yet" && 0);
- }
+ HGOTO_ERROR(H5E_ARGS, H5E_UNSUPPORTED, FAIL, "operation not defined for datatype class")
+ } /* end switch */
/* Commit */
dt->size = size;
- if (H5T_is_atomic(dt)) {
- dt->u.atomic.offset = offset;
- dt->u.atomic.prec = prec;
- }
- }
+ dt->u.atomic.offset = offset;
+ dt->u.atomic.prec = prec;
+ } /* end if */
else
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified datatype");
- }
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified datatype")
+ } /* end else */
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h
index 4fd78e6..1897dbf 100644
--- a/src/H5Tprivate.h
+++ b/src/H5Tprivate.h
@@ -18,6 +18,7 @@
#ifndef _H5Tprivate_H
#define _H5Tprivate_H
+/* Get package's public header */
#include "H5Tpublic.h"
/* Private headers needed by this file */
@@ -30,7 +31,7 @@ typedef struct H5T_t H5T_t;
typedef struct H5T_stats_t H5T_stats_t;
typedef struct H5T_path_t H5T_path_t;
-/* How to copy a data type */
+/* How to copy a datatype */
typedef enum H5T_copy_t {
H5T_COPY_TRANSIENT,
H5T_COPY_ALL,
diff --git a/src/H5Tpublic.h b/src/H5Tpublic.h
index 6842b63..1c0084e 100644
--- a/src/H5Tpublic.h
+++ b/src/H5Tpublic.h
@@ -24,7 +24,7 @@
#define HOFFSET(S,M) (offsetof(S,M))
-/* These are the various classes of data types */
+/* These are the various classes of datatypes */
/* If this goes over 16 types (0-15), the file format will need to change) */
typedef enum H5T_class_t {
H5T_NO_CLASS = -1, /*error */
@@ -134,7 +134,7 @@ typedef enum H5T_pad_t {
/* Commands sent to conversion functions */
typedef enum H5T_cmd_t {
H5T_CONV_INIT = 0, /*query and/or initialize private data */
- H5T_CONV_CONV = 1, /*convert data from source to dest data type */
+ H5T_CONV_CONV = 1, /*convert data from source to dest datatype */
H5T_CONV_FREE = 2 /*function is being removed from path */
} H5T_cmd_t;
@@ -181,15 +181,15 @@ typedef struct {
extern "C" {
#endif
-/* All data type conversion functions are... */
+/* All datatype conversion functions are... */
typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
hsize_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf,
void *bkg, hid_t dset_xfer_plist);
/*
- * If an error occurs during a data type conversion then the function
+ * If an error occurs during a datatype conversion then the function
* registered with H5Tset_overflow() is called. It's arguments are the
- * source and destination data types, a buffer which has the source value,
+ * source and destination datatypes, a buffer which has the source value,
* and a buffer to receive an optional result for the overflow conversion.
* If the overflow handler chooses a value for the result it should return
* non-negative; otherwise the hdf5 library will choose an appropriate
@@ -468,7 +468,7 @@ H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST64_g;
H5_DLLVAR hid_t H5T_NATIVE_INT_FAST64_g;
H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST64_g;
-/* Operations defined on all data types */
+/* Operations defined on all datatypes */
H5_DLL hid_t H5Topen(hid_t loc_id, const char *name);
H5_DLL hid_t H5Tcreate(H5T_class_t type, size_t size);
H5_DLL hid_t H5Tcopy(hid_t type_id);
@@ -478,12 +478,12 @@ H5_DLL herr_t H5Tlock(hid_t type_id);
H5_DLL herr_t H5Tcommit(hid_t loc_id, const char *name, hid_t type_id);
H5_DLL htri_t H5Tcommitted(hid_t type_id);
-/* Operations defined on compound data types */
+/* Operations defined on compound datatypes */
H5_DLL herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset,
hid_t member_id);
H5_DLL herr_t H5Tpack(hid_t type_id);
-/* Operations defined on enumeration data types */
+/* Operations defined on enumeration datatypes */
H5_DLL hid_t H5Tenum_create(hid_t base_id);
H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, void *value);
H5_DLL herr_t H5Tenum_nameof(hid_t type, void *value, char *name/*out*/,
@@ -491,16 +491,16 @@ H5_DLL herr_t H5Tenum_nameof(hid_t type, void *value, char *name/*out*/,
H5_DLL herr_t H5Tenum_valueof(hid_t type, const char *name,
void *value/*out*/);
-/* Operations defined on variable-length data types */
+/* Operations defined on variable-length datatypes */
H5_DLL hid_t H5Tvlen_create(hid_t base_id);
-/* Operations defined on array data types */
+/* Operations defined on array datatypes */
H5_DLL hid_t H5Tarray_create(hid_t base_id, int ndims,
const hsize_t dim[/* ndims */], const int perm[/* ndims */]);
H5_DLL int H5Tget_array_ndims(hid_t type_id);
H5_DLL int H5Tget_array_dims(hid_t type_id, hsize_t dims[], int perm[]);
-/* Operations defined on opaque data types */
+/* Operations defined on opaque datatypes */
H5_DLL herr_t H5Tset_tag(hid_t type, const char *tag);
H5_DLL char *H5Tget_tag(hid_t type);
diff --git a/src/H5Tstrpad.c b/src/H5Tstrpad.c
index c9e23f4..6848298 100644
--- a/src/H5Tstrpad.c
+++ b/src/H5Tstrpad.c
@@ -19,13 +19,15 @@
#define H5T_PACKAGE /*suppress error about including H5Tpkg */
-#include "H5private.h" /*generic functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Iprivate.h" /*ID functions */
-#include "H5Tpkg.h" /*data-type functions */
-
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
#define PABLO_MASK H5Tstrpad_mask
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Iprivate.h" /* IDs */
+#include "H5Tpkg.h" /* Datatypes */
+
/* Interface initialization */
static int interface_initialize_g = 0;
#define INTERFACE_INIT H5T_init_strpad_interface
@@ -48,9 +50,9 @@ DESCRIPTION
static herr_t
H5T_init_strpad_interface(void)
{
- FUNC_ENTER_NOINIT(H5T_init_strpad_interface);
+ FUNC_ENTER_NOINIT(H5T_init_strpad_interface)
- FUNC_LEAVE_NOAPI(H5T_init());
+ FUNC_LEAVE_NOAPI(H5T_init())
} /* H5T_init_strpad_interface() */
@@ -71,7 +73,7 @@ H5T_init_strpad_interface(void)
*
* Modifications:
* Robb Matzke, 22 Dec 1998
- * Also works for derived data types.
+ * Also works for derived datatypes.
*
*-------------------------------------------------------------------------
*/
@@ -81,27 +83,25 @@ H5Tget_strpad(hid_t type_id)
H5T_t *dt = NULL;
H5T_str_t ret_value;
- FUNC_ENTER_API(H5Tget_strpad, H5T_STR_ERROR);
+ FUNC_ENTER_API(H5Tget_strpad, H5T_STR_ERROR)
H5TRACE1("Tz","i",type_id);
/* Check args */
if (NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5T_STR_ERROR, "not a data type");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5T_STR_ERROR, "not a datatype")
while (dt->parent && !H5T_IS_STRING(dt))
dt = dt->parent; /*defer to parent*/
if (!H5T_IS_STRING(dt))
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_STR_ERROR, "operation not defined for data type class");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, H5T_STR_ERROR, "operation not defined for datatype class")
/* result */
- if(H5T_STRING == dt->type)
+ if(H5T_IS_FIXED_STRING(dt))
ret_value = dt->u.atomic.u.s.pad;
- else if(H5T_VLEN == dt->type && H5T_VLEN_STRING == dt->u.vlen.type)
- ret_value = dt->u.vlen.pad;
else
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADVALUE, H5T_STR_ERROR, "can't get strpad info");
+ ret_value = dt->u.vlen.pad;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -130,7 +130,7 @@ done:
*
* Modifications:
* Robb Matzke, 22 Dec 1998
- * Also works for derived data types.
+ * Also works for derived datatypes.
*
*-------------------------------------------------------------------------
*/
@@ -140,30 +140,28 @@ H5Tset_strpad(hid_t type_id, H5T_str_t strpad)
H5T_t *dt = NULL;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Tset_strpad, FAIL);
+ FUNC_ENTER_API(H5Tset_strpad, FAIL)
H5TRACE2("e","iTz",type_id,strpad);
/* Check args */
if (NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
if (H5T_STATE_TRANSIENT!=dt->state)
- HGOTO_ERROR(H5E_ARGS, H5E_CANTINIT, FAIL, "data type is read-only");
+ HGOTO_ERROR(H5E_ARGS, H5E_CANTINIT, FAIL, "datatype is read-only")
if (strpad < 0 || strpad >= H5T_NSTR)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "illegal string pad type");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "illegal string pad type")
while (dt->parent && !H5T_IS_STRING(dt))
dt = dt->parent; /*defer to parent*/
if (!H5T_IS_STRING(dt))
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for data type class");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "operation not defined for datatype class")
/* Commit */
- if(H5T_STRING == dt->type)
+ if(H5T_IS_FIXED_STRING(dt))
dt->u.atomic.u.s.pad = strpad;
- else if(H5T_VLEN == dt->type && H5T_VLEN_STRING == dt->u.vlen.type)
- dt->u.vlen.pad = strpad;
else
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADVALUE, H5T_STR_ERROR, "can't set strpad info");
+ dt->u.vlen.pad = strpad;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
diff --git a/src/H5Tvlen.c b/src/H5Tvlen.c
index 5cc738a..e74bca7 100644
--- a/src/H5Tvlen.c
+++ b/src/H5Tvlen.c
@@ -70,10 +70,10 @@ H5T_init_vlen_interface(void)
/*-------------------------------------------------------------------------
* Function: H5Tvlen_create
*
- * Purpose: Create a new variable-length data type based on the specified
+ * Purpose: Create a new variable-length datatype based on the specified
* BASE_TYPE.
*
- * Return: Success: ID of new VL data type
+ * Return: Success: ID of new VL datatype
*
* Failure: Negative
*
@@ -87,8 +87,8 @@ H5T_init_vlen_interface(void)
hid_t
H5Tvlen_create(hid_t base_id)
{
- H5T_t *base = NULL; /*base data type */
- H5T_t *dt = NULL; /*new data type */
+ H5T_t *base = NULL; /*base datatype */
+ H5T_t *dt = NULL; /*new datatype */
hid_t ret_value; /*return value */
FUNC_ENTER_API(H5Tvlen_create, FAIL)
@@ -114,10 +114,10 @@ done:
/*-------------------------------------------------------------------------
* Function: H5T_vlen_create
*
- * Purpose: Create a new variable-length data type based on the specified
+ * Purpose: Create a new variable-length datatype based on the specified
* BASE_TYPE.
*
- * Return: Success: new VL data type
+ * Return: Success: new VL datatype
*
* Failure: NULL
*
@@ -131,7 +131,7 @@ done:
H5T_t *
H5T_vlen_create(const H5T_t *base)
{
- H5T_t *dt = NULL; /*new VL data type */
+ H5T_t *dt = NULL; /*new VL datatype */
H5T_t *ret_value; /*return value */
FUNC_ENTER_NOINIT(H5T_vlen_create)
@@ -843,7 +843,7 @@ H5T_vlen_reclaim(void *elem, hid_t type_id, hsize_t UNUSED ndim, hssize_t UNUSED
/* Check args */
if (NULL==(dt=H5I_object_verify(type_id,H5I_DATATYPE)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type")
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype")
/* Get the free func & information */
if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_XFER)))
diff --git a/src/hdf5.lnt b/src/hdf5.lnt
index 7be2fa1..e135ce5 100755
--- a/src/hdf5.lnt
+++ b/src/hdf5.lnt
@@ -91,6 +91,8 @@
H5FL.c
H5FO.c
+ H5Tprecis.c
+ H5Tstrpad.c
H5Tvlen.c
H5V.c
H5Z.c