Blame lib/limits.in.h

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