|
|
1.1 ! root 1: /* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ! 2: This file is part of the GNU C Library. ! 3: ! 4: The GNU C Library is free software; you can redistribute it and/or ! 5: modify it under the terms of the GNU Lesser General Public ! 6: License as published by the Free Software Foundation; either ! 7: version 2.1 of the License, or (at your option) any later version. ! 8: ! 9: The GNU C Library is distributed in the hope that it will be useful, ! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! 12: Lesser General Public License for more details. ! 13: ! 14: You should have received a copy of the GNU Lesser General Public ! 15: License along with the GNU C Library; if not, write to the Free ! 16: Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ! 17: 02111-1307 USA. */ ! 18: ! 19: /* ! 20: * ISO C99: 7.18 Integer types <stdint.h> ! 21: */ ! 22: ! 23: #ifndef _STDINT_H ! 24: #define _STDINT_H 1 ! 25: ! 26: //#include <features.h> ! 27: #include <bits/wchar.h> ! 28: #include <bits/wordsize.h> ! 29: ! 30: /* Exact integral types. */ ! 31: ! 32: /* Signed. */ ! 33: ! 34: /* There is some amount of overlap with <sys/types.h> as known by inet code */ ! 35: #ifndef __int8_t_defined ! 36: # define __int8_t_defined ! 37: typedef signed char int8_t; ! 38: typedef short int int16_t; ! 39: typedef int int32_t; ! 40: # if __WORDSIZE == 64 ! 41: typedef long int int64_t; ! 42: # else ! 43: __extension__ ! 44: typedef long long int int64_t; ! 45: # endif ! 46: #endif ! 47: ! 48: /* Unsigned. */ ! 49: typedef unsigned char uint8_t; ! 50: typedef unsigned short int uint16_t; ! 51: #ifndef __uint32_t_defined ! 52: typedef unsigned int uint32_t; ! 53: # define __uint32_t_defined ! 54: #endif ! 55: #if __WORDSIZE == 64 ! 56: typedef unsigned long int uint64_t; ! 57: #else ! 58: __extension__ ! 59: typedef unsigned long long int uint64_t; ! 60: #endif ! 61: ! 62: ! 63: /* Small types. */ ! 64: ! 65: /* Signed. */ ! 66: typedef signed char int_least8_t; ! 67: typedef short int int_least16_t; ! 68: typedef int int_least32_t; ! 69: #if __WORDSIZE == 64 ! 70: typedef long int int_least64_t; ! 71: #else ! 72: __extension__ ! 73: typedef long long int int_least64_t; ! 74: #endif ! 75: ! 76: /* Unsigned. */ ! 77: typedef unsigned char uint_least8_t; ! 78: typedef unsigned short int uint_least16_t; ! 79: typedef unsigned int uint_least32_t; ! 80: #if __WORDSIZE == 64 ! 81: typedef unsigned long int uint_least64_t; ! 82: #else ! 83: __extension__ ! 84: typedef unsigned long long int uint_least64_t; ! 85: #endif ! 86: ! 87: ! 88: /* Fast types. */ ! 89: ! 90: /* Signed. */ ! 91: typedef signed char int_fast8_t; ! 92: #if __WORDSIZE == 64 ! 93: typedef long int int_fast16_t; ! 94: typedef long int int_fast32_t; ! 95: typedef long int int_fast64_t; ! 96: #else ! 97: typedef int int_fast16_t; ! 98: typedef int int_fast32_t; ! 99: __extension__ ! 100: typedef long long int int_fast64_t; ! 101: #endif ! 102: ! 103: /* Unsigned. */ ! 104: typedef unsigned char uint_fast8_t; ! 105: #if __WORDSIZE == 64 ! 106: typedef unsigned long int uint_fast16_t; ! 107: typedef unsigned long int uint_fast32_t; ! 108: typedef unsigned long int uint_fast64_t; ! 109: #else ! 110: typedef unsigned int uint_fast16_t; ! 111: typedef unsigned int uint_fast32_t; ! 112: __extension__ ! 113: typedef unsigned long long int uint_fast64_t; ! 114: #endif ! 115: ! 116: ! 117: /* Types for `void *' pointers. */ ! 118: #if __WORDSIZE == 64 ! 119: # ifndef __intptr_t_defined ! 120: typedef long int intptr_t; ! 121: # define __intptr_t_defined ! 122: # endif ! 123: typedef unsigned long int uintptr_t; ! 124: #else ! 125: # ifndef __intptr_t_defined ! 126: typedef int intptr_t; ! 127: # define __intptr_t_defined ! 128: # endif ! 129: typedef unsigned int uintptr_t; ! 130: #endif ! 131: ! 132: ! 133: /* Largest integral types. */ ! 134: #if __WORDSIZE == 64 ! 135: typedef long int intmax_t; ! 136: typedef unsigned long int uintmax_t; ! 137: #else ! 138: __extension__ ! 139: typedef long long int intmax_t; ! 140: __extension__ ! 141: typedef unsigned long long int uintmax_t; ! 142: #endif ! 143: ! 144: ! 145: /* The ISO C99 standard specifies that in C++ implementations these ! 146: macros should only be defined if explicitly requested. */ ! 147: #if !defined __cplusplus || defined __STDC_LIMIT_MACROS ! 148: ! 149: # if __WORDSIZE == 64 ! 150: # define __INT64_C(c) c ## L ! 151: # define __UINT64_C(c) c ## UL ! 152: # else ! 153: # define __INT64_C(c) c ## LL ! 154: # define __UINT64_C(c) c ## ULL ! 155: # endif ! 156: ! 157: /* Limits of integral types. */ ! 158: ! 159: /* Minimum of signed integral types. */ ! 160: # define INT8_MIN (-128) ! 161: # define INT16_MIN (-32767-1) ! 162: # define INT32_MIN (-2147483647-1) ! 163: # define INT64_MIN (-__INT64_C(9223372036854775807)-1) ! 164: /* Maximum of signed integral types. */ ! 165: # define INT8_MAX (127) ! 166: # define INT16_MAX (32767) ! 167: # define INT32_MAX (2147483647) ! 168: # define INT64_MAX (__INT64_C(9223372036854775807)) ! 169: ! 170: /* Maximum of unsigned integral types. */ ! 171: # define UINT8_MAX (255) ! 172: # define UINT16_MAX (65535) ! 173: # define UINT32_MAX (4294967295U) ! 174: # define UINT64_MAX (__UINT64_C(18446744073709551615)) ! 175: ! 176: ! 177: /* Minimum of signed integral types having a minimum size. */ ! 178: # define INT_LEAST8_MIN (-128) ! 179: # define INT_LEAST16_MIN (-32767-1) ! 180: # define INT_LEAST32_MIN (-2147483647-1) ! 181: # define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1) ! 182: /* Maximum of signed integral types having a minimum size. */ ! 183: # define INT_LEAST8_MAX (127) ! 184: # define INT_LEAST16_MAX (32767) ! 185: # define INT_LEAST32_MAX (2147483647) ! 186: # define INT_LEAST64_MAX (__INT64_C(9223372036854775807)) ! 187: ! 188: /* Maximum of unsigned integral types having a minimum size. */ ! 189: # define UINT_LEAST8_MAX (255) ! 190: # define UINT_LEAST16_MAX (65535) ! 191: # define UINT_LEAST32_MAX (4294967295U) ! 192: # define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615)) ! 193: ! 194: ! 195: /* Minimum of fast signed integral types having a minimum size. */ ! 196: # define INT_FAST8_MIN (-128) ! 197: # if __WORDSIZE == 64 ! 198: # define INT_FAST16_MIN (-9223372036854775807L-1) ! 199: # define INT_FAST32_MIN (-9223372036854775807L-1) ! 200: # else ! 201: # define INT_FAST16_MIN (-2147483647-1) ! 202: # define INT_FAST32_MIN (-2147483647-1) ! 203: # endif ! 204: # define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1) ! 205: /* Maximum of fast signed integral types having a minimum size. */ ! 206: # define INT_FAST8_MAX (127) ! 207: # if __WORDSIZE == 64 ! 208: # define INT_FAST16_MAX (9223372036854775807L) ! 209: # define INT_FAST32_MAX (9223372036854775807L) ! 210: # else ! 211: # define INT_FAST16_MAX (2147483647) ! 212: # define INT_FAST32_MAX (2147483647) ! 213: # endif ! 214: # define INT_FAST64_MAX (__INT64_C(9223372036854775807)) ! 215: ! 216: /* Maximum of fast unsigned integral types having a minimum size. */ ! 217: # define UINT_FAST8_MAX (255) ! 218: # if __WORDSIZE == 64 ! 219: # define UINT_FAST16_MAX (18446744073709551615UL) ! 220: # define UINT_FAST32_MAX (18446744073709551615UL) ! 221: # else ! 222: # define UINT_FAST16_MAX (4294967295U) ! 223: # define UINT_FAST32_MAX (4294967295U) ! 224: # endif ! 225: # define UINT_FAST64_MAX (__UINT64_C(18446744073709551615)) ! 226: ! 227: ! 228: /* Values to test for integral types holding `void *' pointer. */ ! 229: # if __WORDSIZE == 64 ! 230: # define INTPTR_MIN (-9223372036854775807L-1) ! 231: # define INTPTR_MAX (9223372036854775807L) ! 232: # define UINTPTR_MAX (18446744073709551615UL) ! 233: # else ! 234: # define INTPTR_MIN (-2147483647-1) ! 235: # define INTPTR_MAX (2147483647) ! 236: # define UINTPTR_MAX (4294967295U) ! 237: # endif ! 238: ! 239: ! 240: /* Minimum for largest signed integral type. */ ! 241: # define INTMAX_MIN (-__INT64_C(9223372036854775807)-1) ! 242: /* Maximum for largest signed integral type. */ ! 243: # define INTMAX_MAX (__INT64_C(9223372036854775807)) ! 244: ! 245: /* Maximum for largest unsigned integral type. */ ! 246: # define UINTMAX_MAX (__UINT64_C(18446744073709551615)) ! 247: ! 248: ! 249: /* Limits of other integer types. */ ! 250: ! 251: /* Limits of `ptrdiff_t' type. */ ! 252: # if __WORDSIZE == 64 ! 253: # define PTRDIFF_MIN (-9223372036854775807L-1) ! 254: # define PTRDIFF_MAX (9223372036854775807L) ! 255: # else ! 256: # define PTRDIFF_MIN (-2147483647-1) ! 257: # define PTRDIFF_MAX (2147483647) ! 258: # endif ! 259: ! 260: /* Limits of `sig_atomic_t'. */ ! 261: # define SIG_ATOMIC_MIN (-2147483647-1) ! 262: # define SIG_ATOMIC_MAX (2147483647) ! 263: ! 264: /* Limit of `size_t' type. */ ! 265: # if __WORDSIZE == 64 ! 266: # define SIZE_MAX (18446744073709551615UL) ! 267: # else ! 268: # define SIZE_MAX (4294967295U) ! 269: # endif ! 270: ! 271: /* Limits of `wchar_t'. */ ! 272: # ifndef WCHAR_MIN ! 273: /* These constants might also be defined in <wchar.h>. */ ! 274: # define WCHAR_MIN __WCHAR_MIN ! 275: # define WCHAR_MAX __WCHAR_MAX ! 276: # endif ! 277: ! 278: /* Limits of `wint_t'. */ ! 279: # define WINT_MIN (0u) ! 280: # define WINT_MAX (4294967295u) ! 281: ! 282: #endif /* C++ && limit macros */ ! 283: ! 284: ! 285: /* The ISO C99 standard specifies that in C++ implementations these ! 286: should only be defined if explicitly requested. */ ! 287: #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS ! 288: ! 289: /* Signed. */ ! 290: # define INT8_C(c) c ! 291: # define INT16_C(c) c ! 292: # define INT32_C(c) c ! 293: # if __WORDSIZE == 64 ! 294: # define INT64_C(c) c ## L ! 295: # else ! 296: # define INT64_C(c) c ## LL ! 297: # endif ! 298: ! 299: /* Unsigned. */ ! 300: # define UINT8_C(c) c ## U ! 301: # define UINT16_C(c) c ## U ! 302: # define UINT32_C(c) c ## U ! 303: # if __WORDSIZE == 64 ! 304: # define UINT64_C(c) c ## UL ! 305: # else ! 306: # define UINT64_C(c) c ## ULL ! 307: # endif ! 308: ! 309: /* Maximal type. */ ! 310: # if __WORDSIZE == 64 ! 311: # define INTMAX_C(c) c ## L ! 312: # define UINTMAX_C(c) c ## UL ! 313: # else ! 314: # define INTMAX_C(c) c ## LL ! 315: # define UINTMAX_C(c) c ## ULL ! 316: # endif ! 317: ! 318: #endif /* C++ && constant macros */ ! 319: ! 320: #endif /* stdint.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.