diff options
author | Albert Cheng <acheng@hdfgroup.org> | 2004-10-14 19:12:44 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 2004-10-14 19:12:44 (GMT) |
commit | 7d1bf17b3dcf0082454c1b522790c762a0281ad2 (patch) | |
tree | b716ca7686160ba7d15d8290969de8ef9569f5a3 /test/tconfig.c | |
parent | 087da3d5c9fe50ca0670ce7ef744423316bff024 (diff) | |
download | hdf5-7d1bf17b3dcf0082454c1b522790c762a0281ad2.zip hdf5-7d1bf17b3dcf0082454c1b522790c762a0281ad2.tar.gz hdf5-7d1bf17b3dcf0082454c1b522790c762a0281ad2.tar.bz2 |
[svn-r9419] Bug fix.
tconfig.c:
Verified only the unsigned int types and did not detect inconsistencies
on signed type such as int_fast16_t.
Changed code to verify both signed and unsigned int types wherever
applicable. It also depends on signed and unsigned forms of an
int type must be of the same sizes.
testhdf5.c:
Shorten the configure test name to 'config'--easier to type.
Tested on LLNL Frost and Snow. Will test in Copper after commit.
Diffstat (limited to 'test/tconfig.c')
-rw-r--r-- | test/tconfig.c | 97 |
1 files changed, 57 insertions, 40 deletions
diff --git a/test/tconfig.c b/test/tconfig.c index 218c060..1503fc8 100644 --- a/test/tconfig.c +++ b/test/tconfig.c @@ -24,12 +24,25 @@ #include "testhdf5.h" /* macros definitions */ -/* verify C type sizes */ -#define vrfy_ctype(ctype, ctype_macro) \ - if (sizeof(ctype) != ctype_macro){ \ - TestErrPrintf("Error verifying %s expected: %d, got: %d\n", \ - #ctype_macro, ctype_macro, sizeof(ctype)); \ - } +/* verify C int type: verify the size of signed and unsigned int type + * with the macro size. + */ +#define vrfy_cint_type(ctype, uctype, ctype_macro) \ + /* check signed type size */ \ + vrfy_macrosize(ctype, ctype_macro, #ctype_macro);\ + /* check unsigned type size */ \ + vrfy_macrosize(uctype, ctype_macro, #ctype_macro); + +/* verify C type sizes: verify the sizeof type with the macro size. */ +#define vrfy_ctype(type, macro) \ + vrfy_macrosize(type, macro, #macro); + +/* verify if the sizeof(type) matches size defined in macro. */ +/* Needs this extra step so that we can print the macro name. */ +#define vrfy_macrosize(type, macro, macroname) \ + if (sizeof(type) != macro) \ + TestErrPrintf("Error: sizeof(%s) is %d but %s is %d\n", \ + #type, sizeof(type), macroname, macro); /* local routine prototypes */ void test_config_ctypes(void); @@ -90,80 +103,84 @@ cleanup_configure(void) * September 25, 2001 * * Modifications: + * Albert Cheng, 2004/10/14 + * Verified both signed and unsigned int types. * *------------------------------------------------------------------------- */ void test_config_ctypes(void) { - /* standard basic types */ + /* standard C89 basic types */ + /* char, signed char, unsigned char are three distinct types. */ vrfy_ctype(char, H5_SIZEOF_CHAR); - vrfy_ctype(int, H5_SIZEOF_INT); - vrfy_ctype(short, H5_SIZEOF_SHORT); - vrfy_ctype(long, H5_SIZEOF_LONG); + vrfy_cint_type(signed char, unsigned char, H5_SIZEOF_CHAR); + vrfy_cint_type(int, unsigned int, H5_SIZEOF_INT); + vrfy_cint_type(short, unsigned short, H5_SIZEOF_SHORT); + vrfy_cint_type(long, unsigned long, H5_SIZEOF_LONG); vrfy_ctype(float, H5_SIZEOF_FLOAT); vrfy_ctype(double, H5_SIZEOF_DOUBLE); - /* non-standard basic types */ -#if H5_SIZEOF_LONG_LONG > 0 - vrfy_ctype(long_long, H5_SIZEOF_LONG_LONG); -#endif - + /* standard C99 basic types */ #if H5_SIZEOF_LONG_DOUBLE > 0 vrfy_ctype(long double, H5_SIZEOF_LONG_DOUBLE); #endif -#if H5_SIZEOF_UINT8_T > 0 - vrfy_ctype(uint8_t, H5_SIZEOF_UINT8_T); +#if H5_SIZEOF_LONG_LONG > 0 + vrfy_cint_type(long_long, unsigned long_long, H5_SIZEOF_LONG_LONG); +#endif + +#if H5_SIZEOF_INT8_T > 0 + vrfy_cint_type(int8_t, uint8_t, H5_SIZEOF_INT8_T); #endif -#if H5_SIZEOF_UINT16_T > 0 - vrfy_ctype(uint16_t, H5_SIZEOF_UINT16_T); +#if H5_SIZEOF_INT16_T > 0 + vrfy_cint_type(int16_t, uint16_t, H5_SIZEOF_INT16_T); #endif -#if H5_SIZEOF_UINT32_T > 0 - vrfy_ctype(uint32_t, H5_SIZEOF_UINT32_T); +#if H5_SIZEOF_INT32_T > 0 + vrfy_cint_type(int32_t, uint32_t, H5_SIZEOF_INT32_T); #endif -#if H5_SIZEOF_UINT64_T > 0 - vrfy_ctype(uint64_t, H5_SIZEOF_UINT64_T); +#if H5_SIZEOF_INT64_T > 0 + vrfy_cint_type(int64_t, uint64_t, H5_SIZEOF_INT64_T); #endif -#if H5_SIZEOF_UINT_FAST8_T > 0 - vrfy_ctype(uint_fast8_t, H5_SIZEOF_UINT_FAST8_T); +#if H5_SIZEOF_INT_FAST8_T > 0 + vrfy_cint_type(int_fast8_t, uint_fast8_t, H5_SIZEOF_INT_FAST8_T); #endif -#if H5_SIZEOF_UINT_FAST16_T > 0 - vrfy_ctype(uint_fast16_t, H5_SIZEOF_UINT_FAST16_T); +#if H5_SIZEOF_INT_FAST16_T > 0 + vrfy_cint_type(int_fast16_t, int_fast16_t, H5_SIZEOF_INT_FAST16_T); #endif -#if H5_SIZEOF_UINT_FAST32_T > 0 - vrfy_ctype(uint_fast32_t, H5_SIZEOF_UINT_FAST32_T); +#if H5_SIZEOF_INT_FAST32_T > 0 + vrfy_cint_type(int_fast32_t, uint_fast32_t, H5_SIZEOF_INT_FAST32_T); #endif -#if H5_SIZEOF_UINT_FAST64_T > 0 - vrfy_ctype(uint_fast64_t, H5_SIZEOF_UINT_FAST64_T); +#if H5_SIZEOF_INT_FAST64_T > 0 + vrfy_cint_type(int_fast64_t, uint_fast64_t, H5_SIZEOF_INT_FAST64_T); #endif -#if H5_SIZEOF_UINT_LEAST8_T > 0 - vrfy_ctype(uint_least8_t, H5_SIZEOF_UINT_LEAST8_T); +#if H5_SIZEOF_INT_LEAST8_T > 0 + vrfy_cint_type(int_least8_t, uint_least8_t, H5_SIZEOF_INT_LEAST8_T); #endif -#if H5_SIZEOF_UINT_LEAST16_T > 0 - vrfy_ctype(uint_least16_t, H5_SIZEOF_UINT_LEAST16_T); +#if H5_SIZEOF_INT_LEAST16_T > 0 + vrfy_cint_type(int_least16_t, uint_least16_t, H5_SIZEOF_INT_LEAST16_T); #endif -#if H5_SIZEOF_UINT_LEAST32_T > 0 - vrfy_ctype(uint_least32_t, H5_SIZEOF_UINT_LEAST32_T); +#if H5_SIZEOF_INT_LEAST32_T > 0 + vrfy_cint_type(int_least32_t, uint_least32_t, H5_SIZEOF_INT_LEAST32_T); #endif -#if H5_SIZEOF_UINT_LEAST64_T > 0 - vrfy_ctype(uint_least64_t, H5_SIZEOF_UINT_LEAST64_T); +#if H5_SIZEOF_INT_LEAST64_T > 0 + vrfy_cint_type(int_least64_t, uint_least64_t, H5_SIZEOF_INT_LEAST64_T); #endif /* pseudo standard basic types */ #if H5_SIZEOF___INT64 > 0 - vrfy_ctype(__int64, H5_SIZEOF___INT64); + vrfy_cint_type(__int64, unsigned __int64, H5_SIZEOF___INT64); #endif #if H5_SIZEOF_OFF_T > 0 |