diff options
Diffstat (limited to 'src/H5Tpkg.h')
-rw-r--r-- | src/H5Tpkg.h | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h index b0abb9a..a534f1b 100644 --- a/src/H5Tpkg.h +++ b/src/H5Tpkg.h @@ -53,10 +53,10 @@ #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) +#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) @@ -65,7 +65,14 @@ #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)) +#define H5T_IS_ATOMIC(dt) (!(H5T_IS_COMPLEX((dt)->type) || (dt)->type == H5T_OPAQUE)) + +/* Macro to ease retrieving class of shared datatype */ +/* (Externally, a VL string is a string; internally, a VL string is a VL. Lie + * to the user if they have a VL string and tell them it's in the string + * class) + */ +#define H5T_GET_CLASS(shared, internal) ((internal) ? (shared)->type : (H5T_IS_VL_STRING(shared) ? H5T_STRING : (shared)->type)) /* @@ -226,8 +233,8 @@ struct H5T_stats_t { /* The datatype conversion database */ struct H5T_path_t { char name[H5T_NAMELEN]; /*name for debugging only */ - H5T_t *src; /*source datatype ID */ - H5T_t *dst; /*destination datatype ID */ + H5T_t *src; /*source datatype */ + H5T_t *dst; /*destination datatype */ H5T_conv_t func; /*data conversion function */ hbool_t is_hard; /*is it a hard function? */ hbool_t is_noop; /*is it the noop conversion? */ @@ -277,13 +284,21 @@ typedef enum H5T_sort_t { H5T_SORT_VALUE = 2 /*sorted by memb offset or enum value*/ } H5T_sort_t; +/* A compound datatype member */ +typedef struct H5T_cmemb_t { + char *name; /*name of this member */ + size_t offset; /*offset from beginning of struct */ + size_t size; /*total size: dims * type_size */ + struct H5T_t *type; /*type of this member */ +} H5T_cmemb_t; + /* A compound datatype */ typedef struct H5T_compnd_t { unsigned nalloc; /*num entries allocated in MEMB array*/ unsigned nmembs; /*number of members defined in struct*/ H5T_sort_t sorted; /*how are members sorted? */ hbool_t packed; /*are members packed together? */ - struct H5T_cmemb_t *memb; /*array of struct members */ + H5T_cmemb_t *memb; /*array of struct members */ } H5T_compnd_t; /* An enumeration datatype */ @@ -306,7 +321,7 @@ typedef herr_t (*H5T_vlen_setnullfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, voi /* VL types */ typedef enum { H5T_VLEN_BADTYPE = -1, /* invalid VL Type */ - H5T_VLEN_SEQUENCE=0, /* VL sequence */ + H5T_VLEN_SEQUENCE = 0, /* VL sequence */ H5T_VLEN_STRING, /* VL string */ H5T_VLEN_MAXTYPE /* highest type (Invalid as true type) */ } H5T_vlen_type_t; @@ -374,14 +389,6 @@ struct H5T_t { H5G_name_t path; /* group hier. path if the type is a named type */ }; -/* A compound datatype member */ -typedef struct H5T_cmemb_t { - char *name; /*name of this member */ - size_t offset; /*offset from beginning of struct */ - size_t size; /*total size: dims * type_size */ - struct H5T_t *type; /*type of this member */ -} H5T_cmemb_t; - /* The master list of soft conversion functions */ typedef struct H5T_soft_t { char name[H5T_NAMELEN]; /*name for debugging only */ @@ -1364,8 +1371,7 @@ H5_DLL H5T_t * H5T_vlen_create(const H5T_t *base); H5_DLL htri_t H5T_vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc); /* Array functions */ -H5_DLL H5T_t * H5T_array_create(H5T_t *base, unsigned ndims, - const hsize_t dim[/* ndims */]); +H5_DLL H5T_t *H5T_array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]); H5_DLL int H5T_get_array_ndims(const H5T_t *dt); H5_DLL int H5T_get_array_dims(const H5T_t *dt, hsize_t dims[]); |