reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
inttypes.h
Go to the documentation of this file.
1// ISO C9x compliant inttypes.h for Microsoft Visual Studio
2// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
3//
4// Copyright (c) 2006-2013 Alexander Chemeris
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are met:
8//
9// 1. Redistributions of source code must retain the above copyright notice,
10// this list of conditions and the following disclaimer.
11//
12// 2. Redistributions in binary form must reproduce the above copyright
13// notice, this list of conditions and the following disclaimer in the
14// documentation and/or other materials provided with the distribution.
15//
16// 3. Neither the name of the product nor the names of its contributors may
17// be used to endorse or promote products derived from this software
18// without specific prior written permission.
19//
20// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
21// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
23// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30//
32
33#ifndef _MSC_VER // [
34#error "Use this header only with Microsoft Visual C++ compilers!"
35#endif // _MSC_VER ]
36
37#ifndef _MSC_INTTYPES_H_ // [
38#define _MSC_INTTYPES_H_
39
40#if _MSC_VER > 1000
41#pragma once
42#endif
43
44#include "stdint.h"
45
46// 7.8 Format conversion of integer types
47
48typedef struct {
51} imaxdiv_t;
52
53// 7.8.1 Macros for format specifiers
54
55#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198
56
57// The fprintf macros for signed integers are:
58#define PRId8 "d"
59#define PRIi8 "i"
60#define PRIdLEAST8 "d"
61#define PRIiLEAST8 "i"
62#define PRIdFAST8 "d"
63#define PRIiFAST8 "i"
64
65#define PRId16 "hd"
66#define PRIi16 "hi"
67#define PRIdLEAST16 "hd"
68#define PRIiLEAST16 "hi"
69#define PRIdFAST16 "hd"
70#define PRIiFAST16 "hi"
71
72#define PRId32 "I32d"
73#define PRIi32 "I32i"
74#define PRIdLEAST32 "I32d"
75#define PRIiLEAST32 "I32i"
76#define PRIdFAST32 "I32d"
77#define PRIiFAST32 "I32i"
78
79#define PRId64 "I64d"
80#define PRIi64 "I64i"
81#define PRIdLEAST64 "I64d"
82#define PRIiLEAST64 "I64i"
83#define PRIdFAST64 "I64d"
84#define PRIiFAST64 "I64i"
85
86#define PRIdMAX "I64d"
87#define PRIiMAX "I64i"
88
89#define PRIdPTR "Id"
90#define PRIiPTR "Ii"
91
92// The fprintf macros for unsigned integers are:
93#define PRIo8 "o"
94#define PRIu8 "u"
95#define PRIx8 "x"
96#define PRIX8 "X"
97#define PRIoLEAST8 "o"
98#define PRIuLEAST8 "u"
99#define PRIxLEAST8 "x"
100#define PRIXLEAST8 "X"
101#define PRIoFAST8 "o"
102#define PRIuFAST8 "u"
103#define PRIxFAST8 "x"
104#define PRIXFAST8 "X"
105
106#define PRIo16 "ho"
107#define PRIu16 "hu"
108#define PRIx16 "hx"
109#define PRIX16 "hX"
110#define PRIoLEAST16 "ho"
111#define PRIuLEAST16 "hu"
112#define PRIxLEAST16 "hx"
113#define PRIXLEAST16 "hX"
114#define PRIoFAST16 "ho"
115#define PRIuFAST16 "hu"
116#define PRIxFAST16 "hx"
117#define PRIXFAST16 "hX"
118
119#define PRIo32 "I32o"
120#define PRIu32 "I32u"
121#define PRIx32 "I32x"
122#define PRIX32 "I32X"
123#define PRIoLEAST32 "I32o"
124#define PRIuLEAST32 "I32u"
125#define PRIxLEAST32 "I32x"
126#define PRIXLEAST32 "I32X"
127#define PRIoFAST32 "I32o"
128#define PRIuFAST32 "I32u"
129#define PRIxFAST32 "I32x"
130#define PRIXFAST32 "I32X"
131
132#define PRIo64 "I64o"
133#define PRIu64 "I64u"
134#define PRIx64 "I64x"
135#define PRIX64 "I64X"
136#define PRIoLEAST64 "I64o"
137#define PRIuLEAST64 "I64u"
138#define PRIxLEAST64 "I64x"
139#define PRIXLEAST64 "I64X"
140#define PRIoFAST64 "I64o"
141#define PRIuFAST64 "I64u"
142#define PRIxFAST64 "I64x"
143#define PRIXFAST64 "I64X"
144
145#define PRIoMAX "I64o"
146#define PRIuMAX "I64u"
147#define PRIxMAX "I64x"
148#define PRIXMAX "I64X"
149
150#define PRIoPTR "Io"
151#define PRIuPTR "Iu"
152#define PRIxPTR "Ix"
153#define PRIXPTR "IX"
154
155// The fscanf macros for signed integers are:
156#define SCNd8 "d"
157#define SCNi8 "i"
158#define SCNdLEAST8 "d"
159#define SCNiLEAST8 "i"
160#define SCNdFAST8 "d"
161#define SCNiFAST8 "i"
162
163#define SCNd16 "hd"
164#define SCNi16 "hi"
165#define SCNdLEAST16 "hd"
166#define SCNiLEAST16 "hi"
167#define SCNdFAST16 "hd"
168#define SCNiFAST16 "hi"
169
170#define SCNd32 "ld"
171#define SCNi32 "li"
172#define SCNdLEAST32 "ld"
173#define SCNiLEAST32 "li"
174#define SCNdFAST32 "ld"
175#define SCNiFAST32 "li"
176
177#define SCNd64 "I64d"
178#define SCNi64 "I64i"
179#define SCNdLEAST64 "I64d"
180#define SCNiLEAST64 "I64i"
181#define SCNdFAST64 "I64d"
182#define SCNiFAST64 "I64i"
183
184#define SCNdMAX "I64d"
185#define SCNiMAX "I64i"
186
187#ifdef _WIN64 // [
188# define SCNdPTR "I64d"
189# define SCNiPTR "I64i"
190#else // _WIN64 ][
191# define SCNdPTR "ld"
192# define SCNiPTR "li"
193#endif // _WIN64 ]
194
195// The fscanf macros for unsigned integers are:
196#define SCNo8 "o"
197#define SCNu8 "u"
198#define SCNx8 "x"
199#define SCNX8 "X"
200#define SCNoLEAST8 "o"
201#define SCNuLEAST8 "u"
202#define SCNxLEAST8 "x"
203#define SCNXLEAST8 "X"
204#define SCNoFAST8 "o"
205#define SCNuFAST8 "u"
206#define SCNxFAST8 "x"
207#define SCNXFAST8 "X"
208
209#define SCNo16 "ho"
210#define SCNu16 "hu"
211#define SCNx16 "hx"
212#define SCNX16 "hX"
213#define SCNoLEAST16 "ho"
214#define SCNuLEAST16 "hu"
215#define SCNxLEAST16 "hx"
216#define SCNXLEAST16 "hX"
217#define SCNoFAST16 "ho"
218#define SCNuFAST16 "hu"
219#define SCNxFAST16 "hx"
220#define SCNXFAST16 "hX"
221
222#define SCNo32 "lo"
223#define SCNu32 "lu"
224#define SCNx32 "lx"
225#define SCNX32 "lX"
226#define SCNoLEAST32 "lo"
227#define SCNuLEAST32 "lu"
228#define SCNxLEAST32 "lx"
229#define SCNXLEAST32 "lX"
230#define SCNoFAST32 "lo"
231#define SCNuFAST32 "lu"
232#define SCNxFAST32 "lx"
233#define SCNXFAST32 "lX"
234
235#define SCNo64 "I64o"
236#define SCNu64 "I64u"
237#define SCNx64 "I64x"
238#define SCNX64 "I64X"
239#define SCNoLEAST64 "I64o"
240#define SCNuLEAST64 "I64u"
241#define SCNxLEAST64 "I64x"
242#define SCNXLEAST64 "I64X"
243#define SCNoFAST64 "I64o"
244#define SCNuFAST64 "I64u"
245#define SCNxFAST64 "I64x"
246#define SCNXFAST64 "I64X"
247
248#define SCNoMAX "I64o"
249#define SCNuMAX "I64u"
250#define SCNxMAX "I64x"
251#define SCNXMAX "I64X"
252
253#ifdef _WIN64 // [
254# define SCNoPTR "I64o"
255# define SCNuPTR "I64u"
256# define SCNxPTR "I64x"
257# define SCNXPTR "I64X"
258#else // _WIN64 ][
259# define SCNoPTR "lo"
260# define SCNuPTR "lu"
261# define SCNxPTR "lx"
262# define SCNXPTR "lX"
263#endif // _WIN64 ]
264
265#endif // __STDC_FORMAT_MACROS ]
266
267// 7.8.2 Functions for greatest-width integer types
268
269// 7.8.2.1 The imaxabs function
270#define imaxabs _abs64
271
272// 7.8.2.2 The imaxdiv function
273
274// This is modified version of div() function from Microsoft's div.c found
275// in %MSVC.NET%\crt\src\div.c
276#ifdef STATIC_IMAXDIV // [
277static
278#else // STATIC_IMAXDIV ][
280#endif // STATIC_IMAXDIV ]
282{
284
286 result.rem = numer % denom;
287
289 // did division wrong; must fix up
290 ++result.quot;
291 result.rem -= denom;
292 }
293
294 return result;
295}
296
297// 7.8.2.3 The strtoimax and strtoumax functions
298#define strtoimax _strtoi64
299#define strtoumax _strtoui64
300
301// 7.8.2.4 The wcstoimax and wcstoumax functions
302#define wcstoimax _wcstoi64
303#define wcstoumax _wcstoui64
304
305
306#endif // _MSC_INTTYPES_H_ ]
_inline imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
Definition inttypes.h:281
int64_t intmax_t
Definition stdint.h:128
intmax_t rem
Definition inttypes.h:50
intmax_t quot
Definition inttypes.h:49
void list()
Definition userAdmin.cxx:66