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