Blame gl/limits.in.h

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