xref: /aosp_15_r20/bionic/libc/include/stdint.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * Copyright (C) 2008 The Android Open Source Project
3*8d67ca89SAndroid Build Coastguard Worker  * All rights reserved.
4*8d67ca89SAndroid Build Coastguard Worker  *
5*8d67ca89SAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*8d67ca89SAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
7*8d67ca89SAndroid Build Coastguard Worker  * are met:
8*8d67ca89SAndroid Build Coastguard Worker  *  * Redistributions of source code must retain the above copyright
9*8d67ca89SAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
10*8d67ca89SAndroid Build Coastguard Worker  *  * Redistributions in binary form must reproduce the above copyright
11*8d67ca89SAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in
12*8d67ca89SAndroid Build Coastguard Worker  *    the documentation and/or other materials provided with the
13*8d67ca89SAndroid Build Coastguard Worker  *    distribution.
14*8d67ca89SAndroid Build Coastguard Worker  *
15*8d67ca89SAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16*8d67ca89SAndroid Build Coastguard Worker  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17*8d67ca89SAndroid Build Coastguard Worker  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18*8d67ca89SAndroid Build Coastguard Worker  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19*8d67ca89SAndroid Build Coastguard Worker  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20*8d67ca89SAndroid Build Coastguard Worker  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21*8d67ca89SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22*8d67ca89SAndroid Build Coastguard Worker  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23*8d67ca89SAndroid Build Coastguard Worker  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24*8d67ca89SAndroid Build Coastguard Worker  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25*8d67ca89SAndroid Build Coastguard Worker  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*8d67ca89SAndroid Build Coastguard Worker  * SUCH DAMAGE.
27*8d67ca89SAndroid Build Coastguard Worker  */
28*8d67ca89SAndroid Build Coastguard Worker 
29*8d67ca89SAndroid Build Coastguard Worker #ifndef _STDINT_H
30*8d67ca89SAndroid Build Coastguard Worker #define _STDINT_H
31*8d67ca89SAndroid Build Coastguard Worker 
32*8d67ca89SAndroid Build Coastguard Worker #include <sys/cdefs.h>
33*8d67ca89SAndroid Build Coastguard Worker 
34*8d67ca89SAndroid Build Coastguard Worker #include <bits/wchar_limits.h>
35*8d67ca89SAndroid Build Coastguard Worker #include <stddef.h>
36*8d67ca89SAndroid Build Coastguard Worker 
37*8d67ca89SAndroid Build Coastguard Worker typedef signed char __int8_t;
38*8d67ca89SAndroid Build Coastguard Worker typedef unsigned char __uint8_t;
39*8d67ca89SAndroid Build Coastguard Worker typedef short __int16_t;
40*8d67ca89SAndroid Build Coastguard Worker typedef unsigned short __uint16_t;
41*8d67ca89SAndroid Build Coastguard Worker typedef int __int32_t;
42*8d67ca89SAndroid Build Coastguard Worker typedef unsigned int __uint32_t;
43*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
44*8d67ca89SAndroid Build Coastguard Worker typedef long __int64_t;
45*8d67ca89SAndroid Build Coastguard Worker typedef unsigned long __uint64_t;
46*8d67ca89SAndroid Build Coastguard Worker #else
47*8d67ca89SAndroid Build Coastguard Worker typedef long long __int64_t;
48*8d67ca89SAndroid Build Coastguard Worker typedef unsigned long long __uint64_t;
49*8d67ca89SAndroid Build Coastguard Worker #endif
50*8d67ca89SAndroid Build Coastguard Worker 
51*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
52*8d67ca89SAndroid Build Coastguard Worker typedef long __intptr_t;
53*8d67ca89SAndroid Build Coastguard Worker typedef unsigned long __uintptr_t;
54*8d67ca89SAndroid Build Coastguard Worker #else
55*8d67ca89SAndroid Build Coastguard Worker typedef int __intptr_t;
56*8d67ca89SAndroid Build Coastguard Worker typedef unsigned int __uintptr_t;
57*8d67ca89SAndroid Build Coastguard Worker #endif
58*8d67ca89SAndroid Build Coastguard Worker 
59*8d67ca89SAndroid Build Coastguard Worker typedef __int8_t      int8_t;
60*8d67ca89SAndroid Build Coastguard Worker typedef __uint8_t     uint8_t;
61*8d67ca89SAndroid Build Coastguard Worker 
62*8d67ca89SAndroid Build Coastguard Worker typedef __int16_t     int16_t;
63*8d67ca89SAndroid Build Coastguard Worker typedef __uint16_t    uint16_t;
64*8d67ca89SAndroid Build Coastguard Worker 
65*8d67ca89SAndroid Build Coastguard Worker typedef __int32_t     int32_t;
66*8d67ca89SAndroid Build Coastguard Worker typedef __uint32_t    uint32_t;
67*8d67ca89SAndroid Build Coastguard Worker 
68*8d67ca89SAndroid Build Coastguard Worker typedef __int64_t     int64_t;
69*8d67ca89SAndroid Build Coastguard Worker typedef __uint64_t    uint64_t;
70*8d67ca89SAndroid Build Coastguard Worker 
71*8d67ca89SAndroid Build Coastguard Worker typedef __intptr_t    intptr_t;
72*8d67ca89SAndroid Build Coastguard Worker typedef __uintptr_t   uintptr_t;
73*8d67ca89SAndroid Build Coastguard Worker 
74*8d67ca89SAndroid Build Coastguard Worker typedef int8_t        int_least8_t;
75*8d67ca89SAndroid Build Coastguard Worker typedef uint8_t       uint_least8_t;
76*8d67ca89SAndroid Build Coastguard Worker 
77*8d67ca89SAndroid Build Coastguard Worker typedef int16_t       int_least16_t;
78*8d67ca89SAndroid Build Coastguard Worker typedef uint16_t      uint_least16_t;
79*8d67ca89SAndroid Build Coastguard Worker 
80*8d67ca89SAndroid Build Coastguard Worker typedef int32_t       int_least32_t;
81*8d67ca89SAndroid Build Coastguard Worker typedef uint32_t      uint_least32_t;
82*8d67ca89SAndroid Build Coastguard Worker 
83*8d67ca89SAndroid Build Coastguard Worker typedef int64_t       int_least64_t;
84*8d67ca89SAndroid Build Coastguard Worker typedef uint64_t      uint_least64_t;
85*8d67ca89SAndroid Build Coastguard Worker 
86*8d67ca89SAndroid Build Coastguard Worker typedef int8_t        int_fast8_t;
87*8d67ca89SAndroid Build Coastguard Worker typedef uint8_t       uint_fast8_t;
88*8d67ca89SAndroid Build Coastguard Worker 
89*8d67ca89SAndroid Build Coastguard Worker typedef int64_t       int_fast64_t;
90*8d67ca89SAndroid Build Coastguard Worker typedef uint64_t      uint_fast64_t;
91*8d67ca89SAndroid Build Coastguard Worker 
92*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
93*8d67ca89SAndroid Build Coastguard Worker typedef int64_t       int_fast16_t;
94*8d67ca89SAndroid Build Coastguard Worker typedef uint64_t      uint_fast16_t;
95*8d67ca89SAndroid Build Coastguard Worker typedef int64_t       int_fast32_t;
96*8d67ca89SAndroid Build Coastguard Worker typedef uint64_t      uint_fast32_t;
97*8d67ca89SAndroid Build Coastguard Worker #else
98*8d67ca89SAndroid Build Coastguard Worker typedef int32_t       int_fast16_t;
99*8d67ca89SAndroid Build Coastguard Worker typedef uint32_t      uint_fast16_t;
100*8d67ca89SAndroid Build Coastguard Worker typedef int32_t       int_fast32_t;
101*8d67ca89SAndroid Build Coastguard Worker typedef uint32_t      uint_fast32_t;
102*8d67ca89SAndroid Build Coastguard Worker #endif
103*8d67ca89SAndroid Build Coastguard Worker 
104*8d67ca89SAndroid Build Coastguard Worker typedef uint64_t      uintmax_t;
105*8d67ca89SAndroid Build Coastguard Worker typedef int64_t       intmax_t;
106*8d67ca89SAndroid Build Coastguard Worker 
107*8d67ca89SAndroid Build Coastguard Worker /* Keep the kernel from trying to define these types... */
108*8d67ca89SAndroid Build Coastguard Worker #define __BIT_TYPES_DEFINED__
109*8d67ca89SAndroid Build Coastguard Worker 
110*8d67ca89SAndroid Build Coastguard Worker #define INT8_C(c)         c
111*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST8_C(c)   INT8_C(c)
112*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST8_C(c)    INT8_C(c)
113*8d67ca89SAndroid Build Coastguard Worker 
114*8d67ca89SAndroid Build Coastguard Worker #define UINT8_C(c)        c
115*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST8_C(c)  UINT8_C(c)
116*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST8_C(c)   UINT8_C(c)
117*8d67ca89SAndroid Build Coastguard Worker 
118*8d67ca89SAndroid Build Coastguard Worker #define INT16_C(c)        c
119*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST16_C(c)  INT16_C(c)
120*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST16_C(c)   INT32_C(c)
121*8d67ca89SAndroid Build Coastguard Worker 
122*8d67ca89SAndroid Build Coastguard Worker #define UINT16_C(c)       c
123*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST16_C(c) UINT16_C(c)
124*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST16_C(c)  UINT32_C(c)
125*8d67ca89SAndroid Build Coastguard Worker #define INT32_C(c)        c
126*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST32_C(c)  INT32_C(c)
127*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST32_C(c)   INT32_C(c)
128*8d67ca89SAndroid Build Coastguard Worker 
129*8d67ca89SAndroid Build Coastguard Worker #define UINT32_C(c)       c ## U
130*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST32_C(c) UINT32_C(c)
131*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST32_C(c)  UINT32_C(c)
132*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST64_C(c)  INT64_C(c)
133*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST64_C(c)   INT64_C(c)
134*8d67ca89SAndroid Build Coastguard Worker 
135*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST64_C(c) UINT64_C(c)
136*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST64_C(c)  UINT64_C(c)
137*8d67ca89SAndroid Build Coastguard Worker 
138*8d67ca89SAndroid Build Coastguard Worker #define INTMAX_C(c)       INT64_C(c)
139*8d67ca89SAndroid Build Coastguard Worker #define UINTMAX_C(c)      UINT64_C(c)
140*8d67ca89SAndroid Build Coastguard Worker 
141*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
142*8d67ca89SAndroid Build Coastguard Worker #  define INT64_C(c)      c ## L
143*8d67ca89SAndroid Build Coastguard Worker #  define UINT64_C(c)     c ## UL
144*8d67ca89SAndroid Build Coastguard Worker #  define INTPTR_C(c)     INT64_C(c)
145*8d67ca89SAndroid Build Coastguard Worker #  define UINTPTR_C(c)    UINT64_C(c)
146*8d67ca89SAndroid Build Coastguard Worker #  define PTRDIFF_C(c)    INT64_C(c)
147*8d67ca89SAndroid Build Coastguard Worker #else
148*8d67ca89SAndroid Build Coastguard Worker #  define INT64_C(c)      c ## LL
149*8d67ca89SAndroid Build Coastguard Worker #  define UINT64_C(c)     c ## ULL
150*8d67ca89SAndroid Build Coastguard Worker #  define INTPTR_C(c)     INT32_C(c)
151*8d67ca89SAndroid Build Coastguard Worker #  define UINTPTR_C(c)    UINT32_C(c)
152*8d67ca89SAndroid Build Coastguard Worker #  define PTRDIFF_C(c)    INT32_C(c)
153*8d67ca89SAndroid Build Coastguard Worker #endif
154*8d67ca89SAndroid Build Coastguard Worker 
155*8d67ca89SAndroid Build Coastguard Worker #define INT8_MIN         (-128)
156*8d67ca89SAndroid Build Coastguard Worker #define INT8_MAX         (127)
157*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST8_MIN   INT8_MIN
158*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST8_MAX   INT8_MAX
159*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST8_MIN    INT8_MIN
160*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST8_MAX    INT8_MAX
161*8d67ca89SAndroid Build Coastguard Worker 
162*8d67ca89SAndroid Build Coastguard Worker #define UINT8_MAX        (255)
163*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST8_MAX  UINT8_MAX
164*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST8_MAX   UINT8_MAX
165*8d67ca89SAndroid Build Coastguard Worker 
166*8d67ca89SAndroid Build Coastguard Worker #define INT16_MIN        (-32768)
167*8d67ca89SAndroid Build Coastguard Worker #define INT16_MAX        (32767)
168*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST16_MIN  INT16_MIN
169*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST16_MAX  INT16_MAX
170*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST16_MIN   INT32_MIN
171*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST16_MAX   INT32_MAX
172*8d67ca89SAndroid Build Coastguard Worker 
173*8d67ca89SAndroid Build Coastguard Worker #define UINT16_MAX       (65535)
174*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST16_MAX UINT16_MAX
175*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST16_MAX  UINT32_MAX
176*8d67ca89SAndroid Build Coastguard Worker 
177*8d67ca89SAndroid Build Coastguard Worker #define INT32_MIN        (-2147483647-1)
178*8d67ca89SAndroid Build Coastguard Worker #define INT32_MAX        (2147483647)
179*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST32_MIN  INT32_MIN
180*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST32_MAX  INT32_MAX
181*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST32_MIN   INT32_MIN
182*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST32_MAX   INT32_MAX
183*8d67ca89SAndroid Build Coastguard Worker 
184*8d67ca89SAndroid Build Coastguard Worker #define UINT32_MAX       (4294967295U)
185*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST32_MAX UINT32_MAX
186*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST32_MAX  UINT32_MAX
187*8d67ca89SAndroid Build Coastguard Worker 
188*8d67ca89SAndroid Build Coastguard Worker #define INT64_MIN        (INT64_C(-9223372036854775807)-1)
189*8d67ca89SAndroid Build Coastguard Worker #define INT64_MAX        (INT64_C(9223372036854775807))
190*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST64_MIN  INT64_MIN
191*8d67ca89SAndroid Build Coastguard Worker #define INT_LEAST64_MAX  INT64_MAX
192*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST64_MIN   INT64_MIN
193*8d67ca89SAndroid Build Coastguard Worker #define INT_FAST64_MAX   INT64_MAX
194*8d67ca89SAndroid Build Coastguard Worker #define UINT64_MAX       (UINT64_C(18446744073709551615))
195*8d67ca89SAndroid Build Coastguard Worker 
196*8d67ca89SAndroid Build Coastguard Worker #define UINT_LEAST64_MAX UINT64_MAX
197*8d67ca89SAndroid Build Coastguard Worker #define UINT_FAST64_MAX  UINT64_MAX
198*8d67ca89SAndroid Build Coastguard Worker 
199*8d67ca89SAndroid Build Coastguard Worker #define INTMAX_MIN       INT64_MIN
200*8d67ca89SAndroid Build Coastguard Worker #define INTMAX_MAX       INT64_MAX
201*8d67ca89SAndroid Build Coastguard Worker #define UINTMAX_MAX      UINT64_MAX
202*8d67ca89SAndroid Build Coastguard Worker 
203*8d67ca89SAndroid Build Coastguard Worker #define SIG_ATOMIC_MAX   INT32_MAX
204*8d67ca89SAndroid Build Coastguard Worker #define SIG_ATOMIC_MIN   INT32_MIN
205*8d67ca89SAndroid Build Coastguard Worker 
206*8d67ca89SAndroid Build Coastguard Worker #if defined(__WINT_UNSIGNED__)
207*8d67ca89SAndroid Build Coastguard Worker #  define WINT_MAX       UINT32_MAX
208*8d67ca89SAndroid Build Coastguard Worker #  define WINT_MIN       0
209*8d67ca89SAndroid Build Coastguard Worker #else
210*8d67ca89SAndroid Build Coastguard Worker #  define WINT_MAX       INT32_MAX
211*8d67ca89SAndroid Build Coastguard Worker #  define WINT_MIN       INT32_MIN
212*8d67ca89SAndroid Build Coastguard Worker #endif
213*8d67ca89SAndroid Build Coastguard Worker 
214*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
215*8d67ca89SAndroid Build Coastguard Worker #  define INTPTR_MIN     INT64_MIN
216*8d67ca89SAndroid Build Coastguard Worker #  define INTPTR_MAX     INT64_MAX
217*8d67ca89SAndroid Build Coastguard Worker #  define UINTPTR_MAX    UINT64_MAX
218*8d67ca89SAndroid Build Coastguard Worker #  define PTRDIFF_MIN    INT64_MIN
219*8d67ca89SAndroid Build Coastguard Worker #  define PTRDIFF_MAX    INT64_MAX
220*8d67ca89SAndroid Build Coastguard Worker #  define SIZE_MAX       UINT64_MAX
221*8d67ca89SAndroid Build Coastguard Worker #else
222*8d67ca89SAndroid Build Coastguard Worker #  define INTPTR_MIN     INT32_MIN
223*8d67ca89SAndroid Build Coastguard Worker #  define INTPTR_MAX     INT32_MAX
224*8d67ca89SAndroid Build Coastguard Worker #  define UINTPTR_MAX    UINT32_MAX
225*8d67ca89SAndroid Build Coastguard Worker #  define PTRDIFF_MIN    INT32_MIN
226*8d67ca89SAndroid Build Coastguard Worker #  define PTRDIFF_MAX    INT32_MAX
227*8d67ca89SAndroid Build Coastguard Worker #  define SIZE_MAX       UINT32_MAX
228*8d67ca89SAndroid Build Coastguard Worker #endif
229*8d67ca89SAndroid Build Coastguard Worker 
230*8d67ca89SAndroid Build Coastguard Worker #endif /* _STDINT_H */
231