dnl @synopsis XERCES_INT_TYPES dnl dnl Determines what int types to use for various dnl Xerces standard integer types. dnl dnl @category C dnl @author James Berry dnl @version 2005-06-07 dnl @license AllPermissive dnl dnl $Id$ AC_DEFUN([XERCES_INT_TYPES], [ AC_CHECK_HEADERS([inttypes.h]) AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_CHECK_SIZEOF(__int64) AC_CHECK_TYPE(int16_t) AC_CHECK_TYPE(int32_t) AC_CHECK_TYPE(int64_t) AC_CHECK_TYPE(uint16_t) AC_CHECK_TYPE(uint32_t) AC_CHECK_TYPE(uint64_t) # # Select a signed 16 bit integer type # AC_CACHE_CHECK([for an appropriate signed 16 bit integer type], [xerces_cv_type_s16bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int16_t = xyes], [xerces_cv_type_s16bit_int=int16_t], [ case $ac_cv_sizeof_int in 2*) xerces_cv_type_s16bit_int=int;; *) case $ac_cv_sizeof_short in 2*) xerces_cv_type_s16bit_int=short;; *) AC_MSG_ERROR([Couldn't find a signed 16 bit int type]);; esac ;; esac ]) ]) # # Select an unsigned 16 bit integer type # AC_CACHE_CHECK([for an appropriate unsigned 16 bit integer type], [xerces_cv_type_u16bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint16_t = xyes], [xerces_cv_type_u16bit_int=uint16_t], [ case $ac_cv_sizeof_int in 2*) xerces_cv_type_u16bit_int="unsigned int";; *) case $ac_cv_sizeof_short in 2*) xerces_cv_type_u16bit_int="unsigned short";; *) AC_MSG_ERROR([Couldn't find an unsigned 16 bit int type]);; esac ;; esac ]) ]) # # Select a signed 32 bit integer type # AC_CACHE_CHECK([for an appropriate signed 32 bit integer type], [xerces_cv_type_s32bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int32_t = xyes], [xerces_cv_type_s32bit_int=int32_t], [ case $ac_cv_sizeof_int in 4*) xerces_cv_type_s32bit_int=int;; *) case $ac_cv_sizeof_long in 4*) xerces_cv_type_s32bit_int=long;; *) AC_MSG_ERROR([Couldn't find a signed 32 bit int type]);; esac ;; esac ]) ]) # # Select an unsigned 32 bit integer type # AC_CACHE_CHECK([for an appropriate unsigned 32 bit integer type], [xerces_cv_type_u32bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint32_t = xyes], [xerces_cv_type_u32bit_int=uint32_t], [ case $ac_cv_sizeof_int in 4*) xerces_cv_type_u32bit_int="unsigned int";; *) case $ac_cv_sizeof_long in 4*) xerces_cv_type_u32bit_int="unsigned long";; *) AC_MSG_ERROR([Couldn't find an unsigned 32 bit int type]);; esac ;; esac ]) ]) # # Select an signed 64 bit integer type # AC_CACHE_CHECK([for an appropriate signed 64 bit integer type], [xerces_cv_type_s64bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int64_t = xyes], [ xerces_cv_type_s64bit_int=int64_t xerces_cv_sizeof_int64=8 ], [ case $ac_cv_sizeof_int in 8*) xerces_cv_type_s64bit_int="int" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof_long in 8*) xerces_cv_type_s64bit_int="long" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof_long_long in 8*) xerces_cv_type_s64bit_int="long long" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof___int64 in 8*) xerces_cv_type_s64bit_int="__int64" xerces_cv_sizeof_int64=8 ;; *) xerces_cv_type_s64bit_int=$xerces_cv_type_s32bit_int xerces_cv_sizeof_int64=4 ;; esac ;; esac ;; esac ;; esac ]) ]) # # Select an unsigned 64 bit integer type # AC_CACHE_CHECK([for an appropriate unsigned 64 bit integer type], [xerces_cv_type_u64bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint64_t = xyes], [xerces_cv_type_u64bit_int=uint64_t], [ case $ac_cv_sizeof_int in 8*) xerces_cv_type_u64bit_int="unsigned int";; *) case $ac_cv_sizeof_long in 8*) xerces_cv_type_u64bit_int="unsigned long";; *) case $ac_cv_sizeof_long_long in 8*) xerces_cv_type_u64bit_int="unsigned long long";; *) case $ac_cv_sizeof___int64 in 8*) xerces_cv_type_u64bit_int="unsigned __int64";; *) xerces_cv_type_u64bit_int=$xerces_cv_type_u32bit_int;; esac ;; esac ;; esac ;; esac ]) ]) AC_DEFINE_UNQUOTED([XERCES_S16BIT_INT], $xerces_cv_type_s16bit_int, [An appropriate signed 16 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_U16BIT_INT], $xerces_cv_type_u16bit_int, [An appropriate unsigned 16 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_S32BIT_INT], $xerces_cv_type_s32bit_int, [An appropriate signed 32 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_U32BIT_INT], $xerces_cv_type_u32bit_int, [An appropriate unsigned 32 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_S64BIT_INT], $xerces_cv_type_s64bit_int, [An appropriate signed 64 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_U64BIT_INT], $xerces_cv_type_u64bit_int, [An appropriate unsigned 64 bit integer type]) ] )