Mercurial > hg > octave-lyh > gnulib-hg
changeset 7610:e856370de785
* MODULES.html.sh (Core language properties): New module flexmember.
* modules/flexmember, m4/flexmember.m4: New files.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Mon, 06 Nov 2006 21:58:29 +0000 |
parents | 387691bf7ac7 |
children | 07a2b2d3dc76 |
files | ChangeLog MODULES.html.sh m4/flexmember.m4 modules/flexmember |
diffstat | 4 files changed, 72 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-11-06 Paul Eggert <eggert@cs.ucla.edu> + * MODULES.html.sh (Core language properties): New module flexmember. + * modules/flexmember, m4/flexmember.m4: New files. + * lib/xalloc.h (xnmalloc, xnrealloc, x2nrealloc): Now static inline functions that are identical with the old xnmalloc_inline, xnrealloc_inline, x2nrealloc_inline of lib/xmalloc.c. This is so
--- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -1704,6 +1704,7 @@ func_echo "$element" func_begin_table + func_module flexmember func_module vararrays func_end_table
new file mode 100644 --- /dev/null +++ b/m4/flexmember.m4 @@ -0,0 +1,48 @@ +# Check for flexible array member support. + +# Copyright (C) 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# Written by Paul Eggert. + +AC_DEFUN([AC_C_FLEXIBLE_ARRAY_MEMBER], +[ + AC_CACHE_CHECK([for flexible array member], + ac_cv_c_flexmember, + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stdlib.h> + #include <stdio.h> + #include <stddef.h> + struct s { int n; double d[]; };]], + [[int m = getchar (); + struct s *p = malloc (offsetof (struct s, d) + + m * sizeof (double)); + p->d[0] = 0.0; + return p->d != (double *) NULL;]])], + [ac_cv_c_flexmember=yes], + [ac_cv_c_flexmember=no])]) + if test $ac_cv_c_flexmember = yes; then + AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [], + [Define to nothing if C supports flexible array members, and to + 1 if it does not. That way, with a declaration like `struct s + { int n; double d@<:@FLEXIBLE_ARRAY_MEMBER@:>@; };', the struct hack + can be used with pre-C99 compilers.]) + else + AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], 1) + fi +])