Blame gl/limits.in.h

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