1 /*        $NetBSD: common_int_fmtio.h,v 1.1 2014/07/25 21:43:13 joerg Exp $     */
2 
3 /*-
4  * Copyright (c) 2014 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Joerg Sonnenberger.
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 _SYS_COMMON_INT_FMTIO_H_
33 #define _SYS_COMMON_INT_FMTIO_H_
34 
35 #ifndef __INTPTR_FMTd__
36 #error Your compiler does not provide format string macros.
37 #endif
38 
39 /*
40  * 7.8.1 Macros for format specifiers
41  */
42 
43 /* fprintf macros for signed integers */
44 #define   PRId8               __INT8_FMTd__
45 #define   PRId16              __INT16_FMTd__
46 #define   PRId32              __INT32_FMTd__
47 #define   PRId64              __INT64_FMTd__
48 #define   PRIdLEAST8          __INT_LEAST8_FMTd__
49 #define   PRIdLEAST16         __INT_LEAST16_FMTd__
50 #define   PRIdLEAST32         __INT_LEAST32_FMTd__
51 #define   PRIdLEAST64         __INT_LEAST64_FMTd__
52 #define   PRIdFAST8 __INT_FAST8_FMTd__
53 #define   PRIdFAST16          __INT_FAST16_FMTd__
54 #define   PRIdFAST32          __INT_FAST32_FMTd__
55 #define   PRIdFAST64          __INT_FAST64_FMTd__
56 #define   PRIdMAX             __INTMAX_FMTd__
57 #define   PRIdPTR             __INTPTR_FMTd__
58 
59 #define   PRIi8               __INT8_FMTi__
60 #define   PRIi16              __INT16_FMTi__
61 #define   PRIi32              __INT32_FMTi__
62 #define   PRIi64              __INT64_FMTi__
63 #define   PRIiLEAST8          __INT_LEAST8_FMTi__
64 #define   PRIiLEAST16         __INT_LEAST16_FMTi__
65 #define   PRIiLEAST32         __INT_LEAST32_FMTi__
66 #define   PRIiLEAST64         __INT_LEAST64_FMTi__
67 #define   PRIiFAST8 __INT_FAST8_FMTi__
68 #define   PRIiFAST16          __INT_FAST16_FMTi__
69 #define   PRIiFAST32          __INT_FAST32_FMTi__
70 #define   PRIiFAST64          __INT_FAST64_FMTi__
71 #define   PRIiMAX             __INTMAX_FMTi__
72 #define   PRIiPTR             __INTPTR_FMTi__
73 
74 /* fprintf macros for unsigned integers */
75 
76 #define   PRIo8               __UINT8_FMTo__
77 #define   PRIo16              __UINT16_FMTo__
78 #define   PRIo32              __UINT32_FMTo__
79 #define   PRIo64              __UINT64_FMTo__
80 #define   PRIoLEAST8          __UINT_LEAST8_FMTo__
81 #define   PRIoLEAST16         __UINT_LEAST16_FMTo__
82 #define   PRIoLEAST32         __UINT_LEAST32_FMTo__
83 #define   PRIoLEAST64         __UINT_LEAST64_FMTo__
84 #define   PRIoFAST8 __UINT_FAST8_FMTo__
85 #define   PRIoFAST16          __UINT_FAST16_FMTo__
86 #define   PRIoFAST32          __UINT_FAST32_FMTo__
87 #define   PRIoFAST64          __UINT_FAST64_FMTo__
88 #define   PRIoMAX             __UINTMAX_FMTo__
89 #define   PRIoPTR             __UINTPTR_FMTo__
90 
91 #define   PRIu8               __UINT8_FMTu__
92 #define   PRIu16              __UINT16_FMTu__
93 #define   PRIu32              __UINT32_FMTu__
94 #define   PRIu64              __UINT64_FMTu__
95 #define   PRIuLEAST8          __UINT_LEAST8_FMTu__
96 #define   PRIuLEAST16         __UINT_LEAST16_FMTu__
97 #define   PRIuLEAST32         __UINT_LEAST32_FMTu__
98 #define   PRIuLEAST64         __UINT_LEAST64_FMTu__
99 #define   PRIuFAST8 __UINT_FAST8_FMTu__
100 #define   PRIuFAST16          __UINT_FAST16_FMTu__
101 #define   PRIuFAST32          __UINT_FAST32_FMTu__
102 #define   PRIuFAST64          __UINT_FAST64_FMTu__
103 #define   PRIuMAX             __UINTMAX_FMTu__
104 #define   PRIuPTR             __UINTPTR_FMTu__
105 
106 #define   PRIx8               __UINT8_FMTx__
107 #define   PRIx16              __UINT16_FMTx__
108 #define   PRIx32              __UINT32_FMTx__
109 #define   PRIx64              __UINT64_FMTx__
110 #define   PRIxLEAST8          __UINT_LEAST8_FMTx__
111 #define   PRIxLEAST16         __UINT_LEAST16_FMTx__
112 #define   PRIxLEAST32         __UINT_LEAST32_FMTx__
113 #define   PRIxLEAST64         __UINT_LEAST64_FMTx__
114 #define   PRIxFAST8 __UINT_FAST8_FMTx__
115 #define   PRIxFAST16          __UINT_FAST16_FMTx__
116 #define   PRIxFAST32          __UINT_FAST32_FMTx__
117 #define   PRIxFAST64          __UINT_FAST64_FMTx__
118 #define   PRIxMAX             __UINTMAX_FMTx__
119 #define   PRIxPTR             __UINTPTR_FMTx__
120 
121 #define   PRIX8               __UINT8_FMTX__
122 #define   PRIX16              __UINT16_FMTX__
123 #define   PRIX32              __UINT32_FMTX__
124 #define   PRIX64              __UINT64_FMTX__
125 #define   PRIXLEAST8          __UINT_LEAST8_FMTX__
126 #define   PRIXLEAST16         __UINT_LEAST16_FMTX__
127 #define   PRIXLEAST32         __UINT_LEAST32_FMTX__
128 #define   PRIXLEAST64         __UINT_LEAST64_FMTX__
129 #define   PRIXFAST8 __UINT_FAST8_FMTX__
130 #define   PRIXFAST16          __UINT_FAST16_FMTX__
131 #define   PRIXFAST32          __UINT_FAST32_FMTX__
132 #define   PRIXFAST64          __UINT_FAST64_FMTX__
133 #define   PRIXMAX             __UINTMAX_FMTX__
134 #define   PRIXPTR             __UINTPTR_FMTX__
135 
136 /* fscanf macros for signed integers */
137 
138 #define   SCNd8               __INT8_FMTd__
139 #define   SCNd16              __INT16_FMTd__
140 #define   SCNd32              __INT32_FMTd__
141 #define   SCNd64              __INT64_FMTd__
142 #define   SCNdLEAST8          __INT_LEAST8_FMTd__
143 #define   SCNdLEAST16         __INT_LEAST16_FMTd__
144 #define   SCNdLEAST32         __INT_LEAST32_FMTd__
145 #define   SCNdLEAST64         __INT_LEAST64_FMTd__
146 #define   SCNdFAST8 __INT_FAST8_FMTd__
147 #define   SCNdFAST16          __INT_FAST16_FMTd__
148 #define   SCNdFAST32          __INT_FAST32_FMTd__
149 #define   SCNdFAST64          __INT_FAST64_FMTd__
150 #define   SCNdMAX             __INTMAX_FMTd__
151 #define   SCNdPTR             __INTPTR_FMTd__
152 
153 #define   SCNi8               __INT8_FMTi__
154 #define   SCNi16              __INT16_FMTi__
155 #define   SCNi32              __INT32_FMTi__
156 #define   SCNi64              __INT64_FMTi__
157 #define   SCNiLEAST8          __INT_LEAST8_FMTi__
158 #define   SCNiLEAST16         __INT_LEAST16_FMTi__
159 #define   SCNiLEAST32         __INT_LEAST32_FMTi__
160 #define   SCNiLEAST64         __INT_LEAST64_FMTi__
161 #define   SCNiFAST8 __INT_FAST8_FMTi__
162 #define   SCNiFAST16          __INT_FAST16_FMTi__
163 #define   SCNiFAST32          __INT_FAST32_FMTi__
164 #define   SCNiFAST64          __INT_FAST64_FMTi__
165 #define   SCNiMAX             __INTMAX_FMTi__
166 #define   SCNiPTR             __INTPTR_FMTi__
167 
168 /* fscanf macros for unsigned integers */
169 
170 #define   SCNo8               __UINT8_FMTo__
171 #define   SCNo16              __UINT16_FMTo__
172 #define   SCNo32              __UINT32_FMTo__
173 #define   SCNo64              __UINT64_FMTo__
174 #define   SCNoLEAST8          __UINT_LEAST8_FMTo__
175 #define   SCNoLEAST16         __UINT_LEAST16_FMTo__
176 #define   SCNoLEAST32         __UINT_LEAST32_FMTo__
177 #define   SCNoLEAST64         __UINT_LEAST64_FMTo__
178 #define   SCNoFAST8 __UINT_FAST8_FMTo__
179 #define   SCNoFAST16          __UINT_FAST16_FMTo__
180 #define   SCNoFAST32          __UINT_FAST32_FMTo__
181 #define   SCNoFAST64          __UINT_FAST64_FMTo__
182 #define   SCNoMAX             __UINTMAX_FMTo__
183 #define   SCNoPTR             __UINTPTR_FMTo__
184 
185 #define   SCNu8               __UINT8_FMTu__
186 #define   SCNu16              __UINT16_FMTu__
187 #define   SCNu32              __UINT32_FMTu__
188 #define   SCNu64              __UINT64_FMTu__
189 #define   SCNuLEAST8          __UINT_LEAST8_FMTu__
190 #define   SCNuLEAST16         __UINT_LEAST16_FMTu__
191 #define   SCNuLEAST32         __UINT_LEAST32_FMTu__
192 #define   SCNuLEAST64         __UINT_LEAST64_FMTu__
193 #define   SCNuFAST8 __UINT_FAST8_FMTu__
194 #define   SCNuFAST16          __UINT_FAST16_FMTu__
195 #define   SCNuFAST32          __UINT_FAST32_FMTu__
196 #define   SCNuFAST64          __UINT_FAST64_FMTu__
197 #define   SCNuMAX             __UINTMAX_FMTu__
198 #define   SCNuPTR             __UINTPTR_FMTu__
199 
200 #define   SCNx8               __UINT8_FMTx__
201 #define   SCNx16              __UINT16_FMTx__
202 #define   SCNx32              __UINT32_FMTx__
203 #define   SCNx64              __UINT64_FMTx__
204 #define   SCNxLEAST8          __UINT_LEAST8_FMTx__
205 #define   SCNxLEAST16         __UINT_LEAST16_FMTx__
206 #define   SCNxLEAST32         __UINT_LEAST32_FMTx__
207 #define   SCNxLEAST64         __UINT_LEAST64_FMTx__
208 #define   SCNxFAST8 __UINT_FAST8_FMTx__
209 #define   SCNxFAST16          __UINT_FAST16_FMTx__
210 #define   SCNxFAST32          __UINT_FAST32_FMTx__
211 #define   SCNxFAST64          __UINT_FAST64_FMTx__
212 #define   SCNxMAX             __UINTMAX_FMTx__
213 #define   SCNxPTR             __UINTPTR_FMTx__
214 
215 #define   SCNX8               __UINT8_FMTX__
216 #define   SCNX16              __UINT16_FMTX__
217 #define   SCNX32              __UINT32_FMTX__
218 #define   SCNX64              __UINT64_FMTX__
219 #define   SCNXLEAST8          __UINT_LEAST8_FMTX__
220 #define   SCNXLEAST16         __UINT_LEAST16_FMTX__
221 #define   SCNXLEAST32         __UINT_LEAST32_FMTX__
222 #define   SCNXLEAST64         __UINT_LEAST64_FMTX__
223 #define   SCNXFAST8 __UINT_FAST8_FMTX__
224 #define   SCNXFAST16          __UINT_FAST16_FMTX__
225 #define   SCNXFAST32          __UINT_FAST32_FMTX__
226 #define   SCNXFAST64          __UINT_FAST64_FMTX__
227 #define   SCNXMAX             __UINTMAX_FMTX__
228 #define   SCNXPTR             __UINTPTR_FMTX__
229 
230 #endif /* _SYS_COMMON_INT_FMTIO_H_ */
231