1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (c) 2012-2017 Roberto E. Vargas Caballero 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park */ 6*54fd6939SJiyong Park /* 7*54fd6939SJiyong Park * Portions copyright (c) 2018-2019, ARM Limited and Contributors. 8*54fd6939SJiyong Park * All rights reserved. 9*54fd6939SJiyong Park */ 10*54fd6939SJiyong Park 11*54fd6939SJiyong Park #ifndef STDINT_H 12*54fd6939SJiyong Park #define STDINT_H 13*54fd6939SJiyong Park 14*54fd6939SJiyong Park #include <limits.h> 15*54fd6939SJiyong Park #include <stdint_.h> 16*54fd6939SJiyong Park 17*54fd6939SJiyong Park #define INT8_MAX CHAR_MAX 18*54fd6939SJiyong Park #define INT8_MIN CHAR_MIN 19*54fd6939SJiyong Park #define UINT8_MAX UCHAR_MAX 20*54fd6939SJiyong Park 21*54fd6939SJiyong Park #define INT16_MAX SHRT_MAX 22*54fd6939SJiyong Park #define INT16_MIN SHRT_MIN 23*54fd6939SJiyong Park #define UINT16_MAX USHRT_MAX 24*54fd6939SJiyong Park 25*54fd6939SJiyong Park #define INT32_MAX INT_MAX 26*54fd6939SJiyong Park #define INT32_MIN INT_MIN 27*54fd6939SJiyong Park #define UINT32_MAX UINT_MAX 28*54fd6939SJiyong Park 29*54fd6939SJiyong Park #define INT_LEAST8_MIN INT8_MIN 30*54fd6939SJiyong Park #define INT_LEAST8_MAX INT8_MAX 31*54fd6939SJiyong Park #define UINT_LEAST8_MAX UINT8_MAX 32*54fd6939SJiyong Park 33*54fd6939SJiyong Park #define INT_LEAST16_MIN INT16_MIN 34*54fd6939SJiyong Park #define INT_LEAST16_MAX INT16_MAX 35*54fd6939SJiyong Park #define UINT_LEAST16_MAX UINT16_MAX 36*54fd6939SJiyong Park 37*54fd6939SJiyong Park #define INT_LEAST32_MIN INT32_MIN 38*54fd6939SJiyong Park #define INT_LEAST32_MAX INT32_MAX 39*54fd6939SJiyong Park #define UINT_LEAST32_MAX UINT32_MAX 40*54fd6939SJiyong Park 41*54fd6939SJiyong Park #define INT_LEAST64_MIN INT64_MIN 42*54fd6939SJiyong Park #define INT_LEAST64_MAX INT64_MAX 43*54fd6939SJiyong Park #define UINT_LEAST64_MAX UINT64_MAX 44*54fd6939SJiyong Park 45*54fd6939SJiyong Park #define INT_FAST8_MIN INT32_MIN 46*54fd6939SJiyong Park #define INT_FAST8_MAX INT32_MAX 47*54fd6939SJiyong Park #define UINT_FAST8_MAX UINT32_MAX 48*54fd6939SJiyong Park 49*54fd6939SJiyong Park #define INT_FAST16_MIN INT32_MIN 50*54fd6939SJiyong Park #define INT_FAST16_MAX INT32_MAX 51*54fd6939SJiyong Park #define UINT_FAST16_MAX UINT32_MAX 52*54fd6939SJiyong Park 53*54fd6939SJiyong Park #define INT_FAST32_MIN INT32_MIN 54*54fd6939SJiyong Park #define INT_FAST32_MAX INT32_MAX 55*54fd6939SJiyong Park #define UINT_FAST32_MAX UINT32_MAX 56*54fd6939SJiyong Park 57*54fd6939SJiyong Park #define INT_FAST64_MIN INT64_MIN 58*54fd6939SJiyong Park #define INT_FAST64_MAX INT64_MAX 59*54fd6939SJiyong Park #define UINT_FAST64_MAX UINT64_MAX 60*54fd6939SJiyong Park 61*54fd6939SJiyong Park #define INTPTR_MIN LONG_MIN 62*54fd6939SJiyong Park #define INTPTR_MAX LONG_MAX 63*54fd6939SJiyong Park #define UINTPTR_MAX ULONG_MAX 64*54fd6939SJiyong Park 65*54fd6939SJiyong Park #define INTMAX_MIN LLONG_MIN 66*54fd6939SJiyong Park #define INTMAX_MAX LLONG_MAX 67*54fd6939SJiyong Park #define UINTMAX_MAX ULLONG_MAX 68*54fd6939SJiyong Park 69*54fd6939SJiyong Park #define PTRDIFF_MIN LONG_MIN 70*54fd6939SJiyong Park #define PTRDIFF_MAX LONG_MAX 71*54fd6939SJiyong Park 72*54fd6939SJiyong Park #define SIZE_MAX ULONG_MAX 73*54fd6939SJiyong Park 74*54fd6939SJiyong Park #define INT8_C(x) x 75*54fd6939SJiyong Park #define INT16_C(x) x 76*54fd6939SJiyong Park #define INT32_C(x) x 77*54fd6939SJiyong Park 78*54fd6939SJiyong Park #define UINT8_C(x) x 79*54fd6939SJiyong Park #define UINT16_C(x) x 80*54fd6939SJiyong Park #define UINT32_C(x) x ## U 81*54fd6939SJiyong Park 82*54fd6939SJiyong Park #define INTMAX_C(x) x ## LL 83*54fd6939SJiyong Park #define UINTMAX_C(x) x ## ULL 84*54fd6939SJiyong Park 85*54fd6939SJiyong Park typedef signed char int8_t; 86*54fd6939SJiyong Park typedef short int16_t; 87*54fd6939SJiyong Park typedef int int32_t; 88*54fd6939SJiyong Park 89*54fd6939SJiyong Park typedef unsigned char uint8_t; 90*54fd6939SJiyong Park typedef unsigned short uint16_t; 91*54fd6939SJiyong Park typedef unsigned int uint32_t; 92*54fd6939SJiyong Park 93*54fd6939SJiyong Park typedef signed char int8_least_t; 94*54fd6939SJiyong Park typedef short int16_least_t; 95*54fd6939SJiyong Park typedef int int32_least_t; 96*54fd6939SJiyong Park 97*54fd6939SJiyong Park typedef unsigned char uint8_least_t; 98*54fd6939SJiyong Park typedef unsigned short uint16_least_t; 99*54fd6939SJiyong Park typedef unsigned int uint32_least_t; 100*54fd6939SJiyong Park 101*54fd6939SJiyong Park typedef int int8_fast_t; 102*54fd6939SJiyong Park typedef int int16_fast_t; 103*54fd6939SJiyong Park typedef int int32_fast_t; 104*54fd6939SJiyong Park 105*54fd6939SJiyong Park typedef unsigned int uint8_fast_t; 106*54fd6939SJiyong Park typedef unsigned int uint16_fast_t; 107*54fd6939SJiyong Park typedef unsigned int uint32_fast_t; 108*54fd6939SJiyong Park 109*54fd6939SJiyong Park typedef long intptr_t; 110*54fd6939SJiyong Park typedef unsigned long uintptr_t; 111*54fd6939SJiyong Park 112*54fd6939SJiyong Park /* 113*54fd6939SJiyong Park * Conceptually, these are supposed to be the largest integers representable in C, 114*54fd6939SJiyong Park * but GCC and Clang define them as long long for compatibility. 115*54fd6939SJiyong Park */ 116*54fd6939SJiyong Park typedef long long intmax_t; 117*54fd6939SJiyong Park typedef unsigned long long uintmax_t; 118*54fd6939SJiyong Park 119*54fd6939SJiyong Park typedef long register_t; 120*54fd6939SJiyong Park typedef unsigned long u_register_t; 121*54fd6939SJiyong Park 122*54fd6939SJiyong Park #endif /* STDINT_H */ 123