Google

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