mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
7d1bf17b3d
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.
199 lines
5.8 KiB
C
199 lines
5.8 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
* Copyright by the Board of Trustees of the University of Illinois. *
|
||
* All rights reserved. *
|
||
* *
|
||
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
||
* terms governing use, modification, and redistribution, is contained in *
|
||
* the files COPYING and Copyright.html. COPYING can be found at the root *
|
||
* of the source code distribution tree; Copyright.html can be found at the *
|
||
* root level of an installed copy of the electronic HDF5 document set and *
|
||
* is linked from the top-level documents page. It can also be found at *
|
||
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
|
||
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
|
||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||
|
||
/***********************************************************
|
||
*
|
||
* Test program: tconfig
|
||
*
|
||
* Test the definitions in the H5config.h as much as possible
|
||
*
|
||
*************************************************************/
|
||
|
||
#include "hdf5.h"
|
||
#include "testhdf5.h"
|
||
|
||
/* macros definitions */
|
||
/* 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);
|
||
|
||
|
||
/*-------------------------------------------------------------------------
|
||
* Function: test_configure
|
||
*
|
||
* Purpose: Main configure definitions testing routine
|
||
*
|
||
* Return: none (error is fed back via global variable num_errs)
|
||
*
|
||
* Programmer: Albert Cheng
|
||
* September 25, 2001
|
||
*
|
||
* Modifications:
|
||
*
|
||
*-------------------------------------------------------------------------
|
||
*/
|
||
void
|
||
test_configure(void)
|
||
{
|
||
/* Output message about test being performed */
|
||
MESSAGE(5, ("Testing configure definitions\n"));
|
||
test_config_ctypes();
|
||
}
|
||
|
||
|
||
/*-------------------------------------------------------------------------
|
||
* Function: cleanup_configure
|
||
*
|
||
* Purpose: Cleanup temporary test files
|
||
*
|
||
* Return: none
|
||
*
|
||
* Programmer: Albert Cheng
|
||
* September 25, 2001
|
||
*
|
||
* Modifications:
|
||
*
|
||
*-------------------------------------------------------------------------
|
||
*/
|
||
void
|
||
cleanup_configure(void)
|
||
{
|
||
/* no file to clean */
|
||
}
|
||
|
||
|
||
/*-------------------------------------------------------------------------
|
||
* Function: test_config_ctypes
|
||
*
|
||
* Purpose: test C language data type sizes
|
||
*
|
||
* Return: none (error is fed back via global variable num_errs)
|
||
*
|
||
* Programmer: Albert Cheng
|
||
* September 25, 2001
|
||
*
|
||
* Modifications:
|
||
* Albert Cheng, 2004/10/14
|
||
* Verified both signed and unsigned int types.
|
||
*
|
||
*-------------------------------------------------------------------------
|
||
*/
|
||
void
|
||
test_config_ctypes(void)
|
||
{
|
||
/* standard C89 basic types */
|
||
/* char, signed char, unsigned char are three distinct types. */
|
||
vrfy_ctype(char, H5_SIZEOF_CHAR);
|
||
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);
|
||
|
||
/* standard C99 basic types */
|
||
#if H5_SIZEOF_LONG_DOUBLE > 0
|
||
vrfy_ctype(long double, H5_SIZEOF_LONG_DOUBLE);
|
||
#endif
|
||
|
||
#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_INT16_T > 0
|
||
vrfy_cint_type(int16_t, uint16_t, H5_SIZEOF_INT16_T);
|
||
#endif
|
||
|
||
#if H5_SIZEOF_INT32_T > 0
|
||
vrfy_cint_type(int32_t, uint32_t, H5_SIZEOF_INT32_T);
|
||
#endif
|
||
|
||
#if H5_SIZEOF_INT64_T > 0
|
||
vrfy_cint_type(int64_t, uint64_t, H5_SIZEOF_INT64_T);
|
||
#endif
|
||
|
||
#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_INT_FAST16_T > 0
|
||
vrfy_cint_type(int_fast16_t, int_fast16_t, H5_SIZEOF_INT_FAST16_T);
|
||
#endif
|
||
|
||
#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_INT_FAST64_T > 0
|
||
vrfy_cint_type(int_fast64_t, uint_fast64_t, H5_SIZEOF_INT_FAST64_T);
|
||
#endif
|
||
|
||
#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_INT_LEAST16_T > 0
|
||
vrfy_cint_type(int_least16_t, uint_least16_t, H5_SIZEOF_INT_LEAST16_T);
|
||
#endif
|
||
|
||
#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_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_cint_type(__int64, unsigned __int64, H5_SIZEOF___INT64);
|
||
#endif
|
||
|
||
#if H5_SIZEOF_OFF_T > 0
|
||
vrfy_ctype(off_t, H5_SIZEOF_OFF_T);
|
||
#endif
|
||
|
||
#if H5_SIZEOF_SIZE_T > 0
|
||
vrfy_ctype(size_t, H5_SIZEOF_SIZE_T);
|
||
#endif
|
||
|
||
#if H5_SIZEOF_SSIZE_T > 0
|
||
vrfy_ctype(ssize_t, H5_SIZEOF_SSIZE_T);
|
||
#endif
|
||
|
||
}
|