Macro: vl_check_sign

Back to the Main Page. | # vl_check_sign | Download the M4 Source.

Synopsis

  `VL_CHECK_SIGN (TYPE, [ACTION-IF-SIGNED], [ACTION-IF-UNSIGNED], [INCLUDES])`

Version

  1.1 C_Support @ ac-archive-0.5.39

Author

  Ville Laurikari <vl@iki.fi>

Description

  Checks whether TYPE is signed or not. If no INCLUDES are specified, the default includes are used. If ACTION-IF-SIGNED is given, it is additional shell code to execute when the type is signed. If ACTION-IF-UNSIGNED is given, it is executed when the type is unsigned.

  This macro assumes that the type exists. Therefore the existence of the type should be checked before calling this macro. For example:

  `AC_CHECK_HEADERS([wchar.h])`
  `AC_CHECK_TYPE([wchar_t],,[ AC_MSG_ERROR([Type wchar_t not found.]) ])`
  `VL_CHECK_SIGN([wchar_t],`
  `[ AC_DEFINE(WCHAR_T_SIGNED, 1, [Define if wchar_t is signed]) ],`
  `[ AC_DEFINE(WCHAR_T_UNSIGNED, 1, [Define if wchar_t is unsigned]) ], [`
  `#ifdef HAVE_WCHAR_H`
  `#include <wchar.h>`
  `#endif`
  `])`

M4 Source Code

      AC_DEFUN([VL_CHECK_SIGN], [
       typename=`echo $1 | sed "s/@<:@^a-zA-Z0-9_@:>@/_/g"`
       AC_CACHE_CHECK([whether $1 is signed], vl_cv_decl_${typename}_signed, [
         AC_TRY_COMPILE([$4],
           [ int foo @<:@ 1 - 2 * !((($1) -1) < 0) @:>@ ],
           [ eval "vl_cv_decl_${typename}_signed=\"yes\"" ],
           [ eval "vl_cv_decl_${typename}_signed=\"no\"" ])])
       symbolname=`echo $1 | sed "s/@<:@^a-zA-Z0-9_@:>@/_/g" | tr "a-z" "A-Z"`
       if eval "test \"\${vl_cv_decl_${typename}_signed}\" = \"yes\""; then
         $2
       elif eval "test \"\${vl_cv_decl_${typename}_signed}\" = \"no\""; then
         $3
       fi
      ])dnl