Blame gnulib/lib/stddef.in.h

Packit eba2e2
/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
Packit eba2e2
Packit eba2e2
   Copyright (C) 2009-2014 Free Software Foundation, Inc.
Packit eba2e2
Packit eba2e2
   This program is free software; you can redistribute it and/or modify
Packit eba2e2
   it under the terms of the GNU General Public License as published by
Packit eba2e2
   the Free Software Foundation; either version 3, or (at your option)
Packit eba2e2
   any later version.
Packit eba2e2
Packit eba2e2
   This program is distributed in the hope that it will be useful,
Packit eba2e2
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit eba2e2
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit eba2e2
   GNU General Public License for more details.
Packit eba2e2
Packit eba2e2
   You should have received a copy of the GNU General Public License
Packit eba2e2
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit eba2e2
Packit eba2e2
/* Written by Eric Blake.  */
Packit eba2e2
Packit eba2e2
/*
Packit eba2e2
 * POSIX 2008 <stddef.h> for platforms that have issues.
Packit eba2e2
 * <http://www.opengroup.org/susv3xbd/stddef.h.html>
Packit eba2e2
 */
Packit eba2e2
Packit eba2e2
#if __GNUC__ >= 3
Packit eba2e2
@PRAGMA_SYSTEM_HEADER@
Packit eba2e2
#endif
Packit eba2e2
@PRAGMA_COLUMNS@
Packit eba2e2
Packit eba2e2
#if defined __need_wchar_t || defined __need_size_t  \
Packit eba2e2
  || defined __need_ptrdiff_t || defined __need_NULL \
Packit eba2e2
  || defined __need_wint_t
Packit eba2e2
/* Special invocation convention inside gcc header files.  In
Packit eba2e2
   particular, gcc provides a version of <stddef.h> that blindly
Packit eba2e2
   redefines NULL even when __need_wint_t was defined, even though
Packit eba2e2
   wint_t is not normally provided by <stddef.h>.  Hence, we must
Packit eba2e2
   remember if special invocation has ever been used to obtain wint_t,
Packit eba2e2
   in which case we need to clean up NULL yet again.  */
Packit eba2e2
Packit eba2e2
# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
Packit eba2e2
#  ifdef __need_wint_t
Packit eba2e2
#   undef _@GUARD_PREFIX@_STDDEF_H
Packit eba2e2
#   define _GL_STDDEF_WINT_T
Packit eba2e2
#  endif
Packit eba2e2
#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
Packit eba2e2
# endif
Packit eba2e2
Packit eba2e2
#else
Packit eba2e2
/* Normal invocation convention.  */
Packit eba2e2
Packit eba2e2
# ifndef _@GUARD_PREFIX@_STDDEF_H
Packit eba2e2
Packit eba2e2
/* The include_next requires a split double-inclusion guard.  */
Packit eba2e2
Packit eba2e2
#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
Packit eba2e2
Packit eba2e2
#  ifndef _@GUARD_PREFIX@_STDDEF_H
Packit eba2e2
#   define _@GUARD_PREFIX@_STDDEF_H
Packit eba2e2
Packit eba2e2
/* On NetBSD 5.0, the definition of NULL lacks proper parentheses.  */
Packit eba2e2
#if @REPLACE_NULL@
Packit eba2e2
# undef NULL
Packit eba2e2
# ifdef __cplusplus
Packit eba2e2
   /* ISO C++ says that the macro NULL must expand to an integer constant
Packit eba2e2
      expression, hence '((void *) 0)' is not allowed in C++.  */
Packit eba2e2
#  if __GNUG__ >= 3
Packit eba2e2
    /* GNU C++ has a __null macro that behaves like an integer ('int' or
Packit eba2e2
       'long') but has the same size as a pointer.  Use that, to avoid
Packit eba2e2
       warnings.  */
Packit eba2e2
#   define NULL __null
Packit eba2e2
#  else
Packit eba2e2
#   define NULL 0L
Packit eba2e2
#  endif
Packit eba2e2
# else
Packit eba2e2
#  define NULL ((void *) 0)
Packit eba2e2
# endif
Packit eba2e2
#endif
Packit eba2e2
Packit eba2e2
/* Some platforms lack wchar_t.  */
Packit eba2e2
#if !@HAVE_WCHAR_T@
Packit eba2e2
# define wchar_t int
Packit eba2e2
#endif
Packit eba2e2
Packit eba2e2
#  endif /* _@GUARD_PREFIX@_STDDEF_H */
Packit eba2e2
# endif /* _@GUARD_PREFIX@_STDDEF_H */
Packit eba2e2
#endif /* __need_XXX */