VR-Vantage 3.0 API Documentation
Home
Modules
Namespaces
Classes
Files
Libraries
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
rapidjson
msinttypes
stdint.h
Go to the documentation of this file.
1
// ISO C9x compliant stdint.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
// The above software in this distribution may have been modified by
34
// THL A29 Limited ("Tencent Modifications").
35
// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
36
37
#ifndef _MSC_VER // [
38
#error "Use this header only with Microsoft Visual C++ compilers!"
39
#endif // _MSC_VER ]
40
41
#ifndef _MSC_STDINT_H_ // [
42
#define _MSC_STDINT_H_
43
44
#if _MSC_VER > 1000
45
#pragma once
46
#endif
47
48
// miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010.
49
#if _MSC_VER >= 1600 // [
50
#include <
stdint.h
>
51
52
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
53
54
#undef INT8_C
55
#undef INT16_C
56
#undef INT32_C
57
#undef INT64_C
58
#undef UINT8_C
59
#undef UINT16_C
60
#undef UINT32_C
61
#undef UINT64_C
62
63
// 7.18.4.1 Macros for minimum-width integer constants
64
65
#define INT8_C(val) val##i8
66
#define INT16_C(val) val##i16
67
#define INT32_C(val) val##i32
68
#define INT64_C(val) val##i64
69
70
#define UINT8_C(val) val##ui8
71
#define UINT16_C(val) val##ui16
72
#define UINT32_C(val) val##ui32
73
#define UINT64_C(val) val##ui64
74
75
// 7.18.4.2 Macros for greatest-width integer constants
76
// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
77
// Check out Issue 9 for the details.
78
#ifndef INTMAX_C // [
79
# define INTMAX_C INT64_C
80
#endif // INTMAX_C ]
81
#ifndef UINTMAX_C // [
82
# define UINTMAX_C UINT64_C
83
#endif // UINTMAX_C ]
84
85
#endif // __STDC_CONSTANT_MACROS ]
86
87
#else // ] _MSC_VER >= 1700 [
88
89
#include <limits.h>
90
91
// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
92
// compiling for ARM we have to wrap <wchar.h> include with 'extern "C++" {}'
93
// or compiler would give many errors like this:
94
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
95
#if defined(__cplusplus) && !defined(_M_ARM)
96
extern
"C"
{
97
#endif
98
# include <wchar.h>
99
#if defined(__cplusplus) && !defined(_M_ARM)
100
}
101
#endif
102
103
// Define _W64 macros to mark types changing their size, like intptr_t.
104
#ifndef _W64
105
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
106
# define _W64 __w64
107
# else
108
# define _W64
109
# endif
110
#endif
111
112
113
// 7.18.1 Integer types
114
115
// 7.18.1.1 Exact-width integer types
116
117
// Visual Studio 6 and Embedded Visual C++ 4 doesn't
118
// realize that, e.g. char has the same size as __int8
119
// so we give up on __intX for them.
120
#if (_MSC_VER < 1300)
121
typedef
signed
char
int8_t
;
122
typedef
signed
short
int16_t
;
123
typedef
signed
int
int32_t
;
124
typedef
unsigned
char
uint8_t
;
125
typedef
unsigned
short
uint16_t
;
126
typedef
unsigned
int
uint32_t
;
127
#else
128
typedef
signed
__int8
int8_t
;
129
typedef
signed
__int16
int16_t
;
130
typedef
signed
__int32
int32_t
;
131
typedef
unsigned
__int8
uint8_t
;
132
typedef
unsigned
__int16
uint16_t
;
133
typedef
unsigned
__int32
uint32_t
;
134
#endif
135
typedef
signed
__int64
int64_t
;
136
typedef
unsigned
__int64
uint64_t
;
137
138
139
// 7.18.1.2 Minimum-width integer types
140
typedef
int8_t
int_least8_t
;
141
typedef
int16_t
int_least16_t
;
142
typedef
int32_t
int_least32_t
;
143
typedef
int64_t
int_least64_t
;
144
typedef
uint8_t
uint_least8_t
;
145
typedef
uint16_t
uint_least16_t
;
146
typedef
uint32_t
uint_least32_t
;
147
typedef
uint64_t
uint_least64_t
;
148
149
// 7.18.1.3 Fastest minimum-width integer types
150
typedef
int8_t
int_fast8_t
;
151
typedef
int16_t
int_fast16_t
;
152
typedef
int32_t
int_fast32_t
;
153
typedef
int64_t
int_fast64_t
;
154
typedef
uint8_t
uint_fast8_t
;
155
typedef
uint16_t
uint_fast16_t
;
156
typedef
uint32_t
uint_fast32_t
;
157
typedef
uint64_t
uint_fast64_t
;
158
159
// 7.18.1.4 Integer types capable of holding object pointers
160
#ifdef _WIN64 // [
161
typedef
signed
__int64
intptr_t
;
162
typedef
unsigned
__int64
uintptr_t
;
163
#else // _WIN64 ][
164
typedef
_W64
signed
int
intptr_t
;
165
typedef
_W64
unsigned
int
uintptr_t
;
166
#endif // _WIN64 ]
167
168
// 7.18.1.5 Greatest-width integer types
169
typedef
int64_t
intmax_t
;
170
typedef
uint64_t
uintmax_t
;
171
172
173
// 7.18.2 Limits of specified-width integer types
174
175
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
176
177
// 7.18.2.1 Limits of exact-width integer types
178
#define INT8_MIN ((int8_t)_I8_MIN)
179
#define INT8_MAX _I8_MAX
180
#define INT16_MIN ((int16_t)_I16_MIN)
181
#define INT16_MAX _I16_MAX
182
#define INT32_MIN ((int32_t)_I32_MIN)
183
#define INT32_MAX _I32_MAX
184
#define INT64_MIN ((int64_t)_I64_MIN)
185
#define INT64_MAX _I64_MAX
186
#define UINT8_MAX _UI8_MAX
187
#define UINT16_MAX _UI16_MAX
188
#define UINT32_MAX _UI32_MAX
189
#define UINT64_MAX _UI64_MAX
190
191
// 7.18.2.2 Limits of minimum-width integer types
192
#define INT_LEAST8_MIN INT8_MIN
193
#define INT_LEAST8_MAX INT8_MAX
194
#define INT_LEAST16_MIN INT16_MIN
195
#define INT_LEAST16_MAX INT16_MAX
196
#define INT_LEAST32_MIN INT32_MIN
197
#define INT_LEAST32_MAX INT32_MAX
198
#define INT_LEAST64_MIN INT64_MIN
199
#define INT_LEAST64_MAX INT64_MAX
200
#define UINT_LEAST8_MAX UINT8_MAX
201
#define UINT_LEAST16_MAX UINT16_MAX
202
#define UINT_LEAST32_MAX UINT32_MAX
203
#define UINT_LEAST64_MAX UINT64_MAX
204
205
// 7.18.2.3 Limits of fastest minimum-width integer types
206
#define INT_FAST8_MIN INT8_MIN
207
#define INT_FAST8_MAX INT8_MAX
208
#define INT_FAST16_MIN INT16_MIN
209
#define INT_FAST16_MAX INT16_MAX
210
#define INT_FAST32_MIN INT32_MIN
211
#define INT_FAST32_MAX INT32_MAX
212
#define INT_FAST64_MIN INT64_MIN
213
#define INT_FAST64_MAX INT64_MAX
214
#define UINT_FAST8_MAX UINT8_MAX
215
#define UINT_FAST16_MAX UINT16_MAX
216
#define UINT_FAST32_MAX UINT32_MAX
217
#define UINT_FAST64_MAX UINT64_MAX
218
219
// 7.18.2.4 Limits of integer types capable of holding object pointers
220
#ifdef _WIN64 // [
221
# define INTPTR_MIN INT64_MIN
222
# define INTPTR_MAX INT64_MAX
223
# define UINTPTR_MAX UINT64_MAX
224
#else // _WIN64 ][
225
# define INTPTR_MIN INT32_MIN
226
# define INTPTR_MAX INT32_MAX
227
# define UINTPTR_MAX UINT32_MAX
228
#endif // _WIN64 ]
229
230
// 7.18.2.5 Limits of greatest-width integer types
231
#define INTMAX_MIN INT64_MIN
232
#define INTMAX_MAX INT64_MAX
233
#define UINTMAX_MAX UINT64_MAX
234
235
// 7.18.3 Limits of other integer types
236
237
#ifdef _WIN64 // [
238
# define PTRDIFF_MIN _I64_MIN
239
# define PTRDIFF_MAX _I64_MAX
240
#else // _WIN64 ][
241
# define PTRDIFF_MIN _I32_MIN
242
# define PTRDIFF_MAX _I32_MAX
243
#endif // _WIN64 ]
244
245
#define SIG_ATOMIC_MIN INT_MIN
246
#define SIG_ATOMIC_MAX INT_MAX
247
248
#ifndef SIZE_MAX // [
249
# ifdef _WIN64 // [
250
# define SIZE_MAX _UI64_MAX
251
# else // _WIN64 ][
252
# define SIZE_MAX _UI32_MAX
253
# endif // _WIN64 ]
254
#endif // SIZE_MAX ]
255
256
// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
257
#ifndef WCHAR_MIN // [
258
# define WCHAR_MIN 0
259
#endif // WCHAR_MIN ]
260
#ifndef WCHAR_MAX // [
261
# define WCHAR_MAX _UI16_MAX
262
#endif // WCHAR_MAX ]
263
264
#define WINT_MIN 0
265
#define WINT_MAX _UI16_MAX
266
267
#endif // __STDC_LIMIT_MACROS ]
268
269
270
// 7.18.4 Limits of other integer types
271
272
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
273
274
// 7.18.4.1 Macros for minimum-width integer constants
275
276
#define INT8_C(val) val##i8
277
#define INT16_C(val) val##i16
278
#define INT32_C(val) val##i32
279
#define INT64_C(val) val##i64
280
281
#define UINT8_C(val) val##ui8
282
#define UINT16_C(val) val##ui16
283
#define UINT32_C(val) val##ui32
284
#define UINT64_C(val) val##ui64
285
286
// 7.18.4.2 Macros for greatest-width integer constants
287
// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
288
// Check out Issue 9 for the details.
289
#ifndef INTMAX_C // [
290
# define INTMAX_C INT64_C
291
#endif // INTMAX_C ]
292
#ifndef UINTMAX_C // [
293
# define UINTMAX_C UINT64_C
294
#endif // UINTMAX_C ]
295
296
#endif // __STDC_CONSTANT_MACROS ]
297
298
#endif // _MSC_VER >= 1600 ]
299
300
#endif // _MSC_STDINT_H_ ]
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (
www.mak.com
)