From e5b61f99aba874bf99b4ac585342ad2b399d5768 Mon Sep 17 00:00:00 2001 From: MuQun Yang Date: Thu, 28 Apr 2005 16:23:48 -0500 Subject: [svn-r10690] Purpose: Bug fix Description: On visual studio 6.0, conversion from unsigned long long to double is not supported. Even during compilation stage, it will fail. Solution: Albert changed the way the macro is handled so that for windowx MSVS 6.0, the code that has conversion from unsigned long long to double will not compile. Platforms tested: windows, linux Misc. update: --- src/H5Ztrans.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/H5Ztrans.c b/src/H5Ztrans.c index d8e45cf..b4b8a9d 100644 --- a/src/H5Ztrans.c +++ b/src/H5Ztrans.c @@ -149,15 +149,26 @@ static void H5Z_print(H5Z_node *tree, FILE *stream); #ifndef H5_ULLONG_TO_FP_CAST_WORKS -#define ULLONG_TO_FP_XFORM_TYPE_OP_ERROR HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned long long to double: required for data transform") +#define H5Z_XFORM_ULL_DO_OP1(RESL,RESR,TYPE,OP,SIZE) \ +{ \ + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned long long to double: required for data transform") \ +} #else -#define ULLONG_TO_FP_XFORM_TYPE_OP_ERROR +#define H5Z_XFORM_ULL_DO_OP1(RESL,RESR,TYPE,OP,SIZE) \ + H5Z_XFORM_DO_OP1(RESL,RESR,TYPE,OP,SIZE) #endif +/* Windows Intel 8.1 compiler has error converting long long to double. + * Hard code it in. + */ #ifdef H5_LLONG_TO_FP_CAST_BROKEN -#define LLONG_TO_FP_XFORM_TYPE_OP_ERROR HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from long long to double: required for data transform") +#define H5Z_XFORM_LL_DO_OP1(RESL,RESR,TYPE,OP,SIZE) \ +{ \ + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from long long to double: required for data transform") \ +} #else -#define LLONG_TO_FP_XFORM_TYPE_OP_ERROR +#define H5Z_XFORM_LL_DO_OP1(RESL,RESR,TYPE,OP,SIZE) \ + H5Z_XFORM_DO_OP1(RESL,RESR,TYPE,OP,SIZE) #endif #define H5Z_XFORM_TYPE_OP(RESL,RESR,TYPE,OP,SIZE) \ @@ -181,15 +192,9 @@ static void H5Z_print(H5Z_node *tree, FILE *stream); else if((TYPE) == H5T_NATIVE_ULONG) \ H5Z_XFORM_DO_OP1((RESL), (RESR), unsigned long, OP, (SIZE)) \ else if((TYPE) == H5T_NATIVE_LLONG) \ - { \ - LLONG_TO_FP_XFORM_TYPE_OP_ERROR \ - H5Z_XFORM_DO_OP1((RESL), (RESR), long_long, OP, (SIZE)) \ - } \ + H5Z_XFORM_LL_DO_OP1((RESL), (RESR), long_long, OP, (SIZE)) \ else if((TYPE) == H5T_NATIVE_ULLONG) \ - { \ - ULLONG_TO_FP_XFORM_TYPE_OP_ERROR \ - H5Z_XFORM_DO_OP1((RESL), (RESR), unsigned long_long, OP, (SIZE)) \ - } \ + H5Z_XFORM_ULL_DO_OP1((RESL), (RESR), unsigned long_long, OP, (SIZE)) \ else if((TYPE) == H5T_NATIVE_FLOAT) \ H5Z_XFORM_DO_OP1((RESL), (RESR), float, OP, (SIZE)) \ else if((TYPE) == H5T_NATIVE_DOUBLE) \ -- cgit v0.12