1 /*        $NetBSD: int_fmtio.h,v 1.10 2018/07/15 00:36:13 christos Exp $        */
2 
3 /*-
4  * Copyright (c) 2001 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Klaus Klein.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef _ARM_INT_FMTIO_H_
33 #define _ARM_INT_FMTIO_H_
34 
35 #ifdef __INTPTR_FMTd__
36 #include <sys/common_int_fmtio.h>
37 #else
38 /*
39  * 7.8.1 Macros for format specifiers
40  */
41 
42 /* fprintf macros for signed integers */
43 #define   PRId8               "d"       /* int8_t           */
44 #define   PRId16              "d"       /* int16_t                    */
45 #define   PRId32              "d"       /* int32_t                    */
46 #if defined(__clang__) || !defined(_LP64)
47 #define   PRId64              "lld"     /* int64_t                    */
48 #else
49 #define   PRId64              "ld"      /* int64_t                    */
50 #endif
51 #define   PRIdLEAST8          "d"       /* int_least8_t               */
52 #define   PRIdLEAST16         "d"       /* int_least16_t    */
53 #define   PRIdLEAST32         "d"       /* int_least32_t    */
54 #if defined(__clang__) || !defined(_LP64)
55 #define   PRIdLEAST64         "lld"     /* int_least64_t    */
56 #else
57 #define   PRIdLEAST64         "ld"      /* int_least64_t    */
58 #endif
59 #define   PRIdFAST8 "d"       /* int_fast8_t                */
60 #define   PRIdFAST16          "d"       /* int_fast16_t               */
61 #define   PRIdFAST32          "d"       /* int_fast32_t               */
62 #if defined(__clang__) || !defined(_LP64)
63 #define   PRIdFAST64          "lld"     /* int_fast64_t               */
64 #define   PRIdMAX             "lld"     /* intmax_t                   */
65 #else
66 #define   PRIdFAST64          "ld"      /* int_fast64_t               */
67 #define   PRIdMAX             "ld"      /* intmax_t                   */
68 #endif
69 #define   PRIdPTR             "ld"      /* intptr_t                   */
70 
71 #define   PRIi8               "i"       /* int8_t           */
72 #define   PRIi16              "i"       /* int16_t                    */
73 #define   PRIi32              "i"       /* int32_t                    */
74 #if defined(__clang__) || !defined(_LP64)
75 #define   PRIi64              "lli"     /* int64_t                    */
76 #else
77 #define   PRIi64              "li"      /* int64_t                    */
78 #endif
79 #define   PRIiLEAST8          "i"       /* int_least8_t               */
80 #define   PRIiLEAST16         "i"       /* int_least16_t    */
81 #define   PRIiLEAST32         "i"       /* int_least32_t    */
82 #if defined(__clang__) || !defined(_LP64)
83 #define   PRIiLEAST64         "lli"     /* int_least64_t    */
84 #else
85 #define   PRIiLEAST64         "li"      /* int_least64_t    */
86 #endif
87 #define   PRIiFAST8 "i"       /* int_fast8_t                */
88 #define   PRIiFAST16          "i"       /* int_fast16_t               */
89 #define   PRIiFAST32          "i"       /* int_fast32_t               */
90 #if defined(__clang__) || !defined(_LP64)
91 #define   PRIiFAST64          "lli"     /* int_fast64_t               */
92 #define   PRIiMAX             "lli"     /* intmax_t                   */
93 #else
94 #define   PRIiFAST64          "li"      /* int_fast64_t               */
95 #define   PRIiMAX             "li"      /* intmax_t                   */
96 #endif
97 #define   PRIiPTR             "li"      /* intptr_t                   */
98 
99 /* fprintf macros for unsigned integers */
100 
101 #define   PRIo8               "o"       /* uint8_t                    */
102 #define   PRIo16              "o"       /* uint16_t                   */
103 #define   PRIo32              "o"       /* uint32_t                   */
104 #if defined(__clang__) || !defined(_LP64)
105 #define   PRIo64              "llo"     /* uint64_t                   */
106 #else
107 #define   PRIo64              "lo"      /* uint64_t                   */
108 #endif
109 #define   PRIoLEAST8          "o"       /* uint_least8_t    */
110 #define   PRIoLEAST16         "o"       /* uint_least16_t   */
111 #define   PRIoLEAST32         "o"       /* uint_least32_t   */
112 #if defined(__clang__) || !defined(_LP64)
113 #define   PRIoLEAST64         "llo"     /* uint_least64_t   */
114 #else
115 #define   PRIoLEAST64         "lo"      /* uint_least64_t   */
116 #endif
117 #define   PRIoFAST8 "o"       /* uint_fast8_t               */
118 #define   PRIoFAST16          "o"       /* uint_fast16_t    */
119 #define   PRIoFAST32          "o"       /* uint_fast32_t    */
120 #if defined(__clang__) || !defined(_LP64)
121 #define   PRIoFAST64          "llo"     /* uint_fast64_t    */
122 #define   PRIoMAX             "llo"     /* uintmax_t                  */
123 #else
124 #define   PRIoFAST64          "lo"      /* uint_fast64_t    */
125 #define   PRIoMAX             "lo"      /* uintmax_t                  */
126 #endif
127 #define   PRIoPTR             "lo"      /* uintptr_t                  */
128 
129 #define   PRIu8               "u"       /* uint8_t                    */
130 #define   PRIu16              "u"       /* uint16_t                   */
131 #define   PRIu32              "u"       /* uint32_t                   */
132 #if defined(__clang__) || !defined(_LP64)
133 #define   PRIu64              "llu"     /* uint64_t                   */
134 #else
135 #define   PRIu64              "lu"      /* uint64_t                   */
136 #endif
137 #define   PRIuLEAST8          "u"       /* uint_least8_t    */
138 #define   PRIuLEAST16         "u"       /* uint_least16_t   */
139 #define   PRIuLEAST32         "u"       /* uint_least32_t   */
140 #if defined(__clang__) || !defined(_LP64)
141 #define   PRIuLEAST64         "llu"     /* uint_least64_t   */
142 #else
143 #define   PRIuLEAST64         "lu"      /* uint_least64_t   */
144 #endif
145 #define   PRIuFAST8 "u"       /* uint_fast8_t               */
146 #define   PRIuFAST16          "u"       /* uint_fast16_t    */
147 #define   PRIuFAST32          "u"       /* uint_fast32_t    */
148 #if defined(__clang__) || !defined(_LP64)
149 #define   PRIuFAST64          "llu"     /* uint_fast64_t    */
150 #define   PRIuMAX             "llu"     /* uintmax_t                  */
151 #else
152 #define   PRIuFAST64          "lu"      /* uint_fast64_t    */
153 #define   PRIuMAX             "lu"      /* uintmax_t                  */
154 #endif
155 #define   PRIuPTR             "lu"      /* uintptr_t                  */
156 
157 #define   PRIx8               "x"       /* uint8_t                    */
158 #define   PRIx16              "x"       /* uint16_t                   */
159 #define   PRIx32              "x"       /* uint32_t                   */
160 #if defined(__clang__) || !defined(_LP64)
161 #define   PRIx64              "llx"     /* uint64_t                   */
162 #else
163 #define   PRIx64              "lx"      /* uint64_t                   */
164 #endif
165 #define   PRIxLEAST8          "x"       /* uint_least8_t    */
166 #define   PRIxLEAST16         "x"       /* uint_least16_t   */
167 #define   PRIxLEAST32         "x"       /* uint_least32_t   */
168 #if defined(__clang__) || !defined(_LP64)
169 #define   PRIxLEAST64         "llx"     /* uint_least64_t   */
170 #else
171 #define   PRIxLEAST64         "lx"      /* uint_least64_t   */
172 #endif
173 #define   PRIxFAST8 "x"       /* uint_fast8_t               */
174 #define   PRIxFAST16          "x"       /* uint_fast16_t    */
175 #define   PRIxFAST32          "x"       /* uint_fast32_t    */
176 #if defined(__clang__) || !defined(_LP64)
177 #define   PRIxFAST64          "llx"     /* uint_fast64_t    */
178 #define   PRIxMAX             "llx"     /* uintmax_t                  */
179 #else
180 #define   PRIxFAST64          "lx"      /* uint_fast64_t    */
181 #define   PRIxMAX             "lx"      /* uintmax_t                  */
182 #endif
183 #define   PRIxPTR             "lx"      /* uintptr_t                  */
184 
185 #define   PRIX8               "X"       /* uint8_t                    */
186 #define   PRIX16              "X"       /* uint16_t                   */
187 #define   PRIX32              "X"       /* uint32_t                   */
188 #if defined(__clang__) || !defined(_LP64)
189 #define   PRIX64              "llX"     /* uint64_t                   */
190 #else
191 #define   PRIX64              "lX"      /* uint64_t                   */
192 #endif
193 #define   PRIXLEAST8          "X"       /* uint_least8_t    */
194 #define   PRIXLEAST16         "X"       /* uint_least16_t   */
195 #define   PRIXLEAST32         "X"       /* uint_least32_t   */
196 #if defined(__clang__) || !defined(_LP64)
197 #define   PRIXLEAST64         "llX"     /* uint_least64_t   */
198 #else
199 #define   PRIXLEAST64         "lX"      /* uint_least64_t   */
200 #endif
201 #define   PRIXFAST8 "X"       /* uint_fast8_t               */
202 #define   PRIXFAST16          "X"       /* uint_fast16_t    */
203 #define   PRIXFAST32          "X"       /* uint_fast32_t    */
204 #if defined(__clang__) || !defined(_LP64)
205 #define   PRIXFAST64          "llX"     /* uint_fast64_t    */
206 #define   PRIXMAX             "llX"     /* uintmax_t                  */
207 #else
208 #define   PRIXFAST64          "lX"      /* uint_fast64_t    */
209 #define   PRIXMAX             "lX"      /* uintmax_t                  */
210 #endif
211 #define   PRIXPTR             "lX"      /* uintptr_t                  */
212 
213 /* fscanf macros for signed integers */
214 
215 #define   SCNd8               "hhd"     /* int8_t           */
216 #define   SCNd16              "hd"      /* int16_t                    */
217 #define   SCNd32              "d"       /* int32_t                    */
218 #if defined(__clang__) || !defined(_LP64)
219 #define   SCNd64              "lld"     /* int64_t                    */
220 #else
221 #define   SCNd64              "ld"      /* int64_t                    */
222 #endif
223 #define   SCNdLEAST8          "hhd"     /* int_least8_t               */
224 #define   SCNdLEAST16         "hd"      /* int_least16_t    */
225 #define   SCNdLEAST32         "d"       /* int_least32_t    */
226 #if defined(__clang__) || !defined(_LP64)
227 #define   SCNdLEAST64         "lld"     /* int_least64_t    */
228 #else
229 #define   SCNdLEAST64         "ld"      /* int_least64_t    */
230 #endif
231 #define   SCNdFAST8 "d"       /* int_fast8_t                */
232 #define   SCNdFAST16          "d"       /* int_fast16_t               */
233 #define   SCNdFAST32          "d"       /* int_fast32_t               */
234 #if defined(__clang__) || !defined(_LP64)
235 #define   SCNdFAST64          "lld"     /* int_fast64_t               */
236 #define   SCNdMAX             "lld"     /* intmax_t                   */
237 #else
238 #define   SCNdFAST64          "ld"      /* int_fast64_t               */
239 #define   SCNdMAX             "ld"      /* intmax_t                   */
240 #endif
241 #define   SCNdPTR             "ld"      /* intptr_t                   */
242 
243 #define   SCNi8               "hhi"     /* int8_t           */
244 #define   SCNi16              "hi"      /* int16_t                    */
245 #define   SCNi32              "i"       /* int32_t                    */
246 #if defined(__clang__) || !defined(_LP64)
247 #define   SCNi64              "lli"     /* int64_t                    */
248 #else
249 #define   SCNi64              "li"      /* int64_t                    */
250 #endif
251 #define   SCNiLEAST8          "hhi"     /* int_least8_t               */
252 #define   SCNiLEAST16         "hi"      /* int_least16_t    */
253 #define   SCNiLEAST32         "i"       /* int_least32_t    */
254 #if defined(__clang__) || !defined(_LP64)
255 #define   SCNiLEAST64         "lli"     /* int_least64_t    */
256 #else
257 #define   SCNiLEAST64         "li"      /* int_least64_t    */
258 #endif
259 #define   SCNiFAST8 "i"       /* int_fast8_t                */
260 #define   SCNiFAST16          "i"       /* int_fast16_t               */
261 #define   SCNiFAST32          "i"       /* int_fast32_t               */
262 #if defined(__clang__) || !defined(_LP64)
263 #define   SCNiFAST64          "lli"     /* int_fast64_t               */
264 #define   SCNiMAX             "lli"     /* intmax_t                   */
265 #else
266 #define   SCNiFAST64          "li"      /* int_fast64_t               */
267 #define   SCNiMAX             "li"      /* intmax_t                   */
268 #endif
269 #define   SCNiPTR             "li"      /* intptr_t                   */
270 
271 /* fscanf macros for unsigned integers */
272 
273 #define   SCNo8               "hho"     /* uint8_t                    */
274 #define   SCNo16              "ho"      /* uint16_t                   */
275 #define   SCNo32              "o"       /* uint32_t                   */
276 #if defined(__clang__) || !defined(_LP64)
277 #define   SCNo64              "llo"     /* uint64_t                   */
278 #else
279 #define   SCNo64              "lo"      /* uint64_t                   */
280 #endif
281 #define   SCNoLEAST8          "hho"     /* uint_least8_t    */
282 #define   SCNoLEAST16         "ho"      /* uint_least16_t   */
283 #define   SCNoLEAST32         "o"       /* uint_least32_t   */
284 #if defined(__clang__) || !defined(_LP64)
285 #define   SCNoLEAST64         "llo"     /* uint_least64_t   */
286 #else
287 #define   SCNoLEAST64         "lo"      /* uint_least64_t   */
288 #endif
289 #define   SCNoFAST8 "o"       /* uint_fast8_t               */
290 #define   SCNoFAST16          "o"       /* uint_fast16_t    */
291 #define   SCNoFAST32          "o"       /* uint_fast32_t    */
292 #if defined(__clang__) || !defined(_LP64)
293 #define   SCNoFAST64          "llo"     /* uint_fast64_t    */
294 #define   SCNoMAX             "llo"     /* uintmax_t                  */
295 #else
296 #define   SCNoFAST64          "lo"      /* uint_fast64_t    */
297 #define   SCNoMAX             "lo"      /* uintmax_t                  */
298 #endif
299 #define   SCNoPTR             "lo"      /* uintptr_t                  */
300 
301 #define   SCNu8               "hhu"     /* uint8_t                    */
302 #define   SCNu16              "hu"      /* uint16_t                   */
303 #define   SCNu32              "u"       /* uint32_t                   */
304 #if defined(__clang__) || !defined(_LP64)
305 #define   SCNu64              "llu"     /* uint64_t                   */
306 #else
307 #define   SCNu64              "lu"      /* uint64_t                   */
308 #endif
309 #define   SCNuLEAST8          "hhu"     /* uint_least8_t    */
310 #define   SCNuLEAST16         "hu"      /* uint_least16_t   */
311 #define   SCNuLEAST32         "u"       /* uint_least32_t   */
312 #if defined(__clang__) || !defined(_LP64)
313 #define   SCNuLEAST64         "llu"     /* uint_least64_t   */
314 #else
315 #define   SCNuLEAST64         "lu"      /* uint_least64_t   */
316 #endif
317 #define   SCNuFAST8 "u"       /* uint_fast8_t               */
318 #define   SCNuFAST16          "u"       /* uint_fast16_t    */
319 #define   SCNuFAST32          "u"       /* uint_fast32_t    */
320 #if defined(__clang__) || !defined(_LP64)
321 #define   SCNuFAST64          "llu"     /* uint_fast64_t    */
322 #define   SCNuMAX             "llu"     /* uintmax_t                  */
323 #else
324 #define   SCNuFAST64          "lu"      /* uint_fast64_t    */
325 #define   SCNuMAX             "lu"      /* uintmax_t                  */
326 #endif
327 #define   SCNuPTR             "lu"      /* uintptr_t                  */
328 
329 #define   SCNx8               "hhx"     /* uint8_t                    */
330 #define   SCNx16              "hx"      /* uint16_t                   */
331 #define   SCNx32              "x"       /* uint32_t                   */
332 #if defined(__clang__) || !defined(_LP64)
333 #define   SCNx64              "llx"     /* uint64_t                   */
334 #else
335 #define   SCNx64              "lx"      /* uint64_t                   */
336 #endif
337 #define   SCNxLEAST8          "hhx"     /* uint_least8_t    */
338 #define   SCNxLEAST16         "hx"      /* uint_least16_t   */
339 #define   SCNxLEAST32         "x"       /* uint_least32_t   */
340 #if defined(__clang__) || !defined(_LP64)
341 #define   SCNxLEAST64         "llx"     /* uint_least64_t   */
342 #else
343 #define   SCNxLEAST64         "lx"      /* uint_least64_t   */
344 #endif
345 #define   SCNxFAST8 "x"       /* uint_fast8_t               */
346 #define   SCNxFAST16          "x"       /* uint_fast16_t    */
347 #define   SCNxFAST32          "x"       /* uint_fast32_t    */
348 #if defined(__clang__) || !defined(_LP64)
349 #define   SCNxFAST64          "llx"     /* uint_fast64_t    */
350 #define   SCNxMAX             "llx"     /* uintmax_t                  */
351 #else
352 #define   SCNxFAST64          "lx"      /* uint_fast64_t    */
353 #define   SCNxMAX             "lx"      /* uintmax_t                  */
354 #endif
355 #define   SCNxPTR             "lx"      /* uintptr_t                  */
356 
357 #endif /* !__INTPTR_FMTd__ */
358 
359 #endif /* !_ARM_INT_FMTIO_H_ */
360