Blame gnulib/lib/limits.in.h

Packit Service a2ae7a
/* A GNU-like <limits.h>.
Packit Service a2ae7a
Packit Service a2ae7a
   Copyright 2016-2019 Free Software Foundation, Inc.
Packit Service a2ae7a
Packit Service a2ae7a
   This program is free software; you can redistribute it and/or
Packit Service a2ae7a
   modify it under the terms of the GNU Lesser General Public License
Packit Service a2ae7a
   as published by the Free Software Foundation; either version 2.1, or
Packit Service a2ae7a
   (at your option) any later version.
Packit Service a2ae7a
Packit Service a2ae7a
   This program is distributed in the hope that it will be useful,
Packit Service a2ae7a
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service a2ae7a
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service a2ae7a
   GNU Lesser General Public License for more details.
Packit Service a2ae7a
Packit Service a2ae7a
   You should have received a copy of the GNU Lesser General Public License
Packit Service a2ae7a
   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
Packit Service a2ae7a
Packit Service a2ae7a
#ifndef _@GUARD_PREFIX@_LIMITS_H
Packit Service a2ae7a
Packit Service a2ae7a
#if __GNUC__ >= 3
Packit Service a2ae7a
@PRAGMA_SYSTEM_HEADER@
Packit Service a2ae7a
#endif
Packit Service a2ae7a
@PRAGMA_COLUMNS@
Packit Service a2ae7a
Packit Service a2ae7a
/* The include_next requires a split double-inclusion guard.  */
Packit Service a2ae7a
#@INCLUDE_NEXT@ @NEXT_LIMITS_H@
Packit Service a2ae7a
Packit Service a2ae7a
#ifndef _@GUARD_PREFIX@_LIMITS_H
Packit Service a2ae7a
#define _@GUARD_PREFIX@_LIMITS_H
Packit Service a2ae7a
Packit Service a2ae7a
#ifndef LLONG_MIN
Packit Service a2ae7a
# if defined LONG_LONG_MIN /* HP-UX 11.31 */
Packit Service a2ae7a
#  define LLONG_MIN LONG_LONG_MIN
Packit Service a2ae7a
# elif defined LONGLONG_MIN /* IRIX 6.5 */
Packit Service a2ae7a
#  define LLONG_MIN LONGLONG_MIN
Packit Service a2ae7a
# elif defined __GNUC__
Packit Service a2ae7a
#  define LLONG_MIN (- __LONG_LONG_MAX__ - 1LL)
Packit Service a2ae7a
# endif
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifndef LLONG_MAX
Packit Service a2ae7a
# if defined LONG_LONG_MAX /* HP-UX 11.31 */
Packit Service a2ae7a
#  define LLONG_MAX LONG_LONG_MAX
Packit Service a2ae7a
# elif defined LONGLONG_MAX /* IRIX 6.5 */
Packit Service a2ae7a
#  define LLONG_MAX LONGLONG_MAX
Packit Service a2ae7a
# elif defined __GNUC__
Packit Service a2ae7a
#  define LLONG_MAX __LONG_LONG_MAX__
Packit Service a2ae7a
# endif
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifndef ULLONG_MAX
Packit Service a2ae7a
# if defined ULONG_LONG_MAX /* HP-UX 11.31 */
Packit Service a2ae7a
#  define ULLONG_MAX ULONG_LONG_MAX
Packit Service a2ae7a
# elif defined ULONGLONG_MAX /* IRIX 6.5 */
Packit Service a2ae7a
#  define ULLONG_MAX ULONGLONG_MAX
Packit Service a2ae7a
# elif defined __GNUC__
Packit Service a2ae7a
#  define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL)
Packit Service a2ae7a
# endif
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
/* The number of usable bits in an unsigned or signed integer type
Packit Service a2ae7a
   with minimum value MIN and maximum value MAX, as an int expression
Packit Service a2ae7a
   suitable in #if.  Cover all known practical hosts.  This
Packit Service a2ae7a
   implementation exploits the fact that MAX is 1 less than a power of
Packit Service a2ae7a
   2, and merely counts the number of 1 bits in MAX; "COBn" means
Packit Service a2ae7a
   "count the number of 1 bits in the low-order n bits").  */
Packit Service a2ae7a
#define _GL_INTEGER_WIDTH(min, max) (((min) < 0) + _GL_COB128 (max))
Packit Service a2ae7a
#define _GL_COB128(n) (_GL_COB64 ((n) >> 31 >> 31 >> 2) + _GL_COB64 (n))
Packit Service a2ae7a
#define _GL_COB64(n) (_GL_COB32 ((n) >> 31 >> 1) + _GL_COB32 (n))
Packit Service a2ae7a
#define _GL_COB32(n) (_GL_COB16 ((n) >> 16) + _GL_COB16 (n))
Packit Service a2ae7a
#define _GL_COB16(n) (_GL_COB8 ((n) >> 8) + _GL_COB8 (n))
Packit Service a2ae7a
#define _GL_COB8(n) (_GL_COB4 ((n) >> 4) + _GL_COB4 (n))
Packit Service a2ae7a
#define _GL_COB4(n) (!!((n) & 8) + !!((n) & 4) + !!((n) & 2) + !!((n) & 1))
Packit Service a2ae7a
Packit Service a2ae7a
#ifndef WORD_BIT
Packit Service a2ae7a
/* Assume 'int' is 32 bits wide.  */
Packit Service a2ae7a
# define WORD_BIT 32
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifndef LONG_BIT
Packit Service a2ae7a
/* Assume 'long' is 32 or 64 bits wide.  */
Packit Service a2ae7a
# if LONG_MAX == INT_MAX
Packit Service a2ae7a
#  define LONG_BIT 32
Packit Service a2ae7a
# else
Packit Service a2ae7a
#  define LONG_BIT 64
Packit Service a2ae7a
# endif
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
/* Macros specified by ISO/IEC TS 18661-1:2014.  */
Packit Service a2ae7a
Packit Service a2ae7a
#if (! defined ULLONG_WIDTH                                             \
Packit Service a2ae7a
     && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
Packit Service a2ae7a
# define CHAR_WIDTH _GL_INTEGER_WIDTH (CHAR_MIN, CHAR_MAX)
Packit Service a2ae7a
# define SCHAR_WIDTH _GL_INTEGER_WIDTH (SCHAR_MIN, SCHAR_MAX)
Packit Service a2ae7a
# define UCHAR_WIDTH _GL_INTEGER_WIDTH (0, UCHAR_MAX)
Packit Service a2ae7a
# define SHRT_WIDTH _GL_INTEGER_WIDTH (SHRT_MIN, SHRT_MAX)
Packit Service a2ae7a
# define USHRT_WIDTH _GL_INTEGER_WIDTH (0, USHRT_MAX)
Packit Service a2ae7a
# define INT_WIDTH _GL_INTEGER_WIDTH (INT_MIN, INT_MAX)
Packit Service a2ae7a
# define UINT_WIDTH _GL_INTEGER_WIDTH (0, UINT_MAX)
Packit Service a2ae7a
# define LONG_WIDTH _GL_INTEGER_WIDTH (LONG_MIN, LONG_MAX)
Packit Service a2ae7a
# define ULONG_WIDTH _GL_INTEGER_WIDTH (0, ULONG_MAX)
Packit Service a2ae7a
# define LLONG_WIDTH _GL_INTEGER_WIDTH (LLONG_MIN, LLONG_MAX)
Packit Service a2ae7a
# define ULLONG_WIDTH _GL_INTEGER_WIDTH (0, ULLONG_MAX)
Packit Service a2ae7a
#endif /* !ULLONG_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
Packit Service a2ae7a
Packit Service a2ae7a
#endif /* _@GUARD_PREFIX@_LIMITS_H */
Packit Service a2ae7a
#endif /* _@GUARD_PREFIX@_LIMITS_H */