]> git.ipfire.org Git - thirdparty/u-boot.git/blame - include/inttypes.h
mcheck: let mcheck_abortfunc_t print the pointer
[thirdparty/u-boot.git] / include / inttypes.h
CommitLineData
bcb514ac
SG
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc.
4 *
5 * This file is taken from the GNU C Library v2.15, with the unimplemented
6 * functions removed and a few style fixes.
7 */
8
9/*
10 * ISO C99: 7.8 Format conversion of integer types <inttypes.h>
11 */
12
13#ifndef _INTTYPES_H
14#define _INTTYPES_H 1
15
16#include <linux/compiler.h>
17
18/* Get a definition for wchar_t. But we must not define wchar_t itself. */
19#ifndef ____gwchar_t_defined
20# ifdef __cplusplus
21# define __gwchar_t wchar_t
22# elif defined __WCHAR_TYPE__
23typedef __WCHAR_TYPE__ __gwchar_t;
24# else
25# define __need_wchar_t
26# include <linux/stddef.h>
27typedef wchar_t __gwchar_t;
28# endif
29# define ____gwchar_t_defined 1
30#endif
31
32/*
33 * The ISO C99 standard specifies that these macros must only be defined if
34 * explicitly requested
35 */
36#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
37
38/* linux/types.h always uses long long for 64-bit and long for uintptr_t */
39# define __PRI64_PREFIX "ll"
40# define __PRIPTR_PREFIX "l"
41
42/* Macros for printing format specifiers. */
43
44/* Decimal notation. */
45# define PRId8 "d"
46# define PRId16 "d"
47# define PRId32 "d"
48# define PRId64 __PRI64_PREFIX "d"
49
50# define PRIdLEAST8 "d"
51# define PRIdLEAST16 "d"
52# define PRIdLEAST32 "d"
53# define PRIdLEAST64 __PRI64_PREFIX "d"
54
55# define PRIdFAST8 "d"
56# define PRIdFAST16 __PRIPTR_PREFIX "d"
57# define PRIdFAST32 __PRIPTR_PREFIX "d"
58# define PRIdFAST64 __PRI64_PREFIX "d"
59
60# define PRIi8 "i"
61# define PRIi16 "i"
62# define PRIi32 "i"
63# define PRIi64 __PRI64_PREFIX "i"
64
65# define PRIiLEAST8 "i"
66# define PRIiLEAST16 "i"
67# define PRIiLEAST32 "i"
68# define PRIiLEAST64 __PRI64_PREFIX "i"
69
70# define PRIiFAST8 "i"
71# define PRIiFAST16 __PRIPTR_PREFIX "i"
72# define PRIiFAST32 __PRIPTR_PREFIX "i"
73# define PRIiFAST64 __PRI64_PREFIX "i"
74
75/* Octal notation. */
76# define PRIo8 "o"
77# define PRIo16 "o"
78# define PRIo32 "o"
79# define PRIo64 __PRI64_PREFIX "o"
80
81# define PRIoLEAST8 "o"
82# define PRIoLEAST16 "o"
83# define PRIoLEAST32 "o"
84# define PRIoLEAST64 __PRI64_PREFIX "o"
85
86# define PRIoFAST8 "o"
87# define PRIoFAST16 __PRIPTR_PREFIX "o"
88# define PRIoFAST32 __PRIPTR_PREFIX "o"
89# define PRIoFAST64 __PRI64_PREFIX "o"
90
91/* Unsigned integers. */
92# define PRIu8 "u"
93# define PRIu16 "u"
94# define PRIu32 "u"
95# define PRIu64 __PRI64_PREFIX "u"
96
97# define PRIuLEAST8 "u"
98# define PRIuLEAST16 "u"
99# define PRIuLEAST32 "u"
100# define PRIuLEAST64 __PRI64_PREFIX "u"
101
102# define PRIuFAST8 "u"
103# define PRIuFAST16 __PRIPTR_PREFIX "u"
104# define PRIuFAST32 __PRIPTR_PREFIX "u"
105# define PRIuFAST64 __PRI64_PREFIX "u"
106
107/* lowercase hexadecimal notation. */
108# define PRIx8 "x"
109# define PRIx16 "x"
110# define PRIx32 "x"
111# define PRIx64 __PRI64_PREFIX "x"
112
113# define PRIxLEAST8 "x"
114# define PRIxLEAST16 "x"
115# define PRIxLEAST32 "x"
116# define PRIxLEAST64 __PRI64_PREFIX "x"
117
118# define PRIxFAST8 "x"
119# define PRIxFAST16 __PRIPTR_PREFIX "x"
120# define PRIxFAST32 __PRIPTR_PREFIX "x"
121# define PRIxFAST64 __PRI64_PREFIX "x"
122
123/* UPPERCASE hexadecimal notation. */
124# define PRIX8 "X"
125# define PRIX16 "X"
126# define PRIX32 "X"
127# define PRIX64 __PRI64_PREFIX "X"
128
129# define PRIXLEAST8 "X"
130# define PRIXLEAST16 "X"
131# define PRIXLEAST32 "X"
132# define PRIXLEAST64 __PRI64_PREFIX "X"
133
134# define PRIXFAST8 "X"
135# define PRIXFAST16 __PRIPTR_PREFIX "X"
136# define PRIXFAST32 __PRIPTR_PREFIX "X"
137# define PRIXFAST64 __PRI64_PREFIX "X"
138
139/* Macros for printing `intmax_t' and `uintmax_t'. */
140# define PRIdMAX __PRI64_PREFIX "d"
141# define PRIiMAX __PRI64_PREFIX "i"
142# define PRIoMAX __PRI64_PREFIX "o"
143# define PRIuMAX __PRI64_PREFIX "u"
144# define PRIxMAX __PRI64_PREFIX "x"
145# define PRIXMAX __PRI64_PREFIX "X"
146
147/* Macros for printing `intptr_t' and `uintptr_t'. */
148# define PRIdPTR __PRIPTR_PREFIX "d"
149# define PRIiPTR __PRIPTR_PREFIX "i"
150# define PRIoPTR __PRIPTR_PREFIX "o"
151# define PRIuPTR __PRIPTR_PREFIX "u"
152# define PRIxPTR __PRIPTR_PREFIX "x"
153# define PRIXPTR __PRIPTR_PREFIX "X"
154
155/* Macros for scanning format specifiers. */
156
157/* Signed decimal notation. */
158# define SCNd8 "hhd"
159# define SCNd16 "hd"
160# define SCNd32 "d"
161# define SCNd64 __PRI64_PREFIX "d"
162
163# define SCNdLEAST8 "hhd"
164# define SCNdLEAST16 "hd"
165# define SCNdLEAST32 "d"
166# define SCNdLEAST64 __PRI64_PREFIX "d"
167
168# define SCNdFAST8 "hhd"
169# define SCNdFAST16 __PRIPTR_PREFIX "d"
170# define SCNdFAST32 __PRIPTR_PREFIX "d"
171# define SCNdFAST64 __PRI64_PREFIX "d"
172
173/* Signed decimal notation. */
174# define SCNi8 "hhi"
175# define SCNi16 "hi"
176# define SCNi32 "i"
177# define SCNi64 __PRI64_PREFIX "i"
178
179# define SCNiLEAST8 "hhi"
180# define SCNiLEAST16 "hi"
181# define SCNiLEAST32 "i"
182# define SCNiLEAST64 __PRI64_PREFIX "i"
183
184# define SCNiFAST8 "hhi"
185# define SCNiFAST16 __PRIPTR_PREFIX "i"
186# define SCNiFAST32 __PRIPTR_PREFIX "i"
187# define SCNiFAST64 __PRI64_PREFIX "i"
188
189/* Unsigned decimal notation. */
190# define SCNu8 "hhu"
191# define SCNu16 "hu"
192# define SCNu32 "u"
193# define SCNu64 __PRI64_PREFIX "u"
194
195# define SCNuLEAST8 "hhu"
196# define SCNuLEAST16 "hu"
197# define SCNuLEAST32 "u"
198# define SCNuLEAST64 __PRI64_PREFIX "u"
199
200# define SCNuFAST8 "hhu"
201# define SCNuFAST16 __PRIPTR_PREFIX "u"
202# define SCNuFAST32 __PRIPTR_PREFIX "u"
203# define SCNuFAST64 __PRI64_PREFIX "u"
204
205/* Octal notation. */
206# define SCNo8 "hho"
207# define SCNo16 "ho"
208# define SCNo32 "o"
209# define SCNo64 __PRI64_PREFIX "o"
210
211# define SCNoLEAST8 "hho"
212# define SCNoLEAST16 "ho"
213# define SCNoLEAST32 "o"
214# define SCNoLEAST64 __PRI64_PREFIX "o"
215
216# define SCNoFAST8 "hho"
217# define SCNoFAST16 __PRIPTR_PREFIX "o"
218# define SCNoFAST32 __PRIPTR_PREFIX "o"
219# define SCNoFAST64 __PRI64_PREFIX "o"
220
221/* Hexadecimal notation. */
222# define SCNx8 "hhx"
223# define SCNx16 "hx"
224# define SCNx32 "x"
225# define SCNx64 __PRI64_PREFIX "x"
226
227# define SCNxLEAST8 "hhx"
228# define SCNxLEAST16 "hx"
229# define SCNxLEAST32 "x"
230# define SCNxLEAST64 __PRI64_PREFIX "x"
231
232# define SCNxFAST8 "hhx"
233# define SCNxFAST16 __PRIPTR_PREFIX "x"
234# define SCNxFAST32 __PRIPTR_PREFIX "x"
235# define SCNxFAST64 __PRI64_PREFIX "x"
236
237/* Macros for scanning `intmax_t' and `uintmax_t'. */
238# define SCNdMAX __PRI64_PREFIX "d"
239# define SCNiMAX __PRI64_PREFIX "i"
240# define SCNoMAX __PRI64_PREFIX "o"
241# define SCNuMAX __PRI64_PREFIX "u"
242# define SCNxMAX __PRI64_PREFIX "x"
243
244/* Macros for scanning `intptr_t' and `uintptr_t'. */
245# define SCNdPTR __PRIPTR_PREFIX "d"
246# define SCNiPTR __PRIPTR_PREFIX "i"
247# define SCNoPTR __PRIPTR_PREFIX "o"
248# define SCNuPTR __PRIPTR_PREFIX "u"
249# define SCNxPTR __PRIPTR_PREFIX "x"
250
251#endif /* C++ && format macros */
252
253#if __WORDSIZE == 64
254
255/* We have to define the `uintmax_t' type using `ldiv_t'. */
256typedef struct {
257 long int quot; /* Quotient. */
258 long int rem; /* Remainder. */
259} imaxdiv_t;
260
261#else
262
263/* We have to define the `uintmax_t' type using `lldiv_t'. */
264typedef struct {
265 long long int quot; /* Quotient. */
266 long long int rem; /* Remainder. */
267} imaxdiv_t;
268
269#endif
270
271#endif /* inttypes.h */