bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

new module flexmember to test for flexible array member support


From: Paul Eggert
Subject: new module flexmember to test for flexible array member support
Date: Mon, 06 Nov 2006 13:59:35 -0800
User-agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux)

I installed this.  Like vararrays, it should be migrated into Autoconf,
which is also on my list of things to do.

2006-11-06  Paul Eggert  <address@hidden>

        * MODULES.html.sh (Core language properties): New module flexmember.
        * modules/flexmember, m4/flexmember.m4: New files.

Index: MODULES.html.sh
===================================================================
RCS file: /cvsroot/gnulib/gnulib/MODULES.html.sh,v
retrieving revision 1.158
diff -u -r1.158 MODULES.html.sh
--- MODULES.html.sh     6 Nov 2006 18:21:35 -0000       1.158
+++ MODULES.html.sh     6 Nov 2006 21:58:05 -0000
@@ -1704,6 +1704,7 @@
   func_echo "$element"

   func_begin_table
+  func_module flexmember
   func_module vararrays
   func_end_table

Index: modules/flexmember
===================================================================
RCS file: modules/flexmember
diff -N modules/flexmember
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ modules/flexmember  6 Nov 2006 21:58:05 -0000
@@ -0,0 +1,20 @@
+Description:
+Flexible array member support
+
+Files:
+m4/flexmember.m4
+
+Depends-on:
+
+configure.ac:
+AC_C_FLEXIBLE_ARRAY_MEMBER
+
+Makefile.am:
+
+Include:
+
+License:
+GPL
+
+Maintainer:
+Paul Eggert, Jim Meyering
Index: m4/flexmember.m4
===================================================================
RCS file: m4/flexmember.m4
diff -N m4/flexmember.m4
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ m4/flexmember.m4    6 Nov 2006 21:58:05 -0000
@@ -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
+])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]