diff options
Diffstat (limited to 'src/H5Tpublic.h')
-rw-r--r-- | src/H5Tpublic.h | 129 |
1 files changed, 78 insertions, 51 deletions
diff --git a/src/H5Tpublic.h b/src/H5Tpublic.h index 10f86b5..f1bbe9e 100644 --- a/src/H5Tpublic.h +++ b/src/H5Tpublic.h @@ -23,62 +23,89 @@ #include <H5public.h> #include <H5Apublic.h> -/* Define atomic datatype bases */ -#define H5T_CHAR MAKE_ATOM(H5_DATATYPE,0) -#define H5T_INT MAKE_ATOM(H5_DATATYPE,1) -#define H5T_FLOAT MAKE_ATOM(H5_DATATYPE,2) -#define H5T_DATE MAKE_ATOM(H5_DATATYPE,3) -#define H5T_TIME MAKE_ATOM(H5_DATATYPE,4) -#define H5T_SPTR MAKE_ATOM(H5_DATATYPE,5) -#define H5T_PPTR MAKE_ATOM(H5_DATATYPE,6) -#define H5T_COMPOUND MAKE_ATOM(H5_DATATYPE,7) - -/* Define atomic datatype architectures */ -#define H5T_BIGENDIAN 0 -#define H5T_LITTLEENDIAN 1 - -/* Define the machine's architecture */ -/* -WARNING! - This is _extremly_ crude is is only valid for very generic architectures, - anything with a wierd size of integer or wacky floating-point format will - _not_ work with this hack. It needs to be replaced with Robb's much more - comprehensive code from H5detect.c. -QAK -WARNING! -*/ -#define H5T_ARCH_BIGENDIAN 0 -#define H5T_ARCH_LITTLEENDIAN 1 -#ifdef WORDS_BIGENDIAN -#define H5T_ARCH_TYPE H5T_ARCH_BIGENDIAN -#else /* WORDS_BIGENDIAN */ -#define H5T_ARCH_TYPE H5T_ARCH_LITTLEENDIAN -#endif /* WORDS_BIGENDIAN */ - -typedef struct { - hid_t base; /* Basic datatype */ - uint8 len; /* Length of base-type, in bytes */ - uint8 arch; /* Architecture of the base-type */ - } h5_atomic_type_t; +/* These are the various classes of data types */ +typedef enum H5T_class_t { + H5T_NO_CLASS =-1, /*error */ + H5T_FIXED =0, /*fixed-point types */ + H5T_FLOAT =1, /*floating-point types */ + H5T_DATE =2, /*date and time types */ + H5T_STRING =3, /*character string types */ + H5T_BITFIELD =4, /*bit field types */ + H5T_OPAQUE =5, /*opaque types */ + H5T_COMPOUND =6 /*compound types */ +} H5T_class_t; + +/* Byte orders */ +typedef enum H5T_order_t { + H5T_ORDER_ERROR =-1, /*error */ + H5T_ORDER_LE =0, /*little endian */ + H5T_ORDER_BE =1, /*bit endian */ + H5T_ORDER_VAX =2, /*VAX mixed endian */ + H5T_ORDER_NONE =3 /*no particular order (strings, bits,..)*/ +} H5T_order_t; + +/* Types of fixed-point sign schemes */ +typedef enum H5T_sign_t { + H5T_SGN_ERROR =-1, /*error */ + H5T_SGN_NONE =0, /*this is an unsigned type */ + H5T_SGN_2 =1 /*two's complement */ +} H5T_sign_t; + +/* Floating-point normalization schemes */ +typedef enum H5T_norm_t { + H5T_NORM_ERROR =-1, /*error */ + H5T_NORM_IMPLIED =0, /*msb of mantissa isn't stored, always 1*/ + H5T_NORM_MSBSET =1, /*msb of mantissa is always 1 */ + H5T_NORM_NONE =2 /*not normalized */ +} H5T_norm_t; + +/* Character set to use for text strings */ +typedef enum H5T_cset_t { + H5T_CSET_ERROR =-1, /*error */ + H5T_CSET_ASCII =0 /*US ASCII */ +} H5T_cset_t; + +/* Type of padding to use in character strings */ +typedef enum H5T_str_t { + H5T_STR_ERROR =-1, /*error */ + H5T_STR_NULL =0, /*pad with null term like in C */ + H5T_STR_SPACE =1, /*pad with spaces like in Fortran */ +} H5T_str_t; + + + +#define H5T_PAD_ZERO (-1) /*pad with all zeros */ +#define H5T_PAD_ONE (-2) /*pad with all ones */ +#define H5T_PAD_FROM(X) (X) /*pad with value of bit X */ + +/* The predefined types */ +extern hid_t H5T_NATIVE_CHAR; +extern hid_t H5T_NATIVE_UCHAR; +extern hid_t H5T_NATIVE_SHORT; +extern hid_t H5T_NATIVE_USHORT; +extern hid_t H5T_NATIVE_INT; +extern hid_t H5T_NATIVE_UINT; +extern hid_t H5T_NATIVE_LONG; +extern hid_t H5T_NATIVE_ULONG; +extern hid_t H5T_NATIVE_FLOAT; +extern hid_t H5T_NATIVE_DOUBLE; #ifdef __cplusplus extern "C" { #endif -/* Functions in H5T.c */ -uint32 H5Tget_num_fields(hid_t tid); -hbool_t H5Tis_field_atomic(hid_t tid,uintn fidx); -hbool_t H5Tis_atomic(hid_t tid); -herr_t H5Tset_type(hid_t tid,hid_t base,uint8 len,uint8 arch); -herr_t H5Tget_type(hid_t tid,hid_t *base,uint8 *len,uint8 *arch); -uintn H5Tsize(hid_t tid, hbool_t mem_flag); -intn H5Tarch(hid_t tid); -herr_t H5Tadd_field (hid_t tid, const char *name, hid_t base, uint8 len, - uint8 arch, hid_t space); -herr_t H5Tget_fields(hid_t tid, hid_t *field_list); - -/* Private functions which need to be globally visible */ -void H5T_term_interface (void); -void H5T_destroy(void *datatype); +hid_t H5Tcreate (H5T_class_t type, size_t size); +hid_t H5Tcopy (hid_t type_id); +herr_t H5Tclose (hid_t type_id); +hbool_t H5Tequal (hid_t type1_id, hid_t type2_id); + +H5T_class_t H5Tget_class (hid_t type_id); +size_t H5Tget_size (hid_t type_id); +intn H5Tget_num_members (hid_t type_id); + +herr_t H5Tinsert_member (hid_t parent_id, const char *name, off_t offset, + hid_t member_id); + #ifdef __cplusplus } |